循环不工作

时间:2011-04-21 06:43:58

标签: c++ visual-c++

当我运行该程序时,它最终将其平均但它不会循环!有没有人看到我做错了什么,并指出我正确的方向

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

//function prototypes 

void getTestScores(double &score1, double &score2, double &score3); 
double calcAverage(double &score1, double &score2, double &score3); 
void displayAverage(double avg);

int main() 
{   
    //declare variables
    double score1 = 0.0; 
    double score2 =0.0;     
    double score3 = 0.0; 
    double avg    = 0.0;

    //display average in fixed-point notation   
    getTestScores(score1,score2,score3);    
    calcAverage(avg);
    displayAverage(avg); 

    //enter scores
    while (avg != -1 ); 
    {
        cout << "score 1 (negative number to stop): ";
        cin >> score1;
        cout << "Enter score 2(negative number to stop): ";
        cin >> score2;
        cout << "Enter score 3(negative number to stop): ";
        cin >> score3;

        calcAverage(score1, score2, score3);
        displayAverage(avg); 

        return 0;
    }
} //end of main function

//*****function prototypes***** 
void getTestScores(double &score1, double &score2, double &score3) 
{
   cout << "Enter score 1(negative numberto stop): ";
   cin >> score1;
   cout << "Enter score 2(negative number to stop): ";
   cin >> score2;
   cout << "Enter score 3(negative number to stop): ";
   cin >> score3;
}  //end

double calcAverage (double &score1, double &score2, double &score3)
{
    double average = 0.0; 
    average = calcAverage(score1, score2, score3);

    return average;
} //end of clacAverage

void displayAverage(double avg)     
{
    cout << fixed << setprecision(1);
    cout << "Average: " << avg << endl;
} //end

4 个答案:

答案 0 :(得分:7)

while()循环后有一个分号。尝试删除它。

答案 1 :(得分:4)

return阻止了while。返回会停止一切,包括循环。只有Python(AFAIK)允许循环返回并让它循环。

答案 2 :(得分:0)

@Katie:您的代码甚至可以编译吗?您的calcAverage(平均);函数调用与您定义它的方式不同。您是否忘记使用(同名)签名calcAverage(double)???

为重载函数添加代码

BTW,在while()之后删除分号,它可能运行正常。检查上面的问题后试试这个。

答案 3 :(得分:0)

返回将结束循环并将控制返回到调用函数的位置。 此外,你似乎没有在循环体中再次初始化avg?你返回平均但不存储它 应该是

avg = calcaAverage(1,2,3)