Shiain 2023-03-11 21:06 采纳率: 100%
浏览 30
已结题

[C语言]请问如何优化下列代码?

如下列代码,我想做出最后一起输出“num是_位数”,并且当输入的数字超过五位数时返回“输入错误!请输入0-10000的数字\n”而不输出其他结果的效果,请问我应该怎样优化/修改?

#include<stdio.h> 
//输入一个不多于5位的正整数
//要求:
//(1)输出它是几位数
//(2)分别输出每一位数字
//(3)按逆序输出各位数字,如原数为321,则应输出123
// (4)不能输入负数且输入的数不超过5位
int main()
{
    long num, numt;
    int a = 0;
    scanf("%d", &num);
    //判断是几位数
    if (num >= 10000 && num < 100000)
        printf("num是一个五位数");
    else if (num >= 1000&&num< 10000)
        printf("num是一个四位数");
    else if (num >= 100&&num<1000)
        printf("num是一个三位数");
    else if (num >= 10&&num<100)
        printf("num是一个二位数");
    else if (num >= 0&&num<10)
        printf("num是一个一位数");
    else
        printf("输入错误!请输入0-10000的数字\n");
    numt = num;
    //倒序计算
    while (num)
    {
        a = a * 10 + num % 10;
        num = num / 10;
    }
    printf("\nnum中的数字分别是:%d,倒序是:%d", numt,a);
    return 0;
}

```

  • 写回答

3条回答 默认 最新

  • 社区专家-Monster-XH 2023-03-11 21:23
    关注
    
    #include <stdio.h>
    
    int main()
    {
        int num, numt;
        int digits[5], i = 0;
    
        printf("请输入一个0-10000之间的正整数:");
        scanf("%d", &num);
    
        if (num < 0 || num > 10000) {
            printf("输入错误!请输入0-10000的数字\n");
            return 0;
        }
    
        // 计算数字位数
        if (num >= 10000)
            printf("num是一个五位数");
        else if (num >= 1000)
            printf("num是一个四位数");
        else if (num >= 100)
            printf("num是一个三位数");
        else if (num >= 10)
            printf("num是一个二位数");
        else
            printf("num是一个一位数");
    
        // 分别输出每一位数字
        numt = num;
        while (numt) {
            digits[i++] = numt % 10;
            numt /= 10;
        }
        printf("\nnum中的数字分别是:");
        for (int j = i - 1; j >= 0; j--) {
            printf("%d ", digits[j]);
        }
    
        // 按逆序输出各位数字
        printf("\n按逆序输出各位数字:");
    for (int j = 0; j < i; j++) {
        printf("%d", digits[j]);
    }
    
    
        return 0;
    }
    
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月19日
  • 已采纳回答 3月11日
  • 修改了问题 3月11日
  • 修改了问题 3月11日
  • 展开全部

悬赏问题

  • ¥15 蓝桥oj3931,请问我错在哪里
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染