你的代码之所以无法处理含有0的四位整数,是因为在计算过程中使用了
m%10>0这一条件来判断循环是否结束。当输入的整数含有末位为0时,这个条件始终满足,导致循环无法结束,使得程序陷入死循环。
为了解决这个问题,我们可以修改循环的条件判断。具体来说,可以将
m%10>0改为
m>0,这样只要输入的整数不等于0,循环就会一直执行下去,直到所有的位数上的数字都被累加到变量
zhi中。
以下是代码示例:
- #include <iostream>
- using namespace std;
- int main()
- {
- int m;
- int zhi = 0;
- cout << "请输入一个四位整数:";
- cin >> m;
- while (m > 0) {
- zhi += m % 10; // 将当前位的数字累加到 zhi 变量中
- m /= 10; // 将 m 的值除以 10,以便处理下一位数字
- }
- cout << "各个数位上数值之和为" << zhi << endl;
- return 0;
- }
复制代码
在上述代码中,我们用
m>0代替了原先的
m%10>0作为循环的条件判断。同时,在每次循环中,使用
m%10来提取当前位上的数字,并将其累加到变量
zhi中。最后,我们将
m除以10,以便在下一次循环中处理下一位数字。
希望这个解决方案对你有所帮助!
球一个最佳答案谢谢啦!这对我非常重要!

