```c
include
int main() {
int num, digit, count = 0;
printf("请输入一个不多于5位的正整数: ");
scanf("%d", &num);
// 计算数字的位数
while (num > 0) {
num /= 10;
count++;
}
// 输出数字的位数
printf("该数字是%d位数
", count);
// 输出每一位数字
printf("每一位数字分别是: ");
num = abs(num); // 取绝对值,因为负数也会被正确处理
while (num > 0) {
digit = num % 10;
printf("%d ", digit);
num /= 10;
}
printf("
");
// 逆序输出各位数字
printf("逆序输出各位数字: ");
num = abs(num); // 取绝对值,因为负数也会被正确处理
while (num > 0) {
digit = num % 10;
printf("%d", digit);
num /= 10;
}
printf("
");
return 0;
}
```
代码说明:
输入处理:
程序首先提示用户输入一个不多于5位的正整数,并使用`scanf`函数读取该整数。
计算位数:
通过一个`while`循环计算输入整数的位数。
输出位数:
打印出输入整数的位数。
输出每一位数字:
通过另一个`while`循环,从个位到最高位依次输出每一位数字。
逆序输出:
再次通过一个`while`循环,从最高位到个位逆序输出每一位数字。
注意事项:
程序中使用了`abs`函数来处理负数的情况,确保无论输入是正数还是负数,都能正确计算位数和逆序输出。
程序假设用户输入的是一个有效的整数,未进行详细的输入验证。在实际应用中,可能需要添加更多的错误处理机制。