c语言用switch如何做

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


#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;
}