代码长度限制: 16KB
读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10^100^。
输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。
分析:
除10取余,在余数不为零的情况下循环
余数累加
余数除10取余
与拼音比较,打印。
代码:
#include<stdio.h>
#include<stdlib.h>
main()
{
int a[100],i,s=0,b[100];
char c[3];
gets(c);
for(i=0;c[i]!='\0';i++)
{
b[i]=(int)c[i]-48;
s=s+b[i];
}
for(i=0;i<100&&s!=0;i++)
{
a[i]=s%10;
s/=10;
}
for(i=i-1;i>=0;i--)
{
if(a[i]==0)
printf("ling");
if(a[i]==1)
printf("yi");
if(a[i]==2)
printf("er");
if(a[i]==3)
printf("san");
if(a[i]==4)
printf("si");
if(a[i]==5)
printf("wu");
if(a[i]==6)
printf("liu");
if(a[i]==7)
printf("qi");
if(a[i]==8)
printf("ba");
if(a[i]==9)
printf("jiu");
if(i>0)
printf(" ");
}
}
/*设定新变量的时候要赋值or检查它在程序中是否赋过初值。
整型变量有大小范围,而以数组形式存储的数没有大小范围。
示例里给的结果一定是正确的。
在修改完程序的时候一定要整体地再过上一遍,有时候部分更改会影响很多部分。
强制类型转换是(int),而不是int()。
for循环最后一个值是i++而且判断的是xxx!=xxx的时候,i默认是比应该停止的位置大出一个值的。
long int与%ld这种写法是存在的。
看清楚输入数的范围再设置数组大小。
小于"10^100^"的话大小为100的数组可以放得下。*/