求C语言程序设计!设计一个程序,用户键入大于0小于1000的数字,程序将数字用英文读出,例如123读出one hundr

问题描述:

求C语言程序设计!
设计一个程序,用户键入大于0小于1000的数字,程序将数字用英文读出,
例如123
读出one hundred twenty three

特别地,当数字是三位数且十位是零,
例如307,输出为 three hundred and seven,即格式为 X hundred and Y

当用户输入0XX时,首位零不读出 只读出XX

要求 不使用数组和递归
求高手解答!
1个回答 分类:综合 2014-09-27

问题解答:

我来补答
您好!很高兴为您解答.

代码如下:
#include
int main()
{
int key;
printf("请输入一个1到999的整数:");
scanf("%d",&key);
printf("数字英文读作:");
if(key1000)
{
printf("输入数值超出范围!");
return 0;
}
else
{
switch(key/100)
{
case 0:break;
case 1:printf("One hundred ");break;
case 2:printf("Two hundred ");break;
case 3:printf("Three hundred ");break;
case 4:printf("Four hundred ");break;
case 5:printf("Five hundred ");break;
case 6:printf("Six hundred ");break;
case 7:printf("Seven hundred ");break;
case 8:printf("Eight hundred ");break;
case 9:printf("Nine hundred ");break;
}
}
if(key/100!=0 && key%10!=0) printf("and ");
if(key/10!=0)
{
key%=100;
switch(key/10)
{
case 0:break;
case 1:break;
case 2:printf("twenty ");break;
case 3:printf("thirty ");break;
case 4:printf("forty ");break;
case 5:printf("fifty ");break;
case 6:printf("sixty ");break;
case 7:printf("seventy ");break;
case 8:printf("eighty ");break;
case 9:printf("ninety ");break;
}
}
if(key/10==1)
{
switch(key%10)
{
case 0:printf("ten");break;
case 1:printf("eleven");break;
case 2:printf("twelve");break;
case 3:printf("thirteen");break;
case 4:printf("fourteen");break;
case 5:printf("fifteen");break;
case 6:printf("sixteen");break;
case 7:printf("seventeen");break;
case 8:printf("eighteen");break;
case 9:printf("nineteen");break;
}
}
else
{
switch(key%10)
{
case 0:break;
case 1:printf("one");break;
case 2:printf("two");break;
case 3:printf("three");break;
case 4:printf("four");break;
case 5:printf("five");break;
case 6:printf("six");break;
case 7:printf("seven");break;
case 8:printf("eight");break;
case 9:printf("nine");break;
}
}
printf("\n");
return 0;
}
有一点我给你改了,就是百位非零,十位和个位不全为零的三位数读法都加了“and”,这样更合理一些.若LZ不喜就说一声,我再给您改回来……

打这么多好累啊……求安慰望LZ采纳吧~
再问: 从代码上看 if(key/10==1) 这个语句中的key是用户输入的原数(因为对key执行耳朵%=100的变化处理只在上一个if语句中有效。) 那这样代码就不对了吧
再答: 不不不……LZ你想想语句“key/10==1”是被之前的“if(key/10!=0)”所包含的,所以已经执行过“key%=100”了…… 不信你可以试试各种类型的数,不会有错的。
再问: if(key/10!=0) { key%=100; switch(key/10) { …… } } if(key/10==1) { …… } 你给的代码是这样的,可以看出“if(key/10!=0)”的大括号没有把if(key/10==1)包含在内啊 这样这两个if就是分立的两个情况了嘛
再答: 不是非要大括号包含在内的……两个if是有交集的,符合“if(key/10==1)”语句的数,必然符合“if(key/10!=0)”啊……比如115这个数,是符合“if(key/10!=0)”的,所以已经经过“key%=100”处理变成了15,又因为接下来符合“if(key/10==1)”,所以经过了两个if语句的处理……请LZ仔细想一想,真心没有错,没有什么把握 ,没有经过充足的试验我是不会草草把代码发上来的……
 
 
展开全文阅读
剩余:2000
上一页:单调性最小值
下一页:溶质质量