728x90
반응형
Q7. 앞의 프로그램을 기초로 기수 변환 과정을 상세히 출력하는 프로그램을 작성하세요.
※ 그림 2-11, 그림 2-13에서는 나눗셈의 나머지를 몫의 오른쪽에 출력했지만 여기서는 나머지를 나누어지는 수의 오른쪽에 출력합니다.
코드)
#include <stdio.h>
#define swap(type, x, y) do{type t=x; x=y; y=t;} while(0)
int card_conv(unsigned x, int n, char d[]) {
char dchar[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int digits = 0;
int j=0;
if(x == 0) {
d[digits++] = dchar[0];
} else {
while(x) {
printf("%d| %d --- %d\n", n, x, dchar[x % n]);
puts(" +--------");
d[digits++] = dchar[x % n];
x /= n;
}
}
for(j; j<digits/2; j++) {
swap(int, d[j], d[digits-j-1]);
}
return digits;
}
int main(void) {
int i;
unsigned no;
int cd;
int dno;
char cno[512];
int retry;
puts("10진수를 기수 변환합니다.");
do {
printf("변환하는 음이 아닌 정수 : ");
scanf("%u", &no);
do {
printf("어떤 진수로 변환할까요?(2-36) : ");
scanf("%d", &cd);
} while(cd < 2 || cd > 36);
dno = card_conv(no, cd, cno);
printf("%d진수로는", cd);
for(i=0; i<dno; i++) {
printf("%c", cno[i]);
}
printf("입니다.\n");
printf("한 번 더 할까요?(1 --- 예 / 0 --- 아니오) : ");
scanf("%d", &retry);
} while(retry == 1);
return 0;
}
실행결과)
sy@sy:~/algorithm/doit/chap02$ gcc q7.c -o q7
sy@sy:~/algorithm/doit/chap02$ ./q7
10진수를 기수 변환합니다.
변환하는 음이 아닌 정수 : 58
어떤 진수로 변환할까요?(2-36) : 2
2| 58 --- 48
+--------
2| 29 --- 49
+--------
2| 14 --- 48
+--------
2| 7 --- 49
+--------
2| 3 --- 49
+--------
2| 1 --- 49
+--------
2진수로는111010입니다.
한 번 더 할까요?(1 --- 예 / 0 --- 아니오) : 0
728x90
반응형
'Algorithm > Do it' 카테고리의 다른 글
[자료구조와 함께 배우는 알고리즘 입문 - C언어 편] 2장 기본 자료구조 연습문제 Q9 답안 p.75 (0) | 2019.10.09 |
---|---|
[자료구조와 함께 배우는 알고리즘 입문 - C언어 편] 2장 기본 자료구조 연습문제 Q8 답안 p.75 (0) | 2019.10.09 |
[자료구조와 함께 배우는 알고리즘 입문 - C언어 편] 2장 기본 자료구조 연습문제 Q6 답안 p.75 (0) | 2019.10.09 |
[자료구조와 함께 배우는 알고리즘 입문 - C언어 편] 2장 기본 자료구조 연습문제 Q5 답안 p.75 (0) | 2019.10.09 |
[자료구조와 함께 배우는 알고리즘 입문 - C언어 편] 2장 기본 자료구조 연습문제 Q4 답안 p.75 (0) | 2019.10.09 |