출력할 진법 선택 -> 8, 10, 16진수로 입력하면 출력 진법에 맞게 출력
8진수는 0표기법, 16진수는 0x표기법 사용
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX 100
int ten(char[], int);
int eight(char[], int);
int sixteen(char[], int);
int jinsu(char str[]);
int main(void)
{
int i, final;
char str[MAX] = {0,};
while(1)
{
printf("\n1.8진수2.10진수3.16진수4. 종료:____");
scanf("%d",&i);
switch(i)
{
case 1:
printf("\n정수를표현하는문자열을입력: ");
scanf("%s",&str);
final = jinsu(str);
printf("%s는8진수로%o 입니다. \n", str, final);
break;
case 2:
printf("\n정수를표현하는문자열을입력: ");
scanf("%s",&str);
final = jinsu(str);
printf("%s는10진수로%d 입니다. \n", str, final);
break;
case 3:
printf("\n정수를표현하는문자열을입력: ");
scanf("%s",&str);
final = jinsu(str);
printf("%s는16진수로%x 입니다. \n", str, final);
break;
case 4:
printf("\n프로그램을종료합니다. \n");
exit(0);
break;
default:
printf("메뉴에없음!! \n");
break;
}
}
return 0;
}
int jinsu(char str[])
{
int jinsu = 0, temp=0;
if(str[0] != '0')
{
jinsu =10;
temp = ten(str, jinsu);
}
else
{
if(str[1] == 'x' || str[1] == 'X')
{
jinsu = 16;
temp = sixteen(str, jinsu);
}
else
{
jinsu = 8;
temp = eight(str, jinsu);
}
}
return temp;
}
int ten(char str[], int jinsu)
{
int i=0, len=0, num=0;
int result[MAX] = {0,};
len = strlen(str);
for(i=0 ; i < len ; i++)
{
if(str[0] >'0' && str[i] <'9')
{
result[i] = str[i] - '0';
num = num * jinsu + result[i];
}
}
return num;
}
int eight(char str[], int jinsu)
{
int i=0, len=0, num=0;
int result[MAX] = {0,};
len = strlen(str);
for(i=1 ; i < len ; i++)
{
if(str[1] >'0' && str[i] <'8')
{
result[i] = str[i] - '0';
num = num * jinsu + result[i];
}
}
return num;
}
int sixteen(char str[], int jinsu)
{
int i=0, len=0, num=0;
int result[MAX] = {0,};
len = strlen(str);
for(i=2 ; i < len ; i++)
{
if(str[2]>'0' && str[i]<'10')
{
if(str[i]>='a' && str[i]<='f')
result[i] = str[i]-'a'+10;
else
result[i] = str[i] - '0';
num = num * jinsu + result[i];
}
}
return num;
}
'컴&프로그래밍 > C' 카테고리의 다른 글
팩토리얼 수 구하기 (재귀함수) (0) | 2014.10.24 |
---|---|
피라미드 별찍기 (0) | 2014.10.12 |
정수부분, 소수부분 2진수 변환 (0) | 2014.10.11 |
이진검색 (0) | 2014.10.11 |
파일 복사 하기 (0) | 2014.10.11 |
학생 정보 입력 받아 성적순으로 내림차순 정렬 출력 (1) | 2014.10.11 |
정수 입력하여 16진수 변환후 2씩 곱해가기 (0) | 2014.10.11 |
대소문자 바꿔서 출력 (0) | 2014.10.11 |
3n + 1 문제 (The 3n+1 Problem) (0) | 2014.10.11 |