做循环不工作

时间:2015-11-16 23:11:41

标签: c++

我已经回收了一项作业,以便在课堂上进一步练习和发展我的编程技巧,而且我在另一个Do While循环中遇到了3 DO WHILE循环的问题。

我试图拒绝test1,2和3的小于1且大于100的测试分数。 我遇到循环没有处理我为Test1 / 2/3输入的内容。它允许超出while范围的值通过。是否有人可以建议或看到我可能做错了什么?提前谢谢你们!

    #include<iostream>
    #include<cmath>
    #include<iomanip>
    using namespace std;
    double computeavg (int a, int b, int c);
    char lettergrade (double z);

    int main ()
    {



    double test1, test2, test3, average; //test1/2/3, test scores, Average:         average of test scores
    double tottest1=0, tottest2=0, tottest3=0, avg1, avg2, avg3; //tottest# - sum of test grades collected for that number test, avg# average for first         second or third test
    int student=0, avgvar; //average variable, Student number
    char grade, ans; // Holds a letter grade, holds a response to a question

    do{
    student=student+1;
        cout<<"Hello Student #"<<student<<endl;
        do{

        cout<<"Please input test 1 Grade ";
            cin>> test1;
        }   
        while(test1>=1||test1<=100);

        do{

        cout<<"Please input test 2 Grade ";
            cin>> test2;
        }   
        while(test2>=1||test2<=100);

        do{

        cout<<"Please input test 3 Grade ";
            cin>> test3;
    }
        while(test3>=1||test3<=100);        
    average=computeavg (test1, test2, test3);

        cout<<setprecision(0)<<fixed;
        cout<<"Your Average is: "<<average<<endl;

    tottest1=tottest1+test1;
    tottest2=tottest2+test2;
    tottest3=tottest3+test3;

    grade = lettergrade(average);

        cout << "Your grade is " << grade << endl;

            cout<<"Do you want to grade another student? (y/n)";
            cin>>ans;
        cout<<"\n";
    } while(ans=='y');

2 个答案:

答案 0 :(得分:0)

我认为您需要更改do,如下所示:

做{

    cout<<"Please input test 1 Grade ";
        cin>> test1;
    }   
    while(test1<1||test1>100);

答案 1 :(得分:0)

你的条件落后了。仔细看:while(test3>=1||test3<=100)所有数字至少满足条件的一部分。例如,-4不大于或等于1,但 小于或等于100,并且因为您的条件与||运算符连接,即< em>或运算符,条件的计算结果为true。

您需要更改条件。这是作业,所以我不会准确地告诉你应该使用什么条件。

您可以使用调试器自行发现此问题。您也可以通过手动仔细浏览您的程序来发现它。获取铅笔和一些纸张,并记下变量的当前值。跟踪您所处的指示,然后按计划进行操作。变量更改时,将其旧值删除并记下新值。最终,你能够在脑海中做到这一点,但是当你正在学习时,将其写下来会有所帮助。