读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。
输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
1 #include <stdio.h> 2 #include <stdlib.h> 3 4 int main(void) 5 { 6 char a[101] = "", b[101] = ""; 7 int sum = 0, n; 8 scanf("%s", a); 9 for (n = 0; n<101; n++) 10 { 11 if (a[n] != ‘\0‘) 12 sum = sum + a[n] - 48; 13 } 14 sprintf(b, "%d", sum); 15 for (n = 0; n < 101; n++) 16 { 17 18 if (b[n] == ‘\0‘) 19 { 20 break; 21 } 22 switch (b[n]) 23 { 24 case ‘0‘: 25 printf("ling"); 26 break; 27 case ‘1‘: 28 printf("yi"); 29 break; 30 case ‘2‘: 31 printf("er"); 32 break; 33 case ‘3‘: 34 printf("san"); 35 break; 36 case ‘4‘: 37 printf("si"); 38 break; 39 case ‘5‘: 40 printf("wu"); 41 break; 42 case ‘6‘: 43 printf("liu"); 44 break; 45 case ‘7‘: 46 printf("qi"); 47 break; 48 case ‘8‘: 49 printf("ba"); 50 break; 51 case ‘9‘: 52 printf("jiu"); 53 break; 54 } 55 if (b[n + 1] != ‘\0‘)//当下一个字符为‘\0‘时说明到达字符串结尾 56 { 57 printf(" "); 58 } 59 } 60 return 0; 61 }
看一下下面两端代码,理解一下字符串数组和字符串。
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 5 /* run this program using the console pauser or add your own getch, system("pause") or input loop */ 6 7 int main(int argc, char *argv[]) { 8 char a[9] = { ‘1‘,‘2‘,‘3‘,‘4‘ }; 9 char b[9] = { "1234" }; 10 printf("%d %d %d %d\n", sizeof(a), strlen(a), sizeof(b), strlen(b)); 11 system("PAUSE"); 12 return 0; 13 }
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 5 /* run this program using the console pauser or add your own getch, system("pause") or input loop */ 6 7 int main(int argc, char *argv[]) { 8 char a[] = { ‘1‘,‘2‘,‘3‘,‘4‘ }; 9 char b[] = { "1234" }; 10 printf("%d %d %d %d\n", sizeof(a), strlen(a), sizeof(b), strlen(b)); 11 system("PAUSE"); 12 return 0; 13 }
第二段程序编译器不同运行结果可能不同,但,sizeof在第二段中会计算b字符串b中最后的‘\0‘,因此会大出一个字节。