随意给出一个整数,要求: 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);
*/
}