我不断收到“对“ x”的未定义引用”,其中x是函数原型。我已经规划了功能,但是主要功能仍然需要工作。我只想在按下ld之前修复ld返回错误1,但我似乎无法指出问题所在。
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
//Symbolic Constants
const int MAX=11;
//Function Prototypes
int buildQuizArray(int);
void printArray(string,int,int);
double calcQuizAverage(int,int);
void sortArray(int,int);
int main ()
{
int quizScores[MAX];
int compQuiz;
int tempArray[MAX];
int average;
compQuiz = buildQuizArray(quizScores[MAX]);
quizScores[MAX]=tempArray[MAX];
average = calcQuizAverage(quizScores[MAX], compQuiz);
cout<<endl<<"Your quiz average is "<<average<<endl;
printArray ("Quiz Scores", tempArray[MAX], compQuiz);
sortArray(tempArray[MAX], compQuiz);
}
int buildQuizArray(int quizArray[])
{
int numQuiz, input, a;
a=0;
numQuiz=1;
cout << "Enter your score for quiz "<<numQuiz<<" (-1 to quit): ";
cin >> input;
while (input != -1)
{
quizArray[a] = input;
a++;
numQuiz++;
cout<< "Enter your score for quiz "<<numQuiz<<" (-1 to quit): ";
cin >> input;
}
return a+1;
}
void printArray(string reportTitle, int quizArray[], int numberOfQuizzes)
{
int a;
cout<< reportTitle <<endl<<"-----------"<<endl;
for (a=0; a<numberOfQuizzes; a++)
{
cout<< "Quiz " << a <<": " << setw(2) <<quizArray[a] <<"/10"<<endl;
}
}
double calcQuizAverage(int quizArray[], int numberOfQuizzes)
{
int sum, lowSum, avg, a;
a = 0;
sum = 0;
lowSum = quizArray[0] + quizArray[1];
for (a=0; a< numberOfQuizzes; a++)
{
sum += quizArray[a];
}
if (numberOfQuizzes <= 2)
{
avg = sum / (10 * numberOfQuizzes) * 100;
}
else
{
(sum - lowSum) / (10 * (numberOfQuizzes - 2)) * 100;
}
return avg;
}
void sortArray(int quizArray[], int numberOfQuizzes)
{
int min, a, b, temp;
for (a=0; a<numberOfQuizzes; a++)
{
min = a;
}
for(b=a+1; b<numberOfQuizzes; a++)
{
if (quizArray[a] < quizArray[min])
{
min = b;
}
}
temp = quizArray[a];
quizArray[a]=quizArray[min];
quizArray[min]=temp;
}
您声明:
int buildQuizArray(int);
但您定义:
int buildQuizArray(int quizArray[]) ...
int[]
与相同int
。
另外:int
调用它们时,您正在传递一个给函数。请注意,例如quizScores[MAX]
是的MAXth元素quizScores
和是int
,实际上超出了该数组的末尾,并且实际上不是您想要执行的操作。
如果我不得不猜测您是如何到达这里的,那么我猜您几乎一切都正确,但是您在不知不觉中错误地声明了原型(int
而不是int[]
),因此您便[MAX]
继续使用要传递给函数的数组以获取进行编译,然后遇到不可避免的链接器问题,导致您出现在此处。如果那是您所做的,那不是正确的方法。
您真正想做的是:
对于采用数组的函数,请正确声明它们:
int buildQuizArray (int[]);
调用时将数组指针本身传递给函数:
buildQuizArray(quizScores);
保留您的声明不变,它们看起来不错(在语法上)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句