输入一个不大于整型数最大值(2147483647)的正整数,判断是几位数字,然后输出各位数字之和。如:输入21483,输出5位数,各位数字和=18。
时间: 2024-11-03 11:18:03 浏览: 20
要解决这个问题,我们可以创建一个C++程序,该程序首先读取用户输入的正整数,然后计算并打印其位数以及每一位的和。以下是一个简单的解决方案:
```cpp
#include <iostream>
#include <climits>
int main() {
int num;
std::cout << "请输入一个不超过" << INT_MAX << "的正整数:";
std::cin >> num;
// 检查输入是否合法
if (num <= 0 || num > INT_MAX) {
std::cerr << "输入错误!请确保输入的是一个正整数且不超过 " << INT_MAX << "。\n";
return 1;
}
// 计算位数
int digit_count = 0;
while (num != 0) {
digit_count++;
num /= 10;
}
// 计算每位数字之和
int sum = 0;
while (num > 0) {
int remainder = num % 10; // 取余得到当前位数
sum += remainder;
num /= 10; // 去除最低位
}
// 输出结果
std::cout << "这个数有 " << digit_count << " 位,各位数字之和为 " << sum << ".\n";
return 0;
}
```
在这个程序中,我们首先获取用户的输入,然后检查它是否在合法范围内。接着,我们用循环遍历每一位数字,每次迭代都将`num`除以10(相当于移除最低位),直到`num`变为0。同时,我们在每次循环中更新位数计数器`digit_count`和每位数字之和`sum`。最后,我们输出结果。
阅读全文