C++程序设计 (第三版) 谭浩强 习题9.5
习题 9.5 建立一个对象数组,内放5个学生的数据(学号、成绩),设立一个函数max,用指向对象的指针作函数参数,在max函数中找出5个学生中成绩最高者,并输出其学号。
IDE工具:VS2010
Note: 使用不同的IDE工具可能有部分差异。
代码块:
#include <iostream>
#include <iomanip>
using namespace std;
const int N = 5;
class Student{
public:
Student(int n = 0, double s = 0.0): num(n), score(s){}
void input();
void display();
friend void max(Student *, int);
private:
int num;
double score;
};
void Student::input(){
cout<<"Enter Student Number(100 ~ 999): ";
cin>>num;
while(num < 100 || num > 999){
cout<<"Number Error! Retry!\nEnter Student Number(100 ~ 999): ";
cin>>num;
}
cout<<"Enter Student Score(0 ~ 100): ";
cin>>score;
while(score < 0 || score > 100){
cout<<"Score Error! Retry!\nEnter Student Score(0 ~ 100): ";
cin>>score;
}
cout<<endl;
}
void Student::display(){
cout<<setiosflags(ios::right);
cout<<"Number: "<<setw(3)<<num<<" Score: "<<setiosflags(ios::fixed)<<setprecision(2)<<setw(3)<<score<<endl<<endl;
}
void max(Student *stu , int n){
double max = stu[0].score;
int sign;
for(int i = 0; i < n; i++){
if(stu[i].score > max){
max = stu[i].score;
sign = i;
}
}
cout<<"High Score Student Info:"<<endl;
cout<<"Number: "<<setw(3)<<stu[sign].num<<" Score: "<<setiosflags(ios::fixed)<<setprecision(2)<<setw(3)<<stu[sign].score<<endl<<endl;
}
int main(){
Student *stu = new Student[N];
for(int i = 0; i < N; i++){
cout<<"Enter No."<<i + 1<<" Student Info:"<<endl;
stu[i].input();
}
max(stu, N);
delete[] stu;
system("pause");
return 0;
}