C语言 使用函数和if-else语句打印出一个两位数的拼写
问题描述
嗨,我不知道为什么我的代码没有显示我期望的结果。练习是使用函数和if-else语句在C中打印出一个两位数的拼写。当我运行代码时,没有返回任何结果。(这是一个初学者的练习,所以我只能想到这个,非常抱歉:(()你能帮我检查一下我哪里错了吗?非常感谢!
#include <stdio.h>
// Consider the second number in that 2-digit number when the first number is 1
void ten(char b)
{
switch (b) {
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("fifthteen"); break;
case(6): printf("sixteen"); break;
case(7): printf("seventeen"); break;
case(8): printf("eighteen"); break;
case(9): printf("nineteen"); break;
}
}
// Consider the second number in that 2-digit number when the first number is not 1
void morethanten(char b)
{
switch (b) {
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;
}
}
int main()
{
char a, b;
printf("Enter your 2-digit number: ");
scanf("%c%c", &a, &b);
// Consider the first number in that 2-digit number
switch (a) {
case(0): printf("That is not a 2-digit number"); break;
case(1): ten(b); break;
case(2): printf("Twenty"); morethanten(b); break;
case(3): printf("Thirty"); morethanten(b); break;
case(4): printf("Fourty"); morethanten(b); break;
case(5): printf("Fifthty"); morethanten(b); break;
case(6): printf("Sixty"); morethanten(b); break;
case(7): printf("Seventy"); morethanten(b); break;
case(8): printf("Eighty"); morethanten(b); break;
case(9): printf("Ninety"); morethanten(b); break;
}
return 0;
}
解决方案
在你的case语句中,你在检查一个整数值而不是数字的字符表示。
case(1): ten(b); break;
您对于该特定陈述的案例比较如下:
case('1'): ten(b); break;
在修正大小写比较之后,这里是一个针对字符的快速测试。
craig@Vera:~/C_Programs/Console/Spelling/bin/Release$ ./Spelling
Enter your 2-digit number: 12
twelve
试试看。另外,您可能希望参考一些教程文献,以更好地理解在 switch 语句块中的测试。