题目如下
按下列要求实现一个有关学生成绩的操作。
该类名为Student。
(1)每个学生的信息包含有姓名(字符数组)和成绩(int型)。
(2)共有5个学生,用对象数组表示。
(3)计算出5个学生中的最高分,并输出姓名及分数。
课后答案是这么写的:
-
#include <iostream.h>
-
#include <string.h>
-
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();
-
}
看了答案,我去,真的没话说了,太牛了,对象还搞成了全局的,还要按个赋值,一次一次打student很爽么?然后又搞了个友元函数,是你这么用的?
鄙人也写了一个感觉还行,原来静态成员函数是这么用的啊:
-
#include <iostream>
-
#include<stdio.h>
-
#include<string.h>
-
#include<Shlwapi.h>
-
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;
-
}
好坏自己判断吧~