错误 C4700:使用未初始化的局部变量'lowest'

error C4700: uninitialized local variable 'lowest' used

本文关键字:局部变量 lowest 初始化 C4700 错误      更新时间:2023-10-16

我有个问题想不通。我对编程有点陌生。这是我写的代码。这是我得到的错误"错误C4700:使用了未初始化的局部变量'lowest'"我不确定如何修复它。我也确信有更好的方法来编写这个程序,但这是我必须遵循的要求。我该如何修复我得到的错误?

#include "stdafx.h"
#include "iostream"
#include <iomanip>
using namespace std;
//Function prototypes
void getScore(int &score);
int findLowest(int score1, int score2, int score3, int score4, int score5, int &lowest);
void calcAverage(int score1, int score2, int score3, int score4, int score5);

int main ()
{
cout<<"Average with Lowest Score Drop by Johnn"<<endl; 
int score1, 
    score2, 
    score3, 
    score4, 
    score5,
    lowest;
    getScore(score1);
    getScore(score2);
    getScore(score3);
    getScore(score4);
    getScore(score5);
    calcAverage(score1, score2, score3, score4, score5);

    cin.get();
    cin.get();
return 0;
}
void getScore(int &score)
{
cout << "Please enter 5 test scores between 1 and 100): ";
cin >> score;
while (score <= 0 || score >= 100)
{
    cout << "Enter a score values of 0 to 100";
    cin >> score;
}
}
int findLowest(int score1, int score2, int score3, int score4, int score5, int &lowest)
{
lowest = score1;
if (score2 < lowest)
    lowest = score2;
else if (score3 < lowest)
    lowest = score3;
else if (score4 < lowest)
    lowest = score4;
else if (score5 < lowest)
    lowest = score5;
cout << "The lowest test score is " << lowest << endl;
return lowest;
}
void calcAverage (int score1, int score2, int score3, int score4, int score5)
{
int findLowest(int, int, int, int, int, int);
int lowest;
double average;
 findLowest(score1, score2, score3, score4, score5, lowest);

average = (((float)score1 + score2 + score3 + score4 + score5) - lowest) / 4.0;
//cout << setw(4);
cout << fixed << showpoint << setprecision(2);
cout <<" With the grade "<<lowest<< " dropped"<<"The average of test scores entered is: " << average << endl;
} 

calcAverage内的findLowest原型缺少&:

void calcAverage (int score1, int score2, int score3, int score4, int score5)
{
    int findLowest(int, int, int, int, int, int&);
    //                                         ^
    ....
}

实际上,您不需要那个原型,因为在main函数之前已经有了相同的原型。

我刚刚偶然发现了你的问题。答案似乎显而易见。看看你的最后几行:`void calcAverage(int score1,int score2,int score 3,int scores 4,int scored 5)

{
int findLowest(int, int, int, int, int, int);
int lowest;
double average;
 findLowest(score1, score2, score3, score4, score5, lowest);

average = (((float)score1 + score2 + score3 + score4 + score5) - lowest) / 4.0;
//cout << setw(4);
cout << fixed << showpoint << setprecision(2);
cout <<" With the grade "<<lowest<< " dropped"<<"The average of test scores entered is: " << average << endl;
} `

这里int lowest没有被初始化。尝试编写int lowest(0);或类似的初始值,以满足您的需求。