cpp语言程序设计教程第七章的一道编程题
题目如下
按下列要求实现一个有关学生成绩的操作。
该类名为Student。
(1)每个学生的信息包含有姓名(字符数组)和成绩(int型)。
(2)共有5个学生,用对象数组表示。
(3)计算出5个学生中的最高分,并输出姓名及分数。
课后答案是这么写的:
-
-
-
class Student
-
{
-
public:
-
Student(char s[],int gr)
-
{ strcpy(name,s); grade=gr; }
-
friend void fun();
-
private:
-
char name[10];
-
int grade;
-
};
-
Student ss[5]={Student("马力",85),Student("王欣",96),Student("李明",82),
-
Student("赵亮",78),Student("张京",80)};
-
void fun()
-
{
-
int k=0;
-
for(int i=0;i<5;i++)
-
if(ss[i].grade>ss[0].grade)
-
k=i;
-
cout<<"最高分的学生姓名和成绩如下: \n"<<ss[k].name<<','<<ss[k].grade<<endl;
-
-
}
-
void main()
-
{
-
fun();
-
}
鄙人也写了一个感觉还行,原来静态成员函数是这么用的啊:
-
-
-
-
-
using namespace std;
-
class student
-
{
-
int _id;
-
char _name[64];
-
int _grade;
-
public:
-
void ipt(char* name,int id,int grade)
-
{
-
StrCpyN(_name,name,64);
-
-
_id=id;
-
_grade=grade;
-
}
-
student() {}; //如果定义一个有参数的构造函数,系统就不会给你分配空参数的构造函数;
-
static void TopMost(int count_t,student stu[])
-
{
-
student largest=stu[0];
-
for(int k=0; k<count_t; k++)
-
{
-
if(largest._grade<stu[k]._grade)largest=stu[k];
-
}
-
cout<<"the most top stu is "<<largest._name<<endl;
-
cout<<"his score is "<<largest._grade<<endl;
-
cout<<"his id is "<<largest._id<<endl;
-
}
-
};
-
-
int main()
-
-
{
-
student sss[5];
-
char name[64][5]= {"a","b","c","d","e"};
-
int score[5]= {44,33,22,55,61};
-
for(int i=0; i<5; i++)
-
{
-
sss[i].ipt(name[i],i+1,score[i]);
-
};
-
student::TopMost(5,sss);
-
cout<<"this is only a test for win32-code::blocks"<<endl;
-
return 0;
-
}