给出一个n位的正整数,要求
(1)求出它是几位数
(2)分别输出每一位数
(3)按逆序输出各位数字
(1)求出一个整数是几位数字
unsigned int postive_num(int num)//num 输入的数字
{
int n=0;//n:输入的数字的位数
if(num==0)
//如果没有if语句,当num=0时,num无法进入while循环,导致n=0,所以要判断当num=0时,n=1
{
n=1;
}
while(num!=0)
{
num=num/10;//num每次除以10,得到整数部分,整数部分最低位会少一位数字
n++;
}
return n;
}
//用do while语句,可以避免当num=0时,n=1
unsigned int postive_num(int num)
{
int n=0;
do{
num=num/10;
n++;
}while(num!=0);
return n;
}
(2)顺序输出
//分别输出每一位数
void PrintOrder(int n)
{
int count=GetFigure(n);
int m=(int)pow((float)10,(float)count-1);
int tmp=n;
do
{
tmp=n/m;
n=n%m;
m/=10;
printf("%d ",tmp);
}while(n!=0);
printf("\n");
}
(3)按逆序输出各位数字
算法:得到个位数字,丢弃个位数字
void PrintReverse(int n)
{
int tmp;
do{
tmp=n%10;
n/=10;
printf("%d ",tmp);
}while(n!=0);
printf("\n");
}
int main()
{
printf("%d\n",postive_num(100));
printf("%d\n",postive_num(65));
printf("%d\n",postive_num(4));
printf("%d\n",postive_num(8528));
printf("%d\n",postive_num(0));
printf("\n");
PrintOrder(525);
PrintOrder(-8252);
PrintOrder(0);
PrintOrder(65);
printf("\n");
PrintReverse(525);
PrintReverse(-8252);
PrintReverse(0);
PrintReverse(65);
return 0;
}