【问题标题】:while repeat not stop after i input one time在我输入一次后重复不会停止
【发布时间】:2021-10-04 16:36:48
【问题描述】:

如何让我的程序不停地重复?我希望它继续要求我为多个学生输入相同的信息。并且在我输入一次后不会停止。 有人可以帮忙吗?我真的很感激所有的帮助谢谢你们。

enter code here

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
    int midterm=0;
    int final=0;

    cout << "please enter midterm grade: ";
    cin >> midterm;
    while (midterm < 0 || midterm > 200)
    {
        cout << "Please enter valid amount must be 0 or greater or 200 or less. please enter grade: ";
        cin >> midterm;
    }
    cout << "please enter final grade: ";
    cin >> final;
    while (final < 0 || final > 200)
    {
        cout << "Please enter valid amount must be 0 or greater or 200 or less. Please enter grade";
        cin >> final;
    }

    int total;
    total = final + midterm;

    if (total > 360 && total <= 400)
    {
        cout << "your letter grade is A";
    }
    else if (total > 320 && total <= 360)
    {
        cout << "your letter grade is B";
    }
    else if (total > 280 && total <= 320)
    {
        cout << "your letter grade is C";
    }
    else if (total > 240 && total <= 280)
    {
        cout << "your letter grade is D";
    }
    else if (total <= 240)
    {
        cout << "your letter is F";
    }
}

【问题讨论】:

  • 围绕你已有的所有代码添加一个循环?
  • 如果您将main 函数中的所有代码提取出来,并将其放入您调用的单独函数中,也会变得容易得多。围绕该单个调用添加循环可能对您来说更容易。

标签: c++ while-loop


【解决方案1】:

将整个代码放入一个永不停止的循环中。

例子:

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
    while(true) {
        int midterm=0;
        int final=0;
    
        cout << "please enter midterm grade: ";
        cin >> midterm;
        while (midterm < 0 || midterm > 200)
        {
            cout << "Please enter valid amount must be 0 or greater or 200 or less. please enter grade: ";
            cin >> midterm;
        }
        cout << "please enter final grade: ";
        cin >> final;
        while (final < 0 || final > 200)
        {
            cout << "Please enter valid amount must be 0 or greater or 200 or less. Please enter grade";
            cin >> final;
        }
    
        int total;
        total = final + midterm;
    
        if (total > 360 && total <= 400)
        {
            cout << "your letter grade is A";
        }
        else if (total > 320 && total <= 360)
        {
            cout << "your letter grade is B";
        }
        else if (total > 280 && total <= 320)
        {
            cout << "your letter grade is C";
        }
        else if (total > 240 && total <= 280)
        {
            cout << "your letter grade is D";
        }
        else if (total <= 240)
        {
            cout << "your letter is F";
        }
        cout << "\n";
    }
}

这个问题之前也有人问过并回答过:How do I make my code Repeat instead of ending in c++?

【讨论】:

  • 请注意,“将整个代码放入一个永不停止的循环中”建议不是一个好主意,因为无限循环会使程序具有未定义的行为。
  • 他的建议奏效了,那么您的评论有何意义?
  • @ColtonGil 它工作的外观是程序具有未定义行为但不应依赖它的一种可能结果。
  • @TedLyngmo 我认为你有一个很好的机会来向我们展示如何创建一些可以满足要求的东西,同时又没有未定义的行为。
  • @Veda 唯一需要的是程序有办法摆脱循环。在这种情况下,if(!(cin &gt;&gt; midterm)) break; 就足够了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-27
  • 2018-06-09
  • 2022-12-09
  • 2020-02-09
相关资源
最近更新 更多