//解答和我想的是一样的,要注意是二维数组的map即可
//输出change的那里一开始写成了%c,警示!
//第一次提交,有一个3分的点错误
//第二次提交,除了0那个测试点其他全部错误,发现把0的处理放错位置了。放到了sum已经变成0了之后。
//第三次ac了.注意使用好return 0;
#include<stdio.h>
#include<string.h>
char change[10][8]={"zero","one","two","three","four","five","six","seven","eight","nine"};
int main(){
//用一个三个元素的数组应该够存放了吧。9*100=900,其余的都小于这个数
//100位,应该还一个字符数组来放
char str[110];
int ans[3]={0};
gets(str);
int len=strlen(str);
//相加时记得-‘0’转化为数值
int sum=0;//存放实际的和
for(int i=0;i<len;i++){
sum+=str[i]-'0';
}
//发现没有考虑0的情况。果然用0测试,输出为空 ,所以增加下面的部分 。而且应该在非0的进行处理之前
if(sum==0){
printf("zero\n");
return 0;
}
int num=0;
while(sum!=0){
ans[num++]=sum%10;
sum/=10;
}
//最后的num是整型的数组长度
//倒序输出
for(int i=num-1;i>=0;i--){
printf("%s",change[ans[i]]);//这个地方一开始写成了%c
if(i!=0) printf(" ");
else printf("\n");
}
return 0;
}
PAT A1005 Spell It Right
最新推荐文章于 2021-03-06 09:54:57 发布
本文介绍了一个使用C语言实现的程序,该程序能够将一个输入的整数转换成其对应的英文描述。例如,数字123会被转换为one two three。文章通过实例详细解释了代码的逻辑,包括如何处理零的情况以及如何正确输出每个数字的英文单词。
摘要由CSDN通过智能技术生成