对n进行整除运算(即%)可取得n的个位;
对n进行除法运算(即/)可丢掉n的个位;
//求出n的位数
int Figure(int n)
{
int count = 0;
do
{
count++;
n /=10;
}while(n != 0);//至少可以输出一次,解决了0是一位数的问题
return count;
}
逆序输出:对n先进行整除运算(%)取得n的个位,打印个位数字,然后再对n进行除法运算丢掉个位数字,依靠循环可逆序打印每一位数字。
//逆序输出n的每一位
void PrintReverse(int n)
{
if(n < 0)//当输入的n为负数时,解决每一位都为负数问题
{
printf("-");
n = -n;
}
do
{
printf("%d ",n%10);//打印出n的个位数字
n /= 10;//丢掉n的个位数字
}while(n != 0);
printf("\n");
}
顺序输出:首先对n的位数进行计算,利用循环可算出n的除数power,对n进行除法运算(n/power),打印这个值,这个值即为n的第一位数字,再对n进行整除(n%power)去掉n的首位,除数power/10以丢掉除数的个位,利用循环可顺序打印出每一位数字。
//顺序输出n的每位数字
void PrintOrder(int n)
int count = Figure(n);//利用求位数函数算出n的位数
int power = 1;
for(int i=0;i<count-1;i++)//利用循环算出power的值
{
power *= 10;
}
do
{
printf("%d ",n/power);//打印出n的第一位数字
n %= power;//丢掉n的首位
power /= 10;
}while(n != 0);
printf("\n");
}
int main()
{
printf("%d\n",Figure(0));
printf("%d\n",Figure(1));
PrintOrder(123456789);
PrintOrder(-123456789);
PrintOrder(0);
PrintReverse(123456789);
PrintReverse(0);
return 0;
}