1002. 写出这个数 (20)
读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。
输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
因为这里n值过大,所以不能采用int类型存放n值,采用char类型存放,关于各类型占用字节数:
char 1b
float 4b
double 8b
int类型与编译器有关,可以使用sizeof函数查看,如:
printf("%d",sizeof(int));
关于编译出现error:stray '\302' in program与error:stray '\240' in program的问题:
是隐藏ascII码的问题
可以调用od -c*.c指令,一般错误是错误行空格的原因。
#include<stdio.h>
#include<string.h>
void pre_out(int sum)
{
char S[10][6]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
int B[10],i=0,flag;
while(sum)
{
flag=sum%10;
B[i]=flag;
i++;
sum=sum/10;
}
while(i--)
{
if(i!=0)printf("%s ",S[B[i]]);
else printf("%s",S[B[i]]);
}
}
int main()
{
char A[100];
gets(A);
int length=strlen(A);
int i,sum=0;
for(i=0;i<length;i++)
sum=sum+A[i]-'0';
pre_out(sum);
return 0;
}