PAT--乙级-1002
题目:
1002. 写出这个数 (20)
时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue
读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。
输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:1234567890987654321123456789输出样例:
yi san wu
解决代码:(汪汪)
1 #include <stdio.h> 2 3 int sum_String(int num); 4 5 int main(){ 6 char input_number[100]={0};//假设输入的数字的位数是100位 7 int sum = 0; 8 printf("\nPlease enter a number string (number <10^100)\n "); 9 scanf("%s",input_number);//以字符串的形式 输入要研究的数字 10 int i; 11 for(i=0;i<100;i++) 12 { 13 if(input_number[i]!=0) 14 { 15 if(('0'>input_number[i])||('9'<input_number[i])) 16 { 17 printf("Input Error, the program exit ...\n"); 18 return -1; 19 } 20 sum += input_number[i]-'0'; 21 }//如果输入的位 非数字 则出现异常,中断;否则继续求和 22 else 23 { 24 break; 25 } 26 } 27 28 //假设求出的和不超过三位数 29 printf("Sum = %d\n",sum); 30 printf("pingying Sum: "); 31 if(sum/100!=0) 32 { 33 sum_String(sum/100); 34 printf(" "); 35 // sum_String(sum/100/10); 36 sum_String(sum%100/10); 37 38 printf(" "); 39 sum_String(sum%10); 40 } 41 42 else if(sum/10!=0) 43 { 44 sum_String(sum/10); 45 printf(" "); 46 sum_String(sum%10); 47 } 48 else 49 { 50 sum_String(sum%10); 51 } 52 printf("\n---END---\n"); 53 } 54 55 //将对应的数字用拼音表示 56 int sum_String(int num){ 57 switch (num){ 58 case 1:printf("yi");break; 59 case 2:printf("er");break; 60 case 3:printf("san");break; 61 case 4:printf("si");break; 62 case 5:printf("wu");break; 63 case 6:printf("liu");break; 64 case 7:printf("qi");break; 65 case 8:printf("ba");break; 66 case 9:printf("jiu");break; 67 case 0:printf("ling");break; 68 69 } 70 }
注:代码添加功能:
1.在输入非数字时异常退出
测试结果:
*放在测试器 中递交时 可删除部分功能代码:
#include <stdio.h> int sum_String(int num); int main(){ char input_number[100]={0};//假设输入的数字的位数是100位 int sum = 0; //printf("\nPlease enter a number string (number <10^100)\n "); scanf("%s",input_number);//以字符串的形式 输入要研究的数字 int i; for(i=0;i<100;i++) { if(input_number[i]!=0) { if(('0'>input_number[i])||('9'<input_number[i])) { // printf("Input Error, the program exit ...\n"); return -1; } sum += input_number[i]-'0'; }//如果输入的位 非数字 则出现异常,中断;否则继续求和 else { break; } } //假设求出的和不超过三位数 // printf("Sum = %d\n",sum); // printf("pingying Sum: "); if(sum/100!=0) { sum_String(sum/100); printf(" "); // sum_String(sum/100/10); sum_String(sum%100/10); printf(" "); sum_String(sum%10); } else if(sum/10!=0) { sum_String(sum/10); printf(" "); sum_String(sum%10); } else { sum_String(sum%10); } // printf("\n---END---\n"); } //将对应的数字用拼音表示 int sum_String(int num){ switch (num){ case 1:printf("yi");break; case 2:printf("er");break; case 3:printf("san");break; case 4:printf("si");break; case 5:printf("wu");break; case 6:printf("liu");break; case 7:printf("qi");break; case 8:printf("ba");break; case 9:printf("jiu");break; case 0:printf("ling");break; } }
递交结果:
成功!