关于逆序及顺序输出n的每一位的问题

对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;
}

猜你喜欢

转载自blog.csdn.net/wry_sunny_/article/details/79502449