【C语言】输入一个不多于5位的正整数,要求:(1)输出它是几位数,(2)按逆序输出各位数字,(3)按顺序输出各位数字
程序员文章站
2022-03-21 22:53:53
...
//编程实现:输入一个不多于5位的正整数,要求:(1)输出它是几位数,(2)按逆序输出各位数字,(3)按顺序输出各位数字
#include <stdio.h>
#include <math.h>
int GetFigures(int n)//输出它是几位数
{
int flg= 0;//用来标记数字的位数
//方法一 解决输入"0"
do
{
n /= 10;
flg++;
}while(n != 0);//这里用do……while 为了防止输入"0"的情况
return flg;
//方法二
/*if (n == 0)
{
return flg+1;
}
else
{
while (n != 0)
{
n /= 10;
flg++;
}
return flg;
}*/
}
void PrintReverse(int n) //逆序输出数字
{
int tmp;
if(n<0)
{
n=-n;
printf("-");//为了求负数的逆序输出美观
}
do //这里用 do...while 作用同上
{
tmp= n%10;//得个位
n /= 10;//丢个位
printf("%d",tmp);
}while (n!= 0);
printf("\n");
}
void PrintOrder(int n)//顺序输出数字
{
int i=GetFigures(n); //这里调用GetFigures()函数
int tmp;
if (n<0)
{
n=-n;
printf("-");
}
//方法一
for(; i>0 ; i--)
{
tmp = n/(int)pow(10.0,i-1); //得高位
n %= (int)pow(10.0,i-1); //丢高位
printf("%d ",tmp);
}
//方法二
/*
int power= 1;
//此处替换pow(10.0,i-1)
for(int t=0 ; t<i-1 ; t++)
{
power *= 10;
}
do
{
tmp = n/power;
n %= power;
power /= 10;
printf("%d ",tmp);
}while(n != 0);
*/
printf("\n");
}
int main()
{
//printf("%d\n",GetFigures(12345)); //多测几次,尤其是特殊值
//printf("%d\n",GetFigures(0));
//printf("%d\n",GetFigures(-12345));
//PrintReverse(12345);
//PrintReverse(0);
//PrintReverse(-12345);
//PrintOrder(12345);
//PrintOrder(0);
//PrintOrder(-12345);
return 0;
}
上一篇: 关于Python中的中文编码问题
下一篇: 求不大于n的正整数的阶乘的和