1 #include <stdio.h>
2
3 int main()
4 {
5 char s[100];
6 char name[][10] = {"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"};
7 int sum = 0;
8 scanf("%s",s);
9 for(int i=0; s[i] != '\0'; i++)
10 {
11 sum = sum + (s[i] - '0');
12 }
13 int asum[5]; //存储sum中的每个数
14 int j;
15 for(j=0; sum >= 10; j++)
16 {
17 asum[j] = sum % 10;
18 sum /= 10;
19 }
20 asum[j] = sum; //记录将sum中第一位数
21 while(j>=0)
22 {
23 if(j != 0)
24 printf("%s ", name[asum[j]]);
25 else
26 printf("%s\n",name[asum[j]]);
27 j--;
28 }
29 return 0;
30 }
这个'0' 是一个字符'0' 对应ASII码表上的字符'0' 字符'0'对应的十进制值为48 '1':49 '2':50 ......
拿S[i]-'0' 是为了转换成十进制的数值
例如: s[i]为 字符'1'
s[i] - '0' 就是十进制 的 1
希望对题主有所帮助,可以的话,帮忙点个采纳!
s[i]是char类型的变量,它存储的是字符的ASCII码值,要把这个字符转换为整型,只需要将其与字符'0'相减就是对应的整型数字。
比如: char '0' -> int 48, char ‘1’ -> int 49, 那么'1' - '0' = 1