给一个正整数,求:
① 求出它是几位数
② 输出每个位上的数
③ 逆序输出每一位数
例如输入123,则输出
1 2 3
3 2 1
总共3位数
对于一个正整数n,想要逆序输出每一位数字,我们可以使用不断丢个位的方法,在丢弃个位的时候同时使用一个变量统计这时的位数,当n为0时退出循环。
想要顺序输出,则利用递归的思想将个位丢弃之后输出此时n的个位,然后跳出一层循环后再输出此时n的个位。
具体可看代码中的注释
代码如下:
void Order(int n) //将一个数顺序输出每一位
{
int i;
if((i=n/10)!=0) //一个p位数通过循环p-1次将初最高位都丢弃,之后printf函数打印,再跳出一层循环
{
Sun1(i);
}
printf("%d ",n%10); //打印此时n的个位
}
void Reverse(int n) //逆序输出每一位数字且计算有多少位
{
int i;
int sum = 0;
printf("\n");
do
{
printf("%d ", n % 10);//得到个位
n/=10; //n利用/=不断将个位丢弃
sum++; //统计位数
}while(n != 0); //直到为n为0时退出循环
printf("\n");
printf("总共%d位数\n\n", sum);
}