【问题描述】对于给定一个不多于5位的正整数,请按以下要求输出结果:①求它是几位数;②分别打印出每一位数字;③按逆序打印出各位数字。例如原数为321,应输出123。
【输入形式】输入一行,一个不多于5位的正整数。
【输出形式】
输出三行。
第一行输出是几位数。
第二行正序输出每一位数字,各个数字间以空格分隔。
第三行逆序输出每一位数字,各个数字间以空格分隔。
【样例输入】
12345
【样例输出】
5
1 2 3 4 5
5 4 3 2 1
#include <stdio.h>
#include <stdlib.h>
int main()
{
int m[5],i,temp, n,j;
scanf("%d", &n);
i = 0;
temp = n;
while(temp != 0)
{
m[i] = temp % 10;
temp /= 10;
i++;
}
j = i;
printf("%d\n", i);
for(i = j - 1; i >= 0; i--)
printf("%d ", m[i]);
printf("\n");
for(i = 0; i < j; i++)
printf("%d ", m[i]);
return 0;
}
首先求数的位数,先把输入的数,赋值给temp,用while循环进行取模,例如题目输入的12345,对10取模,余5,把这个5存储到一个数组m[]内,接下来对temp去尾,/10就后temp变为1234,然后重复上述过程,把4,3,2,1依次存储到m[]内,最后当temp等于1时,再经过1/10,则temp等于0,满足while的退出条件,i作为计数器,正好知道了所求数的位数,所以输出i就是位数,再通过逆序输出数组,得到正序的的每一位数字,是因为存储整数的每一位数字时,是从后向前存储的。所以最后正序输出数组,就是逆序输出整数的每一位数字。