在处理数据的时候经常会遇到判断一个数是几位数,并且有的时候需要输出他的百位或者其他位上的数字,这时候我们就需要一种方法来让它按照我们的要求输出,今天就是介绍这种方法。
得到一个数的时候要判断这个数是一个几位数,对于这个问题我们可以对这个数除10,然后对除10后的这个数进行判断是否为0,如果是零,它就是一位数,如果不为0,那么就一直重复执行这个步骤,我们定义一个变量来保存执行这个步骤的次数,那么这个变量的值是几,这个数字就是个几位数。
#include <stdio.h>
int GetFig(int n)//
{
int Num = 0;
do
{
Num++;
n /= 10;//丢弃个位
}while(n != 0);
printf("判断此数的位数:%d\n",count);
return Num;
}
那么下一步就是要输出这个数字的,每一位上的数字:
由于第一步求出了该数是几位数,直接调用,对n除以10的(count-1)次方 ,并且输出其值,然后对n求10的(count-1)次方的余数,然后进入循环,直到n=0时,结束循环。就得到每位数的值!
void PrintOrder(int n)//分别输出每位数
{
int Num;
Num = GetFig(n);
int power = 1;
for(int i=0;i<count-1;i++)
{
power *= 10;
}
printf("分别输出该数:");
do
{
printf(" %d",n/power);//得到最高位
n %= power;//丢弃最高位
power /= 10;
}while(n!=0);
printf("\n");
}
如果要让这个数,进行逆序输出,如123,逆序321.
我们可以对该数进行求余数,n%10(得到个位数字,并且输出该数字),让后n除以10,判断是否为零,如果不为零,进入循环,直到n=0时,结束循环,然后就得到了逆序数。
int PReverse(int n)//使该数逆序输出
{
printf("逆序输出该数:");
do
{
printf("%d ",n%10);//得到个位数字
n /= 10;//丢弃个位数字
}while(n!=0);
printf("\n");
return 0;
}
解决这个问题还可以使用递归和栈排序的方法,这两种方法我们日后再说。