PAT B1002 写出这个数 (20 分)(C语言实现)
题目叙述
读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:
每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10^100,。
输出格式:
在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
思路
- 输入方面,因为数字长度不可以使用int或者long long数据类型进行输入存储,但是可以使用字符串进行存储;
- 建立输出字符型数组,通过循环对字符串中元素进行-‘0’的计算,再使用sum加起来;
- 对sum进行循环提取数字到数组,进行输出。
详细代码(C语言实现)
```
#include<stdio.h>
int main()
{
char number[10][5]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
char t[200]={0};
int sum=0;
int tt[6]={0};
scanf("%s",t);
for(int i=0;t[i]!='\0';i++)
sum+=(t[i]-'0');
int j=0;
while(sum>0)
{
tt[j]=sum%10;
sum/=10;
j++;
}
printf("%s",number[tt[(j--)-1]]);
for(;j>0;j--)
{
printf(" %s",number[tt[j-1]]);
}
return 0;
}
错误
最后不要输出空格卡了一下,其他就没有了。
改进
去简书看了别人的代码,在数字的输入上面使用了getchar()进行输出,最后的时间都是比较小的(大佬就是大佬)
ps:https://www.jianshu.com/p/213843722abb别人的代码讲解