【问题标题】:Multiple input in for loopfor循环中的多个输入
【发布时间】:2019-12-13 19:13:40
【问题描述】:

我必须用 C++ 编写一个程序,用户输入一个数字 N,然后在第二行输入与 N 一样多的数字,仅此而已。输出应该是输入数字中所有正数的总和。 我必须使用 for 循环。到目前为止,我们还没有涉及太多,只有 if 语句。

我尝试的代码只给出了正数的总和,但我不能让程序使用 N 个输入并停止。它要么只计算一个,要么只要用户输入数字就继续。

 #include <iostream>
using namespace std;

int main ()
{
    int n, sum=0;
    cin>> n;
    cout<<endl;
    cout<<"Enter numbers"<<endl;
    for (int i=1; i<=n; i++)
    {
        cin>>i;
        if(i>0)
    {sum=sum+i;
    }
 cout<<sum<<endl;
    }


    return 0;
}

【问题讨论】:

  • 你为什么使用同一个变量,作为cin&gt;&gt;i;中的循环计数器?为什么不使用不同的变量来读取值?
  • 代码在这里工作得很好:wandbox.org/permlink/naZfBzsuB3Hj3itO
  • 不相关:更喜欢 for (int i=0; i&lt;n; i++) 而不是 for (int i=1; i&lt;=n; i++),因为 C++ 中的所有内容都从 0 开始并运行到 n-1。强制 origin 1 索引会导致很多问题。

标签: c++ loops for-loop input


【解决方案1】:

问题在于您使用相同的变量 (i) 进行循环和输入。

for (int i=1; i<=n; i++)
{
        cin>>i;

cin&gt;&gt;i 中输入的任何内容都会破坏程序的逻辑。添加一个单独的输入变量并保留您的 i 用于循环。

例子:

#include <iostream>

int main() {
    int n, sum = 0;
    std::cout << "How many numbers do you want to enter? \n";
    std::cin >> n;
    std::cout << std::endl;

    std::cout << "Enter numbers: \n";
    for(int i = 1; i <= n; i++) {
        std::cout << i << ": ";

        int input;
        if(std::cin >> input) {
            if(input > 0) {
                sum = sum + input;
            }
            std::cout << sum << std::endl;
        } else
            break; // user failed to enter a number
    }
}

【讨论】:

  • 当我说“无论输入什么......”我的意思是“只有一个数字不会破坏逻辑你的程序,它在每次迭代中都有 i 的值“ -​​ 我希望这是有道理的。
  • 谢谢!我想我明白了。我是初学者,我们在学校学习这个,数学高中,这东西五年级不容易。我们每周只有两小时,还不够。
  • @Imemi 不客气!很高兴你在 5 年级学习这个!它永远不会停止有趣,保证! (......和往常一样,免责声明:有关于喜欢编程的人的谣言现在不 - 谣言)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-29
  • 1970-01-01
  • 1970-01-01
  • 2016-09-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多