编写一个程序来处理一个不多于5位的正整数,可以按照以下步骤进行:
输入一个不多于5位的正整数
使用 `scanf` 函数读取用户输入的整数。
通过计算整数的位数来确定它是几位数。
分别输出每一位数字
使用整数除法和取余操作来提取每一位数字,并输出。
按逆序输出各位数字
将提取出的每一位数字存储在一个数组中,然后逆序输出。
```c
include
void print_digits(int num) {
int a, b, c, d, e;
int place = 0;
if (num >= 10000) place = 5;
else if (num >= 1000) place = 4;
else if (num >= 100) place = 3;
else if (num >= 10) place = 2;
else place = 1;
printf("输入数的位数是: %d\n", place);
printf("每位数字为:\n");
e = num / 10000;
d = (num - e * 10000) / 1000;
c = (num - e * 10000 - d * 1000) / 100;
b = (num - e * 10000 - d * 1000 - c * 100) / 10;
a = (num - e * 10000 - d * 1000 - c * 100 - b * 10);
switch (place) {
case 5:
printf("%d,%d,%d,%d,%d\n", e, d, c, b, a);
break;
case 4:
printf("%d,%d,%d,%d\n", d, c, b, a);
break;
case 3:
printf("%d,%d,%d\n", c, b, a);
break;
case 2:
printf("%d,%d\n", b, a);
break;
case 1:
printf("%d\n", a);
break;
}
}
int main() {
int num;
printf("请输入一个不多于5位的正整数: ");
scanf("%d", &num);
print_digits(num);
return 0;
}
```
代码解释:
输入部分
`printf("请输入一个不多于5位的正整数: ");` 提示用户输入一个整数。
`scanf("%d", &num);` 读取用户输入的整数。
计算位数
通过一系列条件判断来确定输入整数的位数,并存储在变量 `place` 中。
输出每一位数字
使用整数除法和取余操作提取每一位数字,并使用 `switch` 语句根据位数进行输出。
按逆序输出各位数字
如果输入的整数是5位数,可以直接按逆序输出每一位数字。
对于其他位数的整数,可以先提取所有数字存储在数组中,然后逆序输出。
这个程序可以处理1到99999之间的整数,并按顺序或逆序输出它们的每一位数字。