cpp语言程序设计教程第七章的一道编程题


题目如下

按下列要求实现一个有关学生成绩的操作。

该类名为Student。

(1)每个学生的信息包含有姓名(字符数组)和成绩(int型)。

(2)共有5个学生,用对象数组表示。

(3)计算出5个学生中的最高分,并输出姓名及分数。

课后答案是这么写的:

 

  1.  
    #include <iostream.h>
  2.  
    #include <string.h>
  3.  
    class Student
  4.  
    {
  5.  
    public:
  6.  
    Student(char s[],int gr)
  7.  
    { strcpy(name,s); grade=gr; }
  8.  
    friend void fun();
  9.  
    private:
  10.  
    char name[10];
  11.  
    int grade;
  12.  
    };
  13.  
    Student ss[5]={Student("马力",85),Student("王欣",96),Student("李明",82),
  14.  
              Student("赵亮",78),Student("张京",80)};
  15.  
    void fun()
  16.  
    {
  17.  
    int k=0;
  18.  
    for(int i=0;i<5;i++)
  19.  
    if(ss[i].grade>ss[0].grade)
  20.  
    k=i;
  21.  
    cout<<"最高分的学生姓名和成绩如下: \n"<<ss[k].name<<','<<ss[k].grade<<endl;
  22.  
     
  23.  
    }
  24.  
    void main()
  25.  
    {
  26.  
    fun();
  27.  
    }
看了答案,我去,真的没话说了,太牛了,对象还搞成了全局的,还要按个赋值,一次一次打student很爽么?然后又搞了个友元函数,是你这么用的?

鄙人也写了一个感觉还行,原来静态成员函数是这么用的啊:

 

  1.  
    #include <iostream>
  2.  
    #include<stdio.h>
  3.  
    #include<string.h>
  4.  
    #include<Shlwapi.h>
  5.  
    using namespace std;
  6.  
    class student
  7.  
    {
  8.  
    int _id;
  9.  
    char _name[64];
  10.  
    int _grade;
  11.  
    public:
  12.  
    void ipt(char* name,int id,int grade)
  13.  
    {
  14.  
    StrCpyN(_name,name,64);
  15.  
     
  16.  
    _id=id;
  17.  
    _grade=grade;
  18.  
    }
  19.  
    student() {}; //如果定义一个有参数的构造函数,系统就不会给你分配空参数的构造函数;
  20.  
    static void TopMost(int count_t,student stu[])
  21.  
    {
  22.  
    student largest=stu[0];
  23.  
    for(int k=0; k<count_t; k++)
  24.  
    {
  25.  
    if(largest._grade<stu[k]._grade)largest=stu[k];
  26.  
    }
  27.  
    cout<<"the most top stu is "<<largest._name<<endl;
  28.  
    cout<<"his score is "<<largest._grade<<endl;
  29.  
    cout<<"his id is "<<largest._id<<endl;
  30.  
    }
  31.  
    };
  32.  
     
  33.  
    int main()
  34.  
     
  35.  
    {
  36.  
    student sss[5];
  37.  
    char name[64][5]= {"a","b","c","d","e"};
  38.  
    int score[5]= {44,33,22,55,61};
  39.  
    for(int i=0; i<5; i++)
  40.  
    {
  41.  
    sss[i].ipt(name[i],i+1,score[i]);
  42.  
    };
  43.  
    student::TopMost(5,sss);
  44.  
    cout<<"this is only a test for win32-code::blocks"<<endl;
  45.  
    return 0;
  46.  
    }
好坏自己判断吧~

posted @ 2018-08-29 23:10  absudra  阅读(171)  评论(0编辑  收藏  举报