【问题标题】:C++ Nested Loop not giving me any valuesC++ 嵌套循环没有给我任何值
【发布时间】:2015-10-25 23:25:15
【问题描述】:

所以这个嵌套循环应该为每个练习生成 10 个随机分数 用户输入的学生。生成分数后,必须将它们全部相加并找到平均分数。但是,当我运行程序时,它没有给我任何值。代码如下:

int progExAvg, progExScore, studentAmt;
int counter = 0;
int progExTotal = 0;

srand(time(0));

cout << "Please enter how many students do you have in your class: ";
cin >> studentAmt;
cin.sync();

while (counter < studentAmt)
{
    for(int i = 0; i < 10; i++)
    {
        progExScore = rand() % 100 + 1;
        progExTotal = progExTotal + progExScore;
    }

    progExAvg = progExTotal / 10;



}
cout << progExAvg << endl;
return 0;

【问题讨论】:

  • 你永远不会增加counter。所以while循环永远不会终止

标签: c++ loops generator nested-loops


【解决方案1】:

你永远不会增加counter,所以它总是小于studentAmt

while (counter < studentAmt)
{
    for(int i = 0; i < 10; i++)
    {
        progExScore = rand() % 100 + 1;
        progExTotal = progExTotal + progExScore;
    }

    progExAvg = progExTotal / 10;

    counter++;

}

【讨论】:

  • 哈哈,就是这样。我现在正在恢复值,但它们太大了(刚刚为 1167)。知道还有什么问题吗?
【解决方案2】:

移动这些声明

int progExTotal = 0;
int progExTotal = 0;

还有这句话

cout << progExAvg << endl;

在while循环中

还有这个声明

int progExScore;

在for循环中

考虑到使用像 10 这样的幻数是个坏主意。最好使用有意义的名称。

你还必须增加变量计数器。例如

const int TOTAL_EXERCISES =  10;

while (counter++ < studentAmt)
{
    int progExTotal = 0;
    int progExTotal = 0;

    for(int i = 0; i < TOTAL_EXERCISES; i++)
    {
        int progExScore = rand() % 100 + 1;
        progExTotal = progExTotal + progExScore;
    }

    progExAvg = progExTotal / TOTAL_EXERCISES;

    cout << progExAvg << endl;
}

【讨论】:

  • 就像 bzhag 提醒我的那样,我增加了计数器,并且按照您的建议,我将 progExTotal 声明移到了循环内。我不再获得疯狂的高价值。非常感谢
猜你喜欢
  • 2017-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-26
相关资源
最近更新 更多