728x90
반응형
Q6. 실습 2-8의 card_convr 함수를 수정하여 배열의 맨 앞쪽에 아랫자리가 아니라 윗자리를 저장하는 card_conv 함수를 작성하세요.
int card_conv(unsigned x, int n, char d[]);
코드)
#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) {
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 q6.c -o q6
sy@sy:~/algorithm/doit/chap02$ ./q6
10진수를 기수 변환합니다.
변환하는 음이 아닌 정수 : 59
어떤 진수로 변환할까요?(2-36) : 2
2진수로는111011입니다.
한 번 더 할까요?(1 --- 예 / 0 --- 아니오) : 0
배열 요소 모두 출력 참조)
728x90
반응형
'Algorithm > Do it' 카테고리의 다른 글
[자료구조와 함께 배우는 알고리즘 입문 - C언어 편] 2장 기본 자료구조 연습문제 Q8 답안 p.75 (0) | 2019.10.09 |
---|---|
[자료구조와 함께 배우는 알고리즘 입문 - C언어 편] 2장 기본 자료구조 연습문제 Q7 답안 p.75 (0) | 2019.10.09 |
[자료구조와 함께 배우는 알고리즘 입문 - C언어 편] 2장 기본 자료구조 연습문제 Q5 답안 p.75 (0) | 2019.10.09 |
[자료구조와 함께 배우는 알고리즘 입문 - C언어 편] 2장 기본 자료구조 연습문제 Q4 답안 p.75 (0) | 2019.10.09 |
[자료구조와 함께 배우는 알고리즘 입문 - C언어 편] 2장 기본 자료구조 연습문제 Q3 답안 p.75 (0) | 2019.10.09 |