zoukankan      html  css  js  c++  java
  • 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<<"最高分的学生姓名和成绩如下: "<<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.  
      }
    好坏自己判断吧~

  • 相关阅读:
    Golang之排序算法
    Golang之一个简单的聊天机器人
    golang之流程控制(注意点)
    golang之指针
    vs code中自动添加注释插件koroFileHeader
    stack栈、heap堆的说明图
    c语言中的数据类型的最大最小值
    数组问题:a与&a有的区别
    STM32F10x之NVIC
    大小端的另一种测试方法
  • 原文地址:https://www.cnblogs.com/absudra/p/9557573.html
Copyright © 2011-2022 走看看