繁体   English   中英

将两位数转换成单词的简单C程序

[英]Simple C Program To Convert Two Digits Into Words

我要做的是编写一个程序,其中您输入两个数字,然后将它们转换为打印的单词。 问题是这个程序在输入两位数后挂起,我不明白为什么。 任何和所有的帮助表示赞赏。 我是初学者,所有我可以用来解决这个问题基本上是if和switch。 再次感谢。

#include <stdio.h>

int main (void)
{
    int firstNum, secondNum;

    printf("Enter a two digit number: ");
    scanf("%d%d", &firstNum,&secondNum);

    if (firstNum == 1 && secondNum == 0){
            printf("You entered the number ten\n");}
    if (firstNum == 1 && secondNum == 1){
                printf("You entered the number eleven\n");}
    if (firstNum == 1 && secondNum == 2){
                printf("You entered the number twelve\n");}
    if (firstNum == 1 && secondNum == 3){
                printf("You entered the number thirteen\n");}
    if (firstNum == 1 && secondNum == 4){
                printf("You entered the number forteen\n");}
    if (firstNum == 1 && secondNum == 5){
                printf("You entered the number fifteen\n");}
    if (firstNum == 1 && secondNum == 6){
                printf("You entered the number sixteen\n");}
    if (firstNum == 1 && secondNum == 7){
                printf("You entered the number seventeen\n");}
    if (firstNum == 1 && secondNum == 8){
                printf("You entered the number eighteen\n");}
    if (firstNum == 1 && secondNum == 9){
                printf("You entered the number nineteen\n");}
    switch(firstNum){
        case 2: printf("You entered the number twenty-");break;
        case 3: printf("You entered the number thirty-");break;
        case 4: printf("You entered the number forty-");break;
        case 5: printf("You entered the number fifty-");break;
        case 6: printf("You entered the number sixty-");break;
        case 7: printf("You entered the number seventy-");break;
        case 8: printf("You entered the number eighty-");break;
        case 9: printf("You entered the number ninty-");break;
    }
    switch (secondNum){
        case 1: printf("one.\n");break;
        case 2: printf("two.\n");break;
        case 3: printf("three.\n");break;
        case 4: printf("four.\n");break;
        case 5: printf("five.\n");break;
        case 6: printf("six.\n");break;
    }
    return 0;
}

您的程序“挂起”,因为它正在等待第二个数字。

而不是4 2 ENTER ,键入4 2 f o o ENTER


您需要验证scanf()的返回值

if (scanf("%d%d", &firstNum, &secondNum) != 2) {
    fprintf(stderr, "Oops, the scanf didn't read 2 numbers.\n");
} else {
    /* continue with program */
    /* you might as well see what scanf got from the input */
    printf("scanf got the values %d and %d.\n", firstNum, secondNum);
}

一个非常简单的代码(特别适合初学者)。

#include <stdio.h>
#include <conio.h>

int main()
{
int num,n,r;

printf("Enter a two-digit number: ");
scanf("%d",&num);

n = num/10;
r = num%10;

switch(n)
{
    case 1: switch(r)
            {
                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;                                    
    case 2: printf("Twenty-");
            break;
    case 3: printf("Thirty-");
            break;
    case 4: printf("Fourty-");
            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(n != 1)
{
     switch(r)
     {
         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;
         default: ;                         

         }
    }
    getch();
}        

您的程序从控制台读取数据,控制台处于“熟”模式。 在此模式下,控制台收集输入并允许用户编辑它。 ReturnEnter键后,数据将发送到程序。

您想要的模式是“原始”模式。 有多种方法可以进入原始模式,但这取决于您的操作系统。

快速修复是输入两位数字并按Return

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM