用c语言编写:给出一个不多于10位的整数,要求1:求出它是几位数 ;要求2:分别输出每一位数字;要求3:将这个整数对应的逆序的整数输出,例如原数为321,应输出123。(有实力就不要用数组!!!) 输入格式: 一个不大于10位的整数 输出格式: 共三行,第一行:位数;第二行:用空格分开的每个数字,注意最后一个数字后没有空格;第三行:按逆序输出对应的整数。 输入样例1: 12345 输出样例1: 5 1 2 3 4 5 54321 输入样例2: 1000000 输出样例2: 7 1 0 0 0 0 0 0 1
时间: 2023-06-08 09:04:26 浏览: 182
这道题可以用取模和整除来实现,不用数组。以下是可能的解法:
```
#include <stdio.h>
int main() {
int num, reversed_num = 0, digit, count = 0;
scanf("%d", &num);
// 求位数
do {
digit = num % 10;
num /= 10;
reversed_num = reversed_num * 10 + digit;
count++;
printf("%d ", digit);
} while (num != 0);
printf("\n%d\n", count); // 输出位数
// 输出逆序的整数
do {
digit = reversed_num % 10;
reversed_num /= 10;
printf("%d", digit);
if (reversed_num != 0) {
printf(" ");
}
} while (reversed_num != 0);
printf("\n");
return 0;
}
```
解释一下程序的执行流程:
1. 读入一个整数 `num`。
2. 用 `do-while` 循环去掉 `num` 的个位,并把个位存到 `digit` 中。
1. 把 `digit` 接到逆序的整数 `reversed_num` 的尾部。
2. 计数器 `count` 加一。
3. 输出 `digit`。
4. 如果 `num` 不为零,则跳回循环头继续执行,否则继续执行下面的语句。
3. 输出 `count`,即位数。
4. 用 `do-while` 循环去掉 `reversed_num` 的个位,并把个位输出,直到 `reversed_num` 变为零。在输出数字之间加上一个空格。
阅读全文