欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

随意给出一个整数,要求: 1.求出它是几位数 2.逆序输出每位数字 3.顺序输出每位数字

程序员文章站 2022-03-21 22:17:07
...

代码如下:

#include<stdio.h>
#include<math.h>

int Count(long long n)//统计n是几位的数字
{
 if(n == 0)//判断输入的数字是否为0,若为0则直接返回1
 return 1;
 
 int tmp = 0;
while(n != 0)
 {
   tmp++;//计数
   n /= 10;
   }
 return tmp;
}

void PrintReverse(long long n)//将每个数字逆序输出
{
 if(n < 0)//判断输入的数字是否为负数,若为负数,则自行输出一个负号,并将输出的每位数字取绝对值输出
 {
   printf("-");
   n = -n;
 }
  do
 {
   printf("%d ",n%10);//得到个位数字输出
   n /= 10;//再丢弃个位数字
  }while(n != 0);
 printf("\n");
}

void PrintOrder(long long n)//顺序输出各位数字
{
 int tmp = Count(n);//调用计算位数的函数,并将结果赋值给tmp
 int power = (int)pow(10.0,tmp-1);//将第一次所需要的被除数赋值给power
 do
 {
   printf("%d ",n/power);//得到最高位数字输出
   n %= power;//取余(丢弃最高位)
   power /= 10;//除以10并赋值给自己,进入下一次循环成为新的被除数
  }while(n != 0);
 printf("\n");
}

int main()
{
/*
 printf("%d\n",Count(122346887654321));//判断几位数字测试用例
 printf("%d\n",Count(-12345985454421));
 printf("%d\n",Count(0));
 printf("%d\n",Count(1));
 printf("%d\n",Count(-1));
*/

/*
 PrintReverse(123456789);//逆序输出各位数字测试用例
 PrintReverse(-123456789);
 PrintReverse(1);
 PrintReverse(-1);
 PrintReverse(0);
*/

/*
 PrintOrder(1659844654);//顺序输出各位数字测试用例
 PrintOrder(-6549865354);
 PrintOrder(1);
 PrintOrder(-1);
 PrintOrder(0);
*/
}






   
  

  
相关标签: C