PAT A1005 Spell It Right

本文介绍了一个使用C语言实现的程序,该程序能够将一个输入的整数转换成其对应的英文描述。例如,数字123会被转换为one two three。文章通过实例详细解释了代码的逻辑,包括如何处理零的情况以及如何正确输出每个数字的英文单词。
摘要由CSDN通过智能技术生成
//解答和我想的是一样的,要注意是二维数组的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; 
} 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值