我对编程很陌生。我遇到了这个我无法弄清楚的错误。您应该能够输入一个分数,它将使用预先放入数组中的信息,并告诉您有多少学生获得该分数。
我得到的错误信息是:
1>------ Build started: Project: Ch11_27, Configuration: Debug Win32 ------
1>Build started 4/4/2013 1:17:26 PM.
1>InitializeBuildStatus:
1> Touching "Debug\Ch11_27.unsuccessfulbuild".
1>ClCompile:
1> main.cpp
1>main.obj : error LNK2019: unresolved external symbol "void __cdecl checkScore(int * const,int * const)" (?checkScore@@YAXQAH0@Z) referenced in function _main
1>F:\a School Stuff TJC Spring 2013\Intro Prog\C++ Projects\Ch11_27\Debug\Ch11_27.exe : fatal error LNK1120: 1 unresolved externals
1>
1>Build FAILED.
这是我的代码:
//Advanced27.cpp - displays the number of students
//earning a specific score
//Created/revised by <your name> on <current date>
#include <iostream>
using namespace std;
//Function Prototypes
void checkScore( int scores[], int storage[]);
int main()
{
//declare array
int scores[20] = {90, 54, 23, 75, 67, 89, 99, 100, 34, 99,
97, 76, 73, 72, 56, 73, 72, 20, 86, 99};
int storage[4] = {0};
char answer = ' ';
cout << "Do you want to check a grade? (Y/N): ";
cin >> answer;
answer = toupper(answer);
while (answer = 'Y')
{
checkScore(scores, storage);
cout << "Do you want to check a grade? (Y/N): ";
cin >> answer;
answer = toupper(answer);
}
system("pause");
return 0;
} //end of main function
//*****Function Defenitions*****
void checkGrade(int scores[], int storage[])
{
int temp = 0;
int earnedScore = 0;
cout << "Enter a grade you want to check: ";
cin >> earnedScore;
for (int sub = 0; sub <= 20; sub +=1)
{
if (scores[sub] = earnedScore)
{
storage[temp] += 1;
}
}
}
答案 0 :(得分:4)
问题是您的函数定义的名称与函数声明的名称不同:
void checkScore( int scores[], int storage[]);
void checkGrade(int scores[], int storage[])
你需要选择一个或另一个。编译器接到您对checkScore
的调用,并发现它没有定义。更改要调用的checkScore
定义会修复它。
答案 1 :(得分:3)
你的函数checkGrade()
下面的main() - 函数应该被称为void checkScore( int scores[], int storage[])
答案 2 :(得分:1)
这意味着您声明要命名为checkScore
的函数,但您定义了要命名为checkGrade
的函数。然后当main()
尝试调用checkScore
时,编译器会说“好了,上面已经声明了。即使我找不到它,我也会允许它。它可能在不同的库或源文件中。 ”。然后链接器负责找到它。由于链接器找到checkGrade
但找不到checkScore
,因此链接器会抛出错误,指出未定义的引用(main()
引用checkScore
而不是checkGrade
)。
答案 3 :(得分:0)
看来你宣布了你的功能
void checkScore( int scores[], int storage[]);
但实际上没有定义它(给它一个函数体)。 定义您的功能,如
void checkScore( int scores[], int storage[]){
}
让这个错误消失。