给一个正整数,要求:
①求出它是几位数;
②分别输出每一位数字;
③按逆序输出各位数字,例如原数为321,应输出123。
#include<stdio.h>
int GetFigures(int n)//①
{
int count = 0;
if (n == 0) {
return 1;//0的位数是1
}
do
{
n /= 10;
count++;
} while (n != 0);//n>0不太好
//printf("%d\n",count);//error
return count;
}
void PrintOrder(int n)//②
{
int power = 1;
int count = GetFigures(n);//定义时有数据类型,使用时没有数据类型
for (int i = 0; i < count - 1; i++)
{
power *= 10;
}
if (n < 0){
printf("-");
n = -n;
}
do
{
printf("%d ", n / power);//得到最高位的数字
n %= power;//丢弃最高位的数字
power /= 10;
} while (n != 0);
printf("\n");
}
void PrintReverse(int n)//③
{
if (n < 0){
printf("-");
n = -n;
}
do
{
printf("%d", n % 10);//得到个位数字
n /= 10;//丢弃个位数字
} while (n != 0);
printf("\n");
}
int main()
{
printf("%d\n",GetFigures(123456789));
printf("%d\n",GetFigures(1));
printf("%d\n",GetFigures(0));
printf("%d\n",GetFigures(-123));
printf("\n");
PrintOrder(123456789);
PrintOrder(0);
PrintOrder(-123);
printf("\n");
PrintReverse(123456789);
PrintReverse(0);
PrintReverse(-123);
printf("\n");
}
Ps:重点是如何得到一个数并且丢弃一个数。