C++程序打印数字总和

问题描述

//打印数字和的程序

#include <iostream>
using namespace std;

int main()
{
    int n,m,sum = 0;
    cin >> n;             
   for(int i = 0; i < n; i++)
    {
        m = n % 10;     
        sum += m;      
        n = n / 10;    
    }
    cout << sum;
}

    //Outputs
    
   // Input = 123
   // Output = 5 (should be 6)
    
   // Input = 0235
   // Ouput = 8 (should be 9)

输入no时不打印正确答案。从 1 或 0 开始。

通过使用 While (n>0),它提供了正确的输出,但我不知道为什么?

解决方法

对于初学者,用户可以输入负数,因为变量 n 的类型是有符号类型 int

因此两者都不循环

for(int i = 0; i < n; i++)

while (n>0)

将是正确的。

正确的循环看起来像

while ( n != 0 )

并且您需要将获得的每个数字转换为非负值,或者您应该对变量 n 使用无符号整数类型。

至于这个循环

for(int i = 0; i < n; i++)

那就完全没有意义了。

例如让我们假设 n 最初等于 123

在这种情况下,在循环的第一次迭代中,循环的条件看起来像

0 < 123

在循环的第二次迭代中,它看起来像

1 < 12

在循环的第三次迭代中,它看起来像

2 < 1

这意味着不会执行循环的第三次迭代。

因此,只要数字的最后一位数字小于或等于索引 i 的当前值,循环就会停止其​​迭代并且不会处理该数字。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...