#include <stdio.h>
#include <string.h>
const char *num[] = {"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"};
int main()
{
char ch, number[10];
int s = 0, i;
while( (ch = getchar()) != '\n' )
{
s += ch-'0';
}
sprintf(number, "%d", s);
printf("%s", num[number[0]-'0']);
for ( i=1; i<strlen(number); i++ )
{
printf(" %s", num[number[i]-'0']);
}
printf("\n");
return 0;
}
————————————————
版权声明:本文为CSDN博主「coderstory」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/fjinhao/article/details/46853171
测试了一下,VS2010输出正常啊
在网站测试时。测试输入的内容可能没有\n换行符,while(中要加 ch!=EOF)判断是否读取到输入流的结束
while( (ch = getchar()) != '\n' && ch!=EOF)
看一下是不是没保存,没编译,运行之后输入数字再回车
char ch, number[10];这里,改成char ch, number[10] = {0};试试
可能是因为number没有初始化,也就是没有\0这个结束标志,在计算strlen(number)的时候出错了,导致strlen(number)可能是一个无穷大的数。