对我的do-while循环程序感到困惑

时间:2015-04-16 02:03:45

标签: c++ loops for-loop while-loop

我应该写代码,我要问学生3个测试分数在1到100之间,如果它显示的数字超出该范围,它应该显示无效,否则,我会显示学生的平均值和字母等级。我有两个程序组合的问题,以使这个程序工作,这是两部分:

第1部分:

char grade;
double Test_1,Test_2,Test_3,Avg;
cout<<"Please enter your three test scores";
cin>>Test_1>>Test_2>>Test_3;
Avg=((Test_1+Test_2+Test_3)/3.0);
if(Avg<65)
{
    grade= 'F';
}
else if(Avg<70)
{
    grade= 'D';
}
else if(Avg<80)
{
    grade= 'C';
}
else if(Avg<90)
{
    grade= 'B';
}
else
{
    grade='A';
}

第2部分:

//Program to compute and display the average and appropriate letter grade of     
3 test scores

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

int main()
{
    double Test_1,Test_2,Test_3,ClassAvg1,ClassAvg2,ClassAvg3;
    int sumTest_1,sumTest_2,sumTest_3;
    int n;
    sumTest_1=0=sumTest_2=sumTest_3;
    const int totalSum=5.0;
    for(n=1;n<=5;n++)
    {
        do
        {
            cout<<"What are the three test scores for student #"<<n;
            cin>>Test_1>>Test_2>>Test_3;
        }
        while(Test_1<1||Test_1>100||Test_2<1||Test_2>100||Test_3<1||Test_3>100);
        {
            sumTest_1=sumTest_1+Test_1;
            sumTest_2=sumTest_2+Test_2;
            sumTest_3=sumTest_3+Test_3;
            ClassAvg1=sumTest_1/5.0;
            ClassAvg2=sumTest_2/5.0;
            ClassAvg3=sumTest_3/5.0;
        }
    }
}

2 个答案:

答案 0 :(得分:1)

代码中唯一的错误是这一行:

sumTest_1=0=sumTest_2=sumTest_3;

应该是:

sumTest_1=sumTest_2=sumTest_3=0;

使用||你的工作条件没问题操作员,因为条件(Test_1&lt; 1&amp;&amp; Test_1&gt; 100)将始终是错误的并且永远不会离开循环。你不能同时拥有一个小于1且大于100的数字,你可以吗?

答案 1 :(得分:0)

while循环的条件有误。您必须使用&&运算符而不是|| -

do{
   //your code
}while( (Test_1<1 || Test_1>100) && (Test_2<1 ||Test_2>100) && (Test_3<1 || Test_3>100) );