C语言 使用函数和if-else语句打印出一个两位数的拼写

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 语句块中的测试。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程