#include<iostream> #include<string> using namespace std; class Student { private: int sno; string name; int grade; public: Student (int s,string n,int g) { sno = s; name = n; grade = g; } friend void display(Student*p); }; void display(Student *p) { int i; for(i = 0;i <= 4;i++) cout <<(*(p+i)).sno<<""<<(*(p+i)).name<<""<<(*(p+i)).grade<<endl; int max,min; max = min =(*p).grade; for(i=1;i<=4;i++) { if((*(p+i)).grade>max) max = (*(p+1)).grade; } for(i=0;i<=4;i++) { if((*(p+i)).grade==max) cout<<"最高分的姓名为:"<<(*(p+i)).name<<endl; } for(i=1;i<=4;i++) { if((*(p+i).grade<min) min=(*(p+i)).grade; } for(i=0;i<=4;i++) { if((*(p+i)).grade==min) cout<<"最低分的姓名为:"<<(*(p+1)).name<<endl; } } int main() { Student s[5]={Student(001,"何小鹏",100),Student(002,"严炜斌",80),Student(003,"欧君成",70),Student(004,"向恺乐",90),Student(005,"陶顺",85)} display(s); return 0; }找出代码错误
时间: 2023-12-02 15:05:15 浏览: 63
代码错误如下:
1. 在display函数的第一个for循环中,循环条件应该是i<5,而不是i<=4,否则只会输出前四个学生信息。
2. 在display函数中,第一个for循环和第二个for循环之间应该有一个空行,以提高代码的可读性。
3. 在display函数中,第一个for循环中输出学生信息的语句中,应该在每个数据之间加上一个空格。
4. 在display函数中,第二个for循环中判断最高分的语句中,应该是max = (*(p+i)).grade,而不是max = (*(p+1)).grade,否则会出现计算错误。
5. 在display函数中,第四个for循环中判断最低分的语句中,少了一个右括号,应该是(*(p+i)).grade<min)。
修改后的代码如下:
```
#include<iostream>
#include<string>
using namespace std;
class Student {
private:
int sno;
string name;
int grade;
public:
Student(int s, string n, int g) {
sno = s;
name = n;
grade = g;
}
friend void display(Student*p);
};
void display(Student *p) {
int i;
for(i = 0; i < 5; i++) {
cout << (*(p+i)).sno << " " << (*(p+i)).name << " " << (*(p+i)).grade << endl;
}
cout << endl;
int max, min;
max = min = (*p).grade;
for(i = 1; i < 5; i++) {
if((*(p+i)).grade > max)
max = (*(p+i)).grade;
}
for(i = 0; i < 5; i++) {
if((*(p+i)).grade == max)
cout << "最高分的姓名为:" << (*(p+i)).name << endl;
}
for(i = 1; i < 5; i++) {
if((*(p+i)).grade < min)
min = (*(p+i)).grade;
}
for(i = 0; i < 5; i++) {
if((*(p+i)).grade == min)
cout << "最低分的姓名为:" << (*(p+i)).name << endl;
}
}
int main() {
Student s[5] = {
Student(001,"何小鹏",100),
Student(002,"严炜斌",80),
Student(003,"欧君成",70),
Student(004,"向恺乐",90),
Student(005,"陶顺",85)
};
display(s);
return 0;
}
```
阅读全文