输入一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

繁琐的方法:

    int a  = 0;
    printf("输入一个不多于5位的正整数:");
    scanf("%d", &a );
    printf("%d", a);
    int x = 0,y = 0, z = 0, m = 0, n = 0;
    if (a / 10000 != 0) {
        printf("是一个五位数\n");
        x  = a / 10000 ;//求万位
        y = a % 10000 / 1000;//求千位
        z = a % 10000 % 1000 / 100;//求百位
        m = a % 10000 % 1000 % 100 / 10;//求十位
        n = a % 10000 % 1000 % 100 % 10;//求个位
        printf("逆序打印为:%d%d%d%d%d",n , m , z, y ,x);
    }else if(a / 1000 !=0){
        printf("是一个四位数\n");
        y = a / 1000;//求千位
        z = a % 1000 / 100;//求百位
        m = a % 10000 % 1000 % 100 / 10;//求十位
        n = a % 10000 % 1000 % 100 % 10;//求个位
        printf("逆序打印为:%d%d%d%d",n , m , z, y);
    }else if(a / 100 !=0){
        printf("是一个三位数\n");
        z = a / 100;//求百位
        m = a % 100 / 10;//求十位
        n = a % 10;//求个位
          printf("逆序打印为:%d%d%d",n , m , z);
    }else if(a / 10 !=0){
        printf("是一个两位数\n");
        m = a % 100 / 10;//求十位
        n = a % 100 % 10;//求个位
        printf("逆序打印为:%d%d",n , m);
    }else{
        printf("是一个一位数\n");
        n = a % 10;//求个位
        printf("逆序打印为:%d", n);
    }

简化后的方法,如下:

int number = 0, a  = 0, count = 0;
       printf("请输入一个数字");
       scanf("%d", &number);
      while(number > 0)//输入的数
       {
           a  = number % 10;//求最后一位数,也就是个位上的数
           ++count;//没执行一次,count自动增加
           printf("%d ", a);//执行第一遍,打印个位上的数,第二遍,打印十位上的数
           number = number / 10;//求输入的数最大位上的数,直到number为0.
       }
       printf("\n这个数是%d位数", count);//输出count也就是输入数的位数


 
  

你可能感兴趣的:(C语言/C++)