Page 74 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 74
07 char cno[512]; /* 변환한 값의 각 자리의 숫자를 저장하는 문자 배열 */
08 int retry; /* 한 번 더? */
09 puts("10진수를 기수 변환합니다.");
10 do {
11 printf("변환하는 음이 아닌 정수 : ");
12 scanf("%u", &no);
13 do {
14 printf("어떤 진수로 변환할까요?(2-36) : ");
15 scanf("%d", &cd);
16 } while(cd < 2 || cd > 36);
17 dno = card_convr(no, cd, cno); /* no를 cd진수로 변환 */
18 printf("%d진수로는", cd);
19 for(i = dno - 1; i >= 0; i--) /* 윗자리부터 차례로 출력 */
20 printf("%c", cno[i]);
21 printf("입니다.\n");
22 printf("한 번 더 할까요?(1 … 예 / 0 … 아니오) : ");
23 scanf("%d", &retry);
24 } while(retry == 1);
25
26 return 0;
27 }
main 함수에서는 기수 변환을 대화식으로 합니다. card_convr 함수의 반환값을 대입하는
dno에는 변환한 후의 자릿수가 들어갑니다. 그리고 변환한 각 자리의 문자는 cno[0],
cno[1], …, cno[dno – 1]에 저장됩니다. 다만 card_convr 함수는 배열에 역순으로 저장됩
니다. 그러므로 변환 결과를 출력하는 부분(초록색 박스로 표시한 부분)은 배열 cno를 맨 끝부터
맨 앞까지 역순으로 출력합니다.
Q1 실습 2- 5는 키의 최댓값을 구하는 프로그램으로, 이 프로그램을 수정하여 키의 최솟값을
연습
문제 구하는 프로그램을 작성하세요. 최솟값을 구하는 과정은 아래와 같은 함수로 구현하세요.
int minof(const int a[], int n);
Q2 앞의 문제(실습 2-5)를 수정하여 키의 합계를 구하는 프로그램을 작성하세요. 합계를 구하
는 과정은 아래와 같은 함수로 구현하세요.
int sumof(const int a[], int n);
74 C 알고리즘