2011-04-21 174 views
1

当我运行程序时,它结束了平均值,但它不会循环!有谁看到我做错了,我指出了正确的方向循环不工作

#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 
+1

使用4位代码的每个语句之前,或只选择整个代码,点击'{}'本编辑器选项卡上。 – Mahesh 2011-04-21 06:48:42

+0

为什么你需要'calcAverage'中的三个参数,就像这个'double calcAverage(double&score1,double&score2,double&score3);'但是给出这样一个参数'calcAverage(avg);'?我不是一个C++的男孩我很抱歉,如果我问的是noob.Also我认为你应该在(平均!= -1)' – Bastardo 2011-04-21 06:52:57

+0

(平均!= -1)之后移除';':不要直接比较浮点数(请参阅http://how-to.wikia.com/wiki/Howto_compare_floating_point_numbers_in_the_C_programming_language) – stefaanv 2011-04-21 07:08:44

回答

7

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

4

您有returnwhile块。返回将停止一切,包括循环。只有Python(AFAIK)允许循环返回并使其循环。

0

@Katie:你的代码是否可以编译?你的calcAverage(平均);函数调用与您定义它的方式不同。你忘了添加代码重载函数与(同名)签名calcAverage(双)?

顺便说一句,在while()之后删除分号并且它可能正常运行。在你检查我的问题之后试试这个。

0

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

avg = calcaAverage(1,2,3)