C语言问题,大家帮个忙谢谢
解题思路(不考虑负数):
根据数字大小判断是几位数。
如果输入的是 0,则是 1 位数,正序、逆序都为 0。
如果不是0,可以根据该数是几位数进行循环输出。这里提供了一种扩展性较强的算法,可以参考。
代码中,k = 1000 表示当该数是 4 位数,然后通过循环来缩减 k 的值,从而从高到低输出每一位的数字(正序)。
逆序的算法相对正序简单点,先通过 % 10 取出最低位,再通过 / 10删除最低位,循环就可以把每一位数字都输出来。
测试代码:
#include <stdio.h>
int main()
{
int n, k = 1000, len = 4;
scanf("%d", &n);
// 判断它是几位数
if (n < 10) len = 1;
else if (n < 100) len = 2;
else if (n < 1000) len = 3;
printf("%d\n", len); // 输出是几位数
// 如果输入0
if (n == 0) printf("%d\n%d", n, n);
else
{
while (k) // 正序输出它的各个数据位
{
if (n / k) printf("%d ", n / k % 10);
k /= 10;
}
printf("\n");
while (n) // 逆序输出它的各个数据位
{
printf("%d ", n % 10);
n /= 10;
}
}
return 0;
}