**
第二题——写出这个数
**
题目基础内容:for循环、分支语句(if、switch)、"/“与”%"符号、字符串数组。
题解:
(1)将一个数的各个数位进行相加。
(2)将这个和用拼音表示,每个拼音之间有空格,一个没有。
题目还是较为简单的,但是需要注意的是,测试用例中n的值会很大,大到超出int、long、long long能表示的数据范围,即产生数据的溢出。
例如:
可以看到11个数字的时候数据产生了溢出,对12345678963进行整数分解得到了错误结果。
在c语言中,对于过大的数据我们可以采用字符串数组来存放数据。
实现代码:
#include<stdio.h>
int main()
{
int sum=0;
char num[100];//数据过大,采用字符串数组来存放数据。
scanf("%s",num);
for(int i=0; num[i]!='\0'; ++i)
{
sum+=num[i]-'0';//进行类型转换,并计算累加结果
}
if(sum<1000&&sum>99)
{
switch(sum/100)
{//注意空格
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;
}
switch(sum/10%10)
{//注意空格
case 0:printf("ling ");break;
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;
}
switch(sum%10)
{//最后一项后面没空格
case 0:printf("ling");break;
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;
}
}
if(sum>9&&sum<100)
{
switch(sum/10)
{//注意空格
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;
}
switch(sum%10)
{//最后一项后面没空格
case 0:printf("ling");break;
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;
}
}
if(sum<10)
{
switch(sum)
{//最后一项后面没空格
case 0:printf("ling");break;
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;
}
}
return 0;
}