判断位数并输出每位的数字
例:给一个正整数,要求:
(1)求出它是几位数;
(2)分别输出每一位数字;
(3)按逆序输出各位数字,例如原数为321,应输出123。
解答如下:
头文件
#include<stdio.h>
#include<math.h>
int GetFigures(int n);//函数声明
统计n是个几位数字
int GetFigures(int n)
{
if(n == 0)
{
return 1;
}
int count = 0;
do
{
count++;
n /= 10;//n = n /10;.丢掉个位数字
}while(n != 0);
return count;
}
顺序输出每一位数字
void PrintOrder(int n)
{
//得到n是几位数
int c = GetFigures(n);
//计算除以和取余的数字
int power = (int)pow(10.0,c-1);
//循环输出每位数字
do
{
printf("%d ",n/power);//输出高位
n %= power;//丢弃高位
power /= 10;
}while(n != 0);
printf("\n");
}
逆序输出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()
{
PrintOrder(123456789);
PrintOrder(0);
PrintOrder(1);
PrintReverse(-123456789);
PrintReverse(123456789);
PrintReverse(-1);
PrintReverse(-123456789);
printf("%d\n",GetFigures(123456789));
printf("%d\n",GetFigures(-123456789));
printf("%d\n",GetFigures(-1));
return 0;
}