C语言 | 给出一个不多于5位的正整数,求它是几位数,分别输出每一位数字,按逆序输出各位数字

第 109 页,第 9 题:

9.给出一个不多于5位的正整数:
① 求出它是几位数;
② 分别输出它是几位数;
③ 按逆序输出个位数字,例如原数为 321,应输出 123。

大致思路:

下列所述以:12345 为例;变量 i 的初值为 0
  1. 要求判断它是几位数,那么我们可以先求出各个数对应位置的值(个、十、百、千、万),具体取法看下方 C 语言代码
  2. 开始判断

    1. 从一个数(假设是:12345)的 万位 开始判断,如果不是 0,将万位的值赋给 a 变量,并 i=i+1
    2. 然后判断 千位,如果不是 0,将千位的值赋给 b 变量,并 i=i+1
    3. 然后判断 百位,如果不是 0,将百位的值赋给 c 变量,并 i=i+1
    4. 然后判断 十位,如果不是 0,将十位的值赋给 d 变量,并 i=i+1
    5. 然后判断 个位,如果不是 0,将个位的值赋给 e 变量,并 i=i+1
  3. 然后输出变量 i 的值,即可得到这个数是几位数
  4. 分别输出每一个数字,即先判断它几位数,然后输出 a、b、c、d、e 变量的值即可,具体可以看下方代码
  5. 逆序输出这个数字,先判断几位数,再输出 a、b、c、d、e 变量的值,具体可以看下方代码

C 语言代码如下:

#include <stdio.h>

int main(){
    int num,total=0;
    int a,b,c,d,e;//万,千,百,十,个 
    
    printf("请输入一个不多于5位的正整数:");
    scanf("%d", &num);

    a = num/10000;//取万位数值 
    b = (num/1000)%10;//取千位数值 
    c = (num/100)%10;//取百位数值 
    d = (num/10)%10;//取十位数值
    e = num%10;//取个位数值
    
    printf("\n");
    if(a != 0) {
        total++; 
        printf("万位:%d\n", a);
    }
    if(b != 0){
        total++;
        printf("千位:%d\n", b);
    }
    if(c != 0){
        total++;
        printf("百位:%d\n", c);
    }
    if(d != 0){
        total++;
        printf("十位:%d\n", d);
    }
    if(e != 0){
        total++;
        printf("个位:%d\n", e);
    }
    
    printf("\n你输入的 %d 是 %d 位数\n", num, total);
    printf("\n逆序输出:");
    switch(total){
        case 1:
            printf("%d", e);
            break;
        case 2:
            printf("%d%d", e, d);
            break;
        case 3:
            printf("%d%d%d", e, d, c);
            break;
        case 4:
            printf("%d%d%d%d", e, d, c, b);
            break;
        case 5:
            printf("%d%d%d%d%d", e, d, c, b, a);
            break;
    }
    
    return 0;
}

运行结果:

请输入一个不多于5位的正整数:12345

万位:1
千位:2
百位:3
十位:4
个位:5

你输入的 12345 是 5 位数

逆序输出:54321

如无特别声明,该文章均为 现在网NowTime.cc)原创,转载请遵循 署名-非商业性使用 4.0 国际(CC BY-NC 4.0) 协议,即转载请注明文章来源。


标签: C

赞 (0)

添加新评论