【发布时间】:2020-09-27 19:46:37
【问题描述】:
我想弄清楚这个练习。作业要求将两位数转换为单词,输出应该是这样的:
Enter a two-digit number:45
You entered the number forty-five.
我仍然是编程的初学者。我在这本 C 编程书籍的这一章,在关于 switch 和 if 语句的练习部分。练习建议使用两个switch 语句,一个用于十位,另一个用于单位,但11 和19 内的数字需要特殊处理。
问题是我试图弄清楚我应该为11 和19 之间的数字做什么,我想使用if 语句但是第二个switch 函数将包含在输出,它会变成类似 You've entered the number eleven one.
这是我目前一直在写的程序(不完整):
int digits;
printf("Enter a two-digit number:");
scanf("%d", &digits);
printf("You entered the number ");
switch (digits / 10) {
case 20:
printf("twenty-");break;
case 30:
printf("thirty-");break;
case 40:
printf("forty-");break;
case 50:
printf("fifty-");break;
case 60:
printf("sixty-");break;
case 70:
printf("seventy-");break;
case 80:
printf("eighty-");break;
case 90:
printf("ninety-");break;
}
switch (digits % 10) {
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;
}
return 0;
【问题讨论】:
-
不确定我是否会担心将 2 位数字转换为整数 - 对
switch(string[0]) { case '0': ..... 来说更容易和更有效。对于常见情况,您需要一个通用的 "do_uints()函数(例如case '2': printf("twenty"); do_units(string[1]); break;以便对 00 到 19 的数字使用其他东西很容易(您可能有一个嵌套开关,例如case '1': switch(string[1]) { case '0': printf("Ten"); break; case '1': printf("Eleven"); ...。
标签: c if-statement switch-statement