void Student::peach(char ch)//查询函数
{
if(ch=stu[i].ID)
cout<<"此学生数学成绩为"<cout<<"此学生英语成绩为"< cout<<"此学生C++成绩为"< cout<<"此学生平均成绩为"< }//这个函数改成
void Student::peach(char ch[])//查询函数
{
if(strcmp(ch,stu[i].ID)==0)//比较字符串大小不能用==要用strcmp()函数
{
cout<<"此学生数学成绩为"<cout<<"此学生英语成绩为"< cout<<"此学生C++成绩为"< cout<<"此学生平均成绩为"< }
}
#include
#include
using namespace std;
struct Student
{
char ID[20];
char name[20];
char sex[10];
double gradea;
double pointa;
double gradeb;
double pointb;
double gradec;
double pointc;
double average;
void Set();
double ave();
void apple();
bool peach(char* ch);//这里改为char*
};
void Student::Set()//输入函数
{
cin>>ID>>name>>sex>>gradea>>pointa>>gradeb>>pointb>>gradec>>pointc;
}
double Student::ave()//平均数函数
{
double averagea;
averagea=(gradea*pointa+gradeb*pointb+gradec*pointc)/(pointa+pointb+pointc);
average=averagea;
return averagea;
}
void Student::apple()//完整成绩单
{
cout<<"学生学号为"<cout<<"学生姓名为"< cout<<"学生性别为"< cout<<"数学成绩"< cout<<"数学学分"< cout<<"英语成绩"< cout<<"英语学分"< cout<<"C++成绩"< cout<<"C++学分"< cout<<"平均成绩为"< }
bool Student::peach(char* ch)//这个函数改为如下
{
if(strcmp(ch,ID)==0){
cout<<"此学生数学成绩为"<cout<<"此学生英语成绩为"< cout<<"此学生C++成绩为"< cout<<"此学生平均成绩为"< return true;
}
return false;
}
int main()
{
int i=0;
char a[5];
Student stu[5];
for (;i<5;i++)
{
cout<<"依次输入第"< stu[i].Set();
stu[i].ave();
}
i=0;
cout<<"完整数据表为"<for(;i<5;i++)
{
stu[i].apple();
}
cout<<"查询系统"<cout<<"输入学号用以查询"< char one[20];
cin>>one;
i=0;
for(;i<5;i++)
{
if(stu[i].peach(one)== true) break;//这里改为这样才有效
}
if (i=5)
cout<<"查无此人"<return 0;
}
改了:
bool peach(char* ch);//这里改为char*
bool Student::peach(char* ch)//这个函数改为如下
{
if(strcmp(ch,ID)==0){
cout<<"此学生数学成绩为"<
}
return false;
}
if(stu[i].peach(one)== true) break;//这里改为这样才有效
三个地方
字面意思是重载函数没有找到student
下面的一个是函数不能1个参数
你的函数声明那里:void peach();这里面没有参数
而你下面的是有参数的。
Student里边的函数peach声明时没有参数,而你定义的时候写了参数。改法:把Student里边的声明改为void peach(char ch);