用C的while语句写一个程序要求从键盘输入的一个不多于五位的正整数能输出它的位数并输出他的各位数字之和
时间: 2024-10-11 12:13:34 浏览: 26
当需要在C语言中利用while循环读取用户输入、验证输入范围,并计算正整数的位数及各位数字之和时,你可以编写如下的程序:
```c
#include <stdio.h>
#include <ctype.h> // 需要这个头文件来处理字符
int main() {
int num = 0; // 初始化数字变量
int digit_count = 0; // 记录位数
int sum = 0; // 各位数字之和
char ch;
printf("请输入一个不超过5位的正整数: ");
while ((ch = getchar()) != '\n') { // 循环直到遇到换行符
if (isdigit(ch)) { // 检查是否是数字字符
num = num * 10 + ch - '0'; // 根据ASCII码计算数值并累加
digit_count++; // 位数加一
}
}
// 确保输入的是正整数
if (digit_count > 5 || num <= 0) {
printf("输入错误,只能输入一个不超过5位的正整数。\n");
} else {
printf("输入的数字有%d位:\n", digit_count);
sum = num; // 可以直接将数字赋值给sum,因为数字本身就是其所有位的和
while (num != 0) {
sum -= num % 10;
num /= 10;
}
printf("各位数字之和是: %d\n", sum);
}
return 0;
}
```
在这个程序中,我们首先提示用户输入,然后通过`getchar()`读取字符,如果遇到非数字字符(不是数字0-9),就结束输入。接着检查位数是否超过5位以及输入是否为正数。最后,通过while循环计算各位数字之和。
阅读全文