1002 이 수 (20 분) 를 써 서 정수 n 을 읽 고 여러분 의 숫자의 합 을 계산 하 며 중국어 병 음 으로 합 친 모든 숫자 를 씁 니 다.
3957 단어 PAT 2 급 알고리즘
정수 읽 기 n. 그 숫자 들 의 합 을 계산 하고 중국어 병 음 으로 모든 숫자 를 작성 합 니 다.
입력 형식:
각 테스트 입력 은 테스트 용례 1 개 를 포함 하여 자연 수 를 제시 합 니 다. n 의 값.여기 서 보증 합 니 다. n ... 보다 작다 10100。
출력 형식:
한 줄 에 출력 n 숫자 를 합 친 모든 자리, 병 음 숫자 사이 에는 1 개의 빈 칸 이 있 지만 한 줄 의 마지막 병 음 숫자 뒤에 빈 칸 이 없습니다.
입력 예시:
1234567890987654321123456789
출력 예시:
yi san wu
방법 1
#include #define N 100 #define M 5 int main() { char numChar[10][5]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"}; char array[N]; int sum=0,i=0,j; int index[M]; for(i=0;i index[i]=-1; scanf("%s",array); i=0; while(array[i]!='\0') { sum+=array[i]-'0'; i++; } j=0; while(sum>0){ index[j]=sum%10; sum=sum/10; j++; } for(i=M-1;i>=0;i--) { if(index[i]!=-1) { if(i==0) printf("%s",numChar[index[i]]); else printf("%s ",numChar[index[i]]); } } return 0; }
방법 2 \ # include \ # include int main(void) { //파 트 1: 입력 숫자 한 자리 당 합 을 계산 합 니 다. int sum = 0; char ch; ch = getchar(); while (ch != '') { switch (ch) { case '1': sum += 1; break; case '2': sum += 2; break; case '3': sum += 3; break; case '4': sum += 4; break; case '5': sum += 5; break; case '6': sum += 6; break; case '7': sum += 7; break; case '8': sum += 8; break; case '9': sum += 9; break; default: sum += 0; break; } ch = getchar(); } //파 트 2: 난점: char 와 포인터 사용 //sum 은 각각 병 음 으로 번역 되 어 포인터 배열 에 저장 되 지만 이것 은 역순 입 니 다! char *result[100]; int digit_count = 0; while(sum != 0) { int digit = sum % 10; switch (digit) { case 0: result[digit_count] = "ling"; break; case 1: result[digit_count] = "yi"; break; case 2: result[digit_count] = "er"; break; case 3: result[digit_count] = "san"; break; case 4: result[digit_count] = "si"; break; case 5: result[digit_count] = "wu"; break; case 6: result[digit_count] = "liu"; break; case 7: result[digit_count] = "qi"; break; case 8: result[digit_count] = "ba"; break; case 9: result[digit_count] = "jiu"; break; default: break; } sum = sum / 10; digit_count++; } //역순 출력 포인터 배열 의 내용 은 빈 칸 을 추가 하고 마지막 병 음 뒤에 빈 칸 을 추가 하지 않도록 주의 하 십시오. char result_string[100] = ""; for (int i = digit_count - 1; i >= 0; i--) { if(i==0) strcat(result_string, result[0]); else { char p[10]; strcpy(p, result[i]); strcat(p, " "); strcat(result_string, p); } } printf("%s", result_string); return 0;} - - - - 저작권 성명: 본 고 는 CSDN 블 로 거들 인 '오 군 학생 정말 멋 져 요'의 오리지널 글 은 CC 4.0 BY - SA 저작권 협의 에 따라 원문 출처 링크 와 본 성명 을 첨부 하 시기 바 랍 니 다.https://blog.csdn.net/qq_36627158/article/details/104182932 - - - - - 저작권 성명: 본 고 는 CSDN 블 로 거 'hide on cloud' 입 니 다.의 오리지널 글 은 CC 4.0 BY - SA 저작권 협의 에 따라 원문 출처 링크 와 본 성명 을 첨부 하 시기 바 랍 니 다.https://blog.csdn.net/small_feiyu/article/details/65935964