首页 > 编程语言 >2023.5.11编程一小时打卡

2023.5.11编程一小时打卡

时间:2023-05-11 19:57:41浏览次数:40  
标签:11 班级 name age 学生 Person 2023.5 cpp 打卡

一、问题描述:

完成“学生cpp成绩计算”之后,修改Person和Student类,各自增加两个无参构造函数。

仍以Person类为基础,建立一个派生类Teacher,增加以下成员数据:

   int ID;//教师工号
   Student stu[100];//学生数组
   int count;//学生数目,最多不超过100
   float cpp_average;//班级cpp平均分
 

增加以下成员函数:

  Teacher类的参数化构造函数
  void Add (Student & stu1)//在学生数组中增加一个学生记录
  void average();//计算当前班级cpp平均成绩cpp_average
  void print()//输出当前班级学生的信息
           //其中学生记录中cpp_score和cpp_grade输出保留一位小数
                  //当前班级cpp_average输出保留一位小数;
                  //输出格式如下:
             //第一行:教师工号 教师姓名 班级学生数 cpp_average
       //第二行至第count+1行每一行输出一个学生的信息,每一行格式
      // 学生学号 学生姓名 cpp_grade
     //cpp_grade保留一位小数
 

生成上述类并编写主函数,根据输入的教师基本信息,建立一个教师对象,根据输入的每一条学生基本信息,建立一个学生对象,计算学生cpp总评成绩并且加入学生数组中,由教师对象计算班级cpp平均成绩,并输出班级学生的全部信息。

输入格式: 测试输入包含一个测试用例,该测试用例的第一行输入教师的基本信息(教师姓名 教师工号 年龄),第二行开始输入班级内学生信息,每个学生基本信息占一行(学生姓名 学号 年龄 cpp成绩 cpp考勤),最多不超过100行,当读入0时输入结束。

二、解题思路:

首先,定义一个Person的新的子类Teacher类,其含有数据ID,带班的学生成绩和学生人数,然后定义其含参的构造函数对其进行初始化,再去定义其的成员函数,add函数去增加学生的数据,还有学生的数量的成员函数,还有一个输出该类的数据的展示函数,在主函数中,定义所需的成员数据,利用输入成员数据的特点用while及进行调控循环,最后进行代码得到调试运行,观测结果。

三、代码实现:

 1 #include<iostream>
 2 #include<string>
 3 #include<iomanip>
 4 using namespace std;
 5 class Person {
 6 protected:
 7      string name;
 8      int age;
 9 public:
10      Person(){};                  
11      Person (string a, int b) : name(a), age (b){};
12      void display () {cout<<name<<":"<<age<<endl;}
13 };
14 class Student : public Person{
15     int ID;
16     float cpp_score;
17     float cpp_count;
18     float cpp_grade;
19 public:
20     void operator = (Student &a){
21     name = a.name;
22     age = a.age;
23     ID = a.ID;
24     cpp_score = a.cpp_score;
25     cpp_count = a.cpp_count;
26     cpp_grade = a.cpp_grade;
27     }
28     float getGrade(){return cpp_grade;}
29     Student():Person(){};
30     void display(){cout<<ID<<" "<<name<<" "<<setiosflags(ios::fixed)<<setprecision(1)<<cpp_grade<<endl;}
31     Student(string a, int b , int c ,float d ,float e) : 
32     Person(a,b), ID(c) , cpp_score(d) , cpp_count(e) {cpp_grade = cpp_score * 0.9 + cpp_count * 2;}
33 };
34 class Teacher : public Person{
35     int ID;
36     Student stu[100];
37     int count;
38     float cpp_average;
39 public:
40     Teacher(string a, int b, int c) : Person(a,b), ID(c){};
41     void setCount(int a){count= a;}
42     void Add (Student & stu1){
43         stu[count-1] = stu1;
44     };
45     void average(){
46         float ans=0;
47         for(int i=0;i<count;i++)
48         {
49             ans += stu[i].getGrade();
50         }
51         cpp_average = ans/count;
52     };
53     void print(){
54         cout<<ID<<" "
55             <<name<<" "
56             <<count<<" "
57             <<setiosflags(ios::fixed)<<setprecision(1)
58             <<cpp_average<<endl;
59         for(int i=0;i<count;i++)
60         {
61             stu[i].display();
62         }
63     };
64 };
65 int main()
66 {
67     string name;
68     int age, num,count;
69     float score;
70     cin>>name>>num>>age;
71     Teacher ok(name , age, num);
72     int sum=0;
73     cin>>name;
74     while(name[0]!='0')
75     {
76         sum++;
77         cin>> num>> age>> score >> count; 
78         Student hello(name, age, num, score, count);
79         ok.setCount(sum);
80         ok.Add( hello );
81         cin>>name;
82     }
83     ok.average();
84     ok.print();
85     return 0;
86 }

 

标签:11,班级,name,age,学生,Person,2023.5,cpp,打卡
From: https://www.cnblogs.com/lixinyao20223933/p/17384436.html

相关文章

  • [NOIP2011 普及组] 数字反转
    [NOIP2011普及组]数字反转题目描述给定一个整数\(N\),请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2)。输入格式一个整数\(N\)。输出格式一个整数,表示反转后的新数。样例#......
  • 2023年5月11日19:31:14
    如果不写可能自己都忘了吧。今天我终于把三更那个个人博客做完了,前面跟着他做,后面他让我们自己做,挺好的,毕竟都是一些重复的东西,自己真 正的学到了很多很多。挺开心的。下一步就是把这个项目上线,如果能够再美化一下前端就好了,所以我还要去学一点前端,但是这个计划不知道什么时候......
  • 5.11 2.6
    一、问题描述一辆以固定速度行驶的汽车,司机在上午10点看到里程表上的读数是一个对称数(即这个数从左向右读和从右向左读是完全一样的),为95859。两小时后里程表上出现了一个新的对称数,该数仍为五位数。问该车的速度是多少?新的对称数是多少?二、分析司机在上午10点看到里程表......
  • 5.11
    #include<stdio.h>main(){inti,j,s,n;printf("请输入所选范围上限:");scanf("%d",&n);for(i=2;i<=n;i++){s=0;for(j=1;j<i;j++){if(i%j==0)s+=j;}if(s==i)printf("Itisaperfectnumber:%d.\n",i);}}......
  • 5.11总结
    DropTABLEIFEXISTStb_order;DropTABLEIFEXISTStb_goods;--订单表--表实现多对多--实现方式:建立第三方中间表,中间表至少包含两个外键,分别关联两方主键CREATETABLEtb_order(idINTprimarykeyauto_increment,paymentDOUBLE(10,2),payment_typeTINYINT,sta......
  • 2023.5.8
    在常见深度学习任务中,数据样本可能是图片(image)、文本(text)、语音(audio)等多种类型,在送入神经网络训练或推理前,这些数据和对应的标签均需要创建为Tensor。以下是图像场景和NLP场景中手动转换Tensor方法的介绍。对于图像场景,可使用paddle.vision.transforms.ToTensor直接将P......
  • python3.11 支持TA-lib
    网上找了很多地方才找到的,以下是原网面内容分享给大家:原网址python3.11支持TA-lib-简书(jianshu.com) python3.11支持TA-libasmcos关注IP属地:北京2022.11.0316:42:52字数122阅读1,075做量化的朋友都知道Ta-lib的windows库相当难编译。python3.11性能提升......
  • 3511. 路由最大耗时路径
    题目描述假设存在一个二叉树型的路由器网络,经过每个路由器会有耗时。由于我们要对网络进行优化,需要找出这个树型路由器网络中的最大耗时的两个节点间的路径。路径被定义为一条从任意节点出发,达到任意节点的序列,同一个节点在一条路径序列中至多出现一次。该路径至少包含一个......
  • 打卡15
    舍罕王的失算#include<stdio.h>#include<math.h>intmain(){ doublesum=0; for(inti=1;i<=64;i++){ sum=sum+pow(2,i-1); } printf("国王总共需要赏赐给宰相的麦子数为:\n%f\n",sum);} ......
  • 2023年5月11日记录
     思路:  代码实现:    ......