用c语言的do-while编程,输入一个正整数,求它的各位数字之和及位数。例如123的各位数字之和是6,位数是3。
时间: 2024-10-27 12:09:31 浏览: 43
在C语言中,可以使用do-while循环结合遍历每一位数字的方式,来求解这个问题。以下是相应的代码示例:
```c
#include <stdio.h>
int main() {
int num, digit_sum = 0, digit_count = 0;
char temp;
do {
// 输入正整数
printf("请输入一个正整数: ");
scanf("%1d", &temp);
num = temp; // 将字符转换成整数
// 检查输入是否合法
while (temp != '\n' && temp > '9' || temp < '0') {
printf("错误: 请输入一个正整数。请再次尝试。\n");
scanf("%1d", &temp);
}
// 计算数字和
while (num != 0) {
digit_sum += num % 10;
num /= 10;
}
// 更新位数计数器
digit_count++;
} while (temp == ' ');
printf("输入的数字 '%d' 的各位数字之和是 %d,总共有 %d 位。\n", num, digit_sum, digit_count);
return 0;
}
```
这段代码首先提示用户输入一个正整数,然后使用do-while循环读取用户的输入。在内部循环中,它先判断输入的字符是否是有效的数字,如果不是,则提示用户重新输入。接着,它将数字一位一位地提取出来累加到`digit_sum`中,并统计数字的位数`digit_count`。当输入结束(即用户输入空格),do-while循环退出。
阅读全文