1002 写出这个数 (20分) 读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。(c语言实现)
输入格式:
每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10的100次方
输出格式:
在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:cifang
1234567890987654321123456789
输出样例:
yi san wu
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
int sum=0;
char str[101],str1[10];
gets(str);
int len=0;
for(int i=0;str[i]!='\0';i++){
sum+=str[i]-'0';//字符串中的单个字符转换为数字
}
sprintf(str1,"%d",sum);//将sum的结果保存在字符串str1中
len=strlen(str1);
for(int i=0;i<len;i++){
if(i>0)
printf(" ");
if(str1[i]-'0'==0)
printf("ling");
else if(str1[i]-'0'==1)
printf("yi");
else if(str1[i]-'0'==2)
printf("er");
else if(str1[i]-'0'==3)
printf("san");
else if(str1[i]-'0'==4)
printf("si");
else if(str1[i]-'0'==5)
printf("wu");
else if(str1[i]-'0'==6)
printf("liu");
else if(str1[i]-'0'==7)
printf("qi");
else if(str1[i]-'0'==8)
printf("ba");
else if(str1[i]-'0'==9)
printf("jiu");
}
return 0;
}
该题主要考查了字符串与整数之间的相互转化:
字符串转化为整数:
sscanf(str,"%d",&a);
从数组中读出整数存储到a中
str[i]-‘0’
str[i]转化为对应数字
整数转化为字符串:
sprintf(str,"%d",a);
a中的值以字符串形式存储到str中