数字处理问题:给一个整数,要求:①求出它是几位数;②分别输出每一位数字;③按逆序输出各位数字

(1)统计为几位数
若数字为0,则直接输出;
若不为0,则设置计数器为1,数一位舍弃一位,计数器+1.

int Count(long long n) //统计是几位数
{
 int t=0;
    if(n==0) t=1;
 while(n!=0)
  {
   t++; //计数器每次加一
   n/=10; //舍弃最后一位
     }
 return t;
}

(2)逆序输出各个数字
若数字为0,则直接输出;
若数字不为0,则分情况,若为负数,先输出符号,化为相反数,再输出数字;若为正数,每次除以10求余,得到最末位,再舍弃最末位,进行循环。

void ReverseShow(long long n)
{
 if(n==0) //0直接输出
  {
   printf("0\n");
         return;
     }
 else if(n<0) //负数先输出负号
  {
   printf("-");
   n=-n; //化为相反数
     }
 while(n!=0)
 {
  printf("%4d",n%10); //输出最末位
  n/=10; // 舍弃最末位
 }
 printf("\n");
}

(3)顺序输出
此处注意末尾0的输出
运用(1)的统计函数,每次除以10的(位数-1)次方,从而输出最高位,再进行舍弃,并且改变除数。另外,若末尾有0,则应输出末尾的0,进行位数次的循环,按位输出,以防漏掉0。

void Show(long long n)
{
 int t=Count(n);
 int power=pow(10.0,t-1);
 if(n<0)
  {
   printf("-");
   n=-n;
     }
 while(n!=0)
 {
  for(int i=0;i<t;i++)  //能够输出末位的0
     {
     printf("%4d",n/power); //输出最高位
     n%=power; //舍弃最高位
     power/=10; // 除数缩小10倍
     }
 }
 printf("\n");
}

(4)主函数

int main()
{
//测试用例
 printf("%d\n",Count(28232));
 ReverseShow(28232);
 ReverseShow(123400);
 Show(28232);
 Show(-1234);
 Show(123400);
 Show(12034);
 return 0;
}

运行结果:数字处理问题:给一个整数,要求:①求出它是几位数;②分别输出每一位数字;③按逆序输出各位数字_第1张图片

你可能感兴趣的:(数字处理问题:给一个整数,要求:①求出它是几位数;②分别输出每一位数字;③按逆序输出各位数字)