C语言 键盘随意输入一个小于8位的数字,1)判断他是几位数并输出。(2)分别求出每一位数字。写出算法流程与可实现的代码。
时间: 2024-10-27 15:10:30 浏览: 3
在C语言中,你可以使用`scanf`函数获取用户输入的整数,并通过循环结构判断位数、提取每一位数字。以下是算法流程以及相应的代码实现:
算法流程:
1. 使用`scanf`读取用户的输入,存储在整型变量`num`中。
2. 判断输入的数字是否小于8位(因为题目要求)。如果大于等于8位,则提示用户重新输入。
3. 初始化一个计数器`digit_count`用于记录位数,同时初始化一个数组`digits`来存储每一位数字。
4. 当输入不为空时,对每一位进行处理:
- 使用`%d`格式说明符从`num`中取出最低位,存入`digits[digit_count]`,然后将`num`右移一位(即除以10),减少一位数。
- `digit_count`加一。
5. 循环结束后,输出每一位数字。
代码实现(C语言):
```c
#include <stdio.h>
int main() {
int num, digit_count = 0;
int digits[9]; // 预留空间给最多8位数字
// 输入验证和获取输入
while (1) {
printf("请输入一个小于8位的数字: ");
scanf("%d", &num);
if (num >= 0 && num < 10000000) { // 如果数字小于8位,跳出循环
break;
} else {
printf("数字太大,请重新输入!\n");
}
}
// 提取每一位数字
for (int i = 0; num > 0; i++, num /= 10) {
digits[i] = num % 10; // 取余得到最低位
digit_count++;
}
// 输出每一位数字
printf("输入的数字有%d位:\n", digit_count);
for (int i = 0; i < digit_count; i++) {
printf("第%d位数字:%d\n", i+1, digits[i]);
}
return 0;
}
阅读全文