求C语言程序设计!设计一个程序,用户键入大于0小于1000的数字,程序将数字用英文读出,例如123读出one hundr
来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:综合作业 时间:2024/08/18 20:07:47
求C语言程序设计!
设计一个程序,用户键入大于0小于1000的数字,程序将数字用英文读出,
例如123
读出one hundred twenty three
特别地,当数字是三位数且十位是零,
例如307,输出为 three hundred and seven,即格式为 X hundred and Y
当用户输入0XX时,首位零不读出 只读出XX
要求 不使用数组和递归
求高手解答!
设计一个程序,用户键入大于0小于1000的数字,程序将数字用英文读出,
例如123
读出one hundred twenty three
特别地,当数字是三位数且十位是零,
例如307,输出为 three hundred and seven,即格式为 X hundred and Y
当用户输入0XX时,首位零不读出 只读出XX
要求 不使用数组和递归
求高手解答!
![求C语言程序设计!设计一个程序,用户键入大于0小于1000的数字,程序将数字用英文读出,例如123读出one hundr](/uploads/image/z/573320-56-0.jpg?t=%E6%B1%82C%E8%AF%AD%E8%A8%80%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1%21%E8%AE%BE%E8%AE%A1%E4%B8%80%E4%B8%AA%E7%A8%8B%E5%BA%8F%2C%E7%94%A8%E6%88%B7%E9%94%AE%E5%85%A5%E5%A4%A7%E4%BA%8E0%E5%B0%8F%E4%BA%8E1000%E7%9A%84%E6%95%B0%E5%AD%97%2C%E7%A8%8B%E5%BA%8F%E5%B0%86%E6%95%B0%E5%AD%97%E7%94%A8%E8%8B%B1%E6%96%87%E8%AF%BB%E5%87%BA%2C%E4%BE%8B%E5%A6%82123%E8%AF%BB%E5%87%BAone+hundr)
您好!很高兴为您解答.
代码如下:
#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仔细想一想,真心没有错,没有什么把握 ,没有经过充足的试验我是不会草草把代码发上来的……
代码如下:
#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仔细想一想,真心没有错,没有什么把握 ,没有经过充足的试验我是不会草草把代码发上来的……
求C语言程序设计!设计一个程序,用户键入大于0小于1000的数字,程序将数字用英文读出,例如123读出one hundr
c语言 把英文数字 例如 one hundred and eleven 转换位数字 111;怎样编写程序,要求1~100
c语言程序题 输入一个整数,求它的位数及各位数字之和.例如,123的位数是3,各位数字之和是6.
求一个ds18b20数字温度测量的C程序
C语言程序设计求助,求设计一个程序,要求输入1-7的整数,对应输出星期一~星期天,最好附上思路,
用9,5,2,0四个数字和小数点,写出小于2的三位小数,大于9的三位小数,零不读出来的两位小数
不断要求用户输入一个数字,然后打印这个数字的二倍,当用户输入q的时候程序退出
编制一个程序,将输入的数字-8×9,如果绝对值小于100,再返回计算,直到绝对值大于100为止,若输入-1,那
VF程序题求S(n)=a+aa+aaa+...+aaa.aaa(其中有n个a)之值,a是一个数字,n和a由键盘键入(例如
设计一个程序求输入的一个整数的各位数字之和
设计一个采用单片机系统实现的简易数字电压表,求完整的设计电路图和C程序,最好有设计报告
C语言程序设计:编写程序,输入一个正整数,统计该整数的位数并计算其各个数位上的数字之和.