C语言中对数字的处理

   给一个正整数,要求:

①求出它是几位数;

②分别输出每一位数字;

③按逆序输出各位数字,例如原数为321,应输出123。

#include
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:重点是如何得到一个数并且丢弃一个数。

 

你可能感兴趣的:(C)