You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言数字转英文程序输入大于9999时输出冗余内容如何修复

C语言数字转英文读法输入范围校验异常修复方案

问题原因

当前代码仅在输入超出范围时打印错误提示,未终止后续转换逻辑执行,因此非法输入仍会触发所有数字判断分支,输出多余内容。

修复方法

有两种成熟的修复方案可选:

  • 方案1(改动最小):在错误提示代码块末尾添加return 0;,直接结束程序运行,避免后续逻辑执行
if(num<0 || num>9999)
{  
    printf("entered number is not valid\n");
    return 0; // 新增该行即可
}
  • 方案2(逻辑分层更清晰):把所有数字转英文的代码全部包裹在输入合法的else块中,只有输入符合0~9999范围才会执行转换
if(num<0 || num>9999)
{  
    printf("entered number is not valid\n");
}
else
{
    // 原有四位、三位、两位、一位数转换代码全部移入该块
}

额外优化点

现有代码存在两个可同步修复的小问题:

  • 200对应的输出写为twohundred,缺少空格,改为two hundred
  • 40对应的拼写fourty错误,正确拼写为forty

完整修改后代码(采用方案1)

#include <stdio.h> 

int main() 
{   
    int num;

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

    if(num<0 || num>9999)
    {  
        printf("entered number is not valid\n");
        return 0;
    }
    
    //四位数千位处理
    if (num >= 9000)       
    {
        printf("nine thousand ");
        num -= 9000;
    }
    else if (num >= 8000)       
    {
        printf("eight thousand ");
        num -= 8000;
    }
    else if (num >= 7000)       
    {
        printf("seven thousand ");
        num -= 7000;
    }
    else if (num >= 6000)       
    {
        printf("six thousand ");
        num -= 6000;
    }
    else if (num >= 5000)       
    {
        printf("five thousand ");
        num -= 5000;
    }
    else if (num >= 4000)       
    {
        printf("four thousand ");
        num -= 4000;
    }
    else if (num >= 3000)       
    {
        printf("three thousand ");
        num -= 3000;
    }
    else if (num >= 2000)       
    {
        printf("two thousand ");
        num -= 2000;
    }
    else if (num >= 1000)       
    {
        printf("one thousand ");
        num -= 1000;
    }
     
    //三位数百位处理
    if (num >= 900)   
    { 
        printf("nine hundred ");
        num -= 900; 
    }
    if (num >= 800)   
    { 
        printf("eight hundred ");
        num -= 800;
    }
    if (num >= 700)   
    { 
        printf("seven hundred ");
        num -= 700;
    }
    if (num >= 600)   
    { 
        printf("six hundred ");
        num -= 600;
    }
    if (num >= 500)   
    { 
        printf("five hundred ");
        num -= 500;
    }
    if (num >= 400)   
    { 
        printf("four hundred ");
        num -= 400;
    }
    if (num >= 300)   
    { 
        printf("three hundred ");
        num -= 300;
    }
    if (num >= 200)   
    { 
        printf("two hundred ");
        num -= 200;
    }
    if (num >= 100)   
    { 
        printf("one hundred ");
        num -= 100;
    }
    
    //两位数十位处理
    if (num >= 90)   
    { 
        printf("ninety ");
        num -= 90;
    }
    if (num >= 80)
    { 
        printf("eighty ");
        num -= 80;
    }
    if (num >= 70)
    { 
        printf("seventy ");
        num -= 70;
    }
    if (num >= 60)
    { 
        printf("sixty ");
        num -= 60;
    }
    if (num >= 50)
    { 
        printf("fifty ");
        num -= 50;
    }
    if (num >= 40)
    { 
        printf("forty ");
        num -= 40;
    }
    if (num >= 30)
    { 
        printf("thirty ");
        num -= 30;
    }
    if (num >= 20)
    { 
        printf("twenty ");
        num -= 20;
    }
    
    //10-19特殊数字处理
    if (num >= 19)
    { 
        printf("nineteen ");
        num -= 19;
    }
    if (num >= 18)
    { 
        printf("eighteen ");
        num -= 18;
    }
    if (num >= 17)
    { 
        printf("seventeen ");
        num -= 17;
    }
    if (num >=16 )
    { 
        printf("sixteen ");
        num -= 16;
    }
    if (num >=15 )
    { 
        printf("fifteen ");
        num -= 15;
    }
    if (num >=14 )
    { 
        printf("fourteen ");
        num -= 14;
    }
    if (num >=13 )
    { 
        printf("thirteen ");
        num -= 13;
    }
    if (num >=12 )
    { 
        printf("twelve ");
        num -= 12;
    }
    if (num >=11 )
    { 
        printf("eleven ");
        num -= 11;
    }
    if (num >=10 )
    { 
        printf("ten ");
        num -= 10;
    }

    //个位数处理
    if (num >=9 )
    { 
        printf("nine ");
        num -= 9 ;
    }
    if (num >= 8)   
    {
        printf("eight ");
        num -= 8;
    }
    if (num >= 7)
    { 
        printf("seven ");
        num -= 7;
    }
    if (num >=6 )
    { 
        printf("six ");
        num -= 6;
    }
    if (num >= 5)
    { 
        printf("five ");
        num -= 5;
    }
    if (num >=4 )
    { 
        printf("four ");
        num -= 4;
    }
    if (num >= 3)
    { 
        printf("three ");
        num -= 3;
    }
    if (num >=2 )
    { 
        printf("two ");
        num -= 2;
    }
    if (num >= 1)
    { 
        printf("one ");
        num -=1 ;
    }
    printf("\n");
    return 0;
}

内容的提问来源于stack exchange,提问作者Shark tales

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 00:24:02