首页 > 编程语言 >编程打卡:面向对象程序设计测试

编程打卡:面向对象程序设计测试

时间:2023-05-09 21:56:06浏览次数:45  
标签:name Person int age 编程 面向对象 打卡 include cout

面向对象程序设计测试

#include <iostream>
#include<iomanip>
using namespace std;
class Point
{
    protected:
    double x,y;
    public:
    Point(double a = 0,double b = 0):x(a),y(b) {
        cout << "Point constructor called\n";
    };
    ~Point () {
        cout << "Point destructor called\n";
    };
};
class Circle
{
    protected:
    Point p1;
    double r;
    public:
    Circle(double a = 0,double b = 0,double c = 0):p1(a,b),r(c) {
        cout << "Circle constructor called\n";
    };
    ~Circle () {
        cout << "Circle destructor called\n";
    };
    double getCircumference() {
        return 2*3.14*r;
    }
};

int main()
{
    float x,y,r;
    cin>>x>>y>>r;
    Circle c(x,y,r);
    cout<<fixed<<setprecision(2)<<c.getCircumference()<<endl;
    return 0;
}
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
class Person
{
    protected:
    string name;
    int age;

    public:
    Person() : name("person"), age(0){};
    Person(string p_name, int p_age) : name(p_name), age(p_age){};
    void display() { cout << name << ":" << age << endl; }
};
class Student : public Person
{
    protected:
    int ID;
    float cpp_score;
    float cpp_count;
    float cpp_grade;

    public:
    Student(string n,int a,int sid,float score,float count):Person(n,a),ID(sid),cpp_score(score),cpp_count(count) 
    {
        cpp_grade = cpp_score * 0.9 + cpp_count * 2;
    };
    void print()
    {
        cout << ID << " " << name << " " << setiosflags(ios::fixed) << setprecision(1) << cpp_grade << endl;
    }
}; 
int main()
{
    while (1)
    {
        string name;
        int sid,age;
        float score,count;
        cin >> name;
        if (name == "0")
            exit(0);
        cin >> sid >> age >> score >> count;
        Student s1(name,age,sid,score,count);
        s1.print();
    }
}
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
class Person
{
    protected:
    string name;
    int age;

    public:
    Person() : name("person"), age(0){};
    Person(string p_name, int p_age) : name(p_name), age(p_age){};
    void display() { cout << name << ":" << age << endl; }
};
class Student : public Person
{
    protected:
    int ID;
    float cpp_score;
    float cpp_count;
    float cpp_grade;

    public:
    Student(){};
    Student(string n,int a,int sid,float score,float count):Person(n,a),ID(sid),cpp_score(score),cpp_count(count) 
    {
        cpp_grade = cpp_score * 0.9 + cpp_count * 2;
    };
    void print()
    {
        cout << ID << " " << name << " " << setiosflags(ios::fixed) << setprecision(1) << cpp_grade << endl;
    }
    float getGrade()
    {
        return cpp_grade;
    }
}; 
class Teacher : public Person
{
    protected:
    int ID;
    Student stu[100];
    int count;
    float cpp_average;
    public:
    Teacher(string n,int a,int tid):Person(n,a),ID(tid),count(0),cpp_average(0){};
    void Add (Student & stu1)   {
        stu[count] = stu1;
        count++;
    }
    void average() {
        float sum = 0;
        for (int i = 0; i < count; i++)
        {
            sum += stu[i].getGrade();
        }
        cpp_average = sum / count;
    }
    void print() {
        cout << ID << " " << name << " " << count << " " << setiosflags(ios::fixed) << setprecision(1) << cpp_average << endl;
        for (int i = 0; i < count; i++)
        {
            stu[i].print();
        }
    }
};

int main()
{
    string name;
    int age;
    int ID;
    float cpp_score;
    float cpp_count;
    cin >> name >> ID >> age;
    Teacher t(name, age, ID);
    while (1)
    {
        cin >> name;
        if(name == "0") {
            break;
        }
        cin >> ID >> age >> cpp_score >> cpp_count;
        Student s(name, age, ID, cpp_score, cpp_count);
        t.Add(s);
    }
    t.average();
    t.print();
}

神奇,这些题用float就能过,用double就过不了。

标签:name,Person,int,age,编程,面向对象,打卡,include,cout
From: https://www.cnblogs.com/sugar-refinery/p/17386400.html

相关文章

  • 打卡 c语言趣味编程 打鱼还是晒网
    中国有句俗语叫“三天打鱼两天晒网”。某人从1990年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的以后的某一天中是打鱼还是晒网。设计思路:1、定义一个函数,该函数接收两个参数:一个是起始日期,另一个是未来的某一天。2、计算起始日期和未来的某一天之间相隔的天数......
  • 2023.5.9编程一小时打卡
    一、问题描述:定义基类Point(点)和派生类Circle(圆),求圆的周长。Point类有两个私有的数据成员floatx,y;Circle类新增一个私有的数据成员半径floatr和一个公有的求周长的函数getCircumference();主函数已经给出,请编写Point和Circle类。#include<iostream>#include<iomanip>using......
  • 每日编程一小时(第二十三天)
    一.问题描述以点类Point及平面图形类Plane为基类公有派生圆类Circle,再以圆类Circle及立体图形类Solid为基类公有派生圆锥类Cone,main(void)函数完成对圆锥类Cone的测试。Point类结构说明:Point类的数据成员包括:①私有数据成员:X坐标x(double型),Y坐标y(double型)。Point类成员函......
  • 5.9打卡
    一、问题描述:求13的13次方的最后三位数二、设计思路:编程过程中,将累乘得到的积存储到变量last中,在进行下一次相乘之前先截取last的后三位再相乘,即:last%1000*13,将结果存储到last中:last=last*x(x的值为13)%1000。因第一次相乘时用到变量last的初值,故在定义时给last赋初值,或在参与计......
  • 5-9打卡:力扣19. 删除链表的倒数第 N 个结点
    给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例1:输入:head=[1,2,3,4,5],n=2输出:[1,2,3,5]示例2:输入:head=[1],n=1输出:[]示例3:输入:head=[1,2],n=1输出:[1] 提示:链表中结点的数目为sz1<=sz<=300<=Node.val<=1001<=n<=sz......
  • 第18天打卡
    问题: 源代码:#include<stdio.h>intmain(){intx,y,z,n=0;for(x=0;x<=10;x++){y=20-2*x;z=30-x-y;if(3*x+2*y+z==50)printf("%2d:%4d%5d%6d\n",++n,x,y,z);}}......
  • 开发必备,开源 or 免费的 AI 编程助手
    AI大模型的火热,让开发圈近来如虎添翼,各种各样基于AI技术的开发者工具和新范式不断涌现,尤其是Github和OpenAI共同推出的CopilotX,更是一骑绝尘。本文推荐一些开源or免费的AI编程工具,不妨试着用起来。CodeGeeX有人称CodeGeeX是国产之光,被认为是GitHubCopilot的......
  • 软件测试面试-编程(电子书)
    C++是面向过程也面向对象的语言,具有预处理器、预处理器指令和宏、模板、对象、封装、继承、多态的特性。1、C++程序的内存通常如何分配?解答:全局数据区:通常存储全局变量、静态数据和常量代码区:所有类成员函数和非成员函数代码栈区:执行函数时分配的局部变量、函数参数、返回......
  • 建民打卡日记5.9
    一、问题描述天梯赛结束后,某企业的人力资源部希望组委会能推荐一批优秀的学生,这个整理推荐名单的任务就由静静姐负责。企业接受推荐的流程是这样的:只考虑得分不低于175分的学生;一共接受 K 批次的推荐名单;同一批推荐名单上的学生的成绩原则上应严格递增;如果有的学生天梯......
  • 关于并发编程与线程安全的思考与实践
    作者:京东健康张娜一、并发编程的意义与挑战并发编程的意义是充分的利用处理器的每一个核,以达到最高的处理性能,可以让程序运行的更快。而处理器也为了提高计算速率,作出了一系列优化,比如:1、硬件升级:为平衡CPU内高速存储器和内存之间数量级的速率差,提升整体性能,引入了多级高速缓......