qq_58700291 2021-10-08 08:02 采纳率: 78.6%
浏览 24
已结题

c语言用switch如何做

2.提高题:给一个不多于5位的正整数,要求:1求出它是几位数;2分别打印出
每一位数字;3按逆序打印出各位数字,例如原数是321,应输出123。

  • 写回答

1条回答 默认 最新

  • jianqiang.xue 嵌入式领域优质创作者 2021-10-08 08:37
    关注
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    int main()
    {
        int num, i, j, bit, c[7], n[7];
        printf("Please enter number: ");               //输入一个整数
        scanf("%d", &num);
        //判断整数是否多于5位,报错,重新输入
        while (num >= 100000){
            printf("Error!\nPlease enter number: ");
            scanf("%d", &num);
        }
        //判断整数是几位数
        for (i = 1; i < 1000000 && j != 0; i *= 10)
            j = num / i;
        i /= 100;
        switch(i){
        case 1: bit = 1; break;
        case 10: bit = 2; break;
        case 100: bit = 3; break;
        case 1000: bit = 4; break;
        case 10000: bit = 5; break;
        default: break;
        }
        printf("%d is %d bits!\n", num, bit);
        //此处是一个为输出数字的中间模块
        for (i = 0; i <= bit; i++)
            c[i] = num / pow(10, bit-i);
        //分别输出整数的每位数字
        for (i = 0; i < bit; i++){
            n[i] = c[i+1] - c[i] * 10;
            printf("%d ", n[i]);
        }
        printf("\n");
        //逆序输出每位数字
        for (i = bit-1; i >= 0; i--)
            printf("%d ", n[i]);
        printf("\n");
        system("pause");
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月18日
  • 已采纳回答 10月10日
  • 创建了问题 10月8日

悬赏问题

  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题