C++语言题库(三)—— PAT

news2024/11/30 2:48:17

目录

1. 打印点、圆、圆柱信息

2. 国际贸易统计

3. 设计一个类CRectangle

4. 定义一个时间类

5. 定义一个Date类

6. 定义一个Time类

7. 设计一个People类

8. 平均成绩

9. 计算若干个学生的总成绩及平均成绩

11. 使用面向对象的方法求长方形的周长


1. 打印点、圆、圆柱信息

定义平面二维点类CPoint,有数据成员x坐标,y坐标,函数成员(构造函数、虚函数求面积GetArea, 虚函数求体积函数GetVolume、输出点信息函数print。
由CPoint类派生出圆类Cirle类(新增数据成员半径radius),函数成员(构造函数、求面积GetArea,虚函数求体积函数GetVolume、输出圆面积信息函数print。
再由Ccirle类派生出圆柱体Ccylinder类(新增数据成员高度height),函数成员(构造函数、求表面积GetArea ,求体积函数GetVolume、输出圆柱体体积信息函数print。在主函数测试这个这三个类。
打印数据保留小数点后2位。

答案:

#include<iostream>
#define PI 3.14
using namespace std;

class CPoint{
    private:
        double x,y;
    public:
        void print();
        CPoint(double,double);
};
CPoint::CPoint(double x,double y){
    this->x=x;
    this->y=y;
}
void CPoint::print(){
    cout<<"CPoint:"<<x<<","<<y<<endl;
}
class Circle:public CPoint{
    private:
        double r;
    public:
        Circle(double,double,double);
        double GetR();
        double GetArea();
        void print() ;
};
Circle::Circle(double x,double y,double r):CPoint(x,y){
    this->r=r;
}
double Circle::GetArea(){
    return PI*r*r;
}
double Circle::GetR(){
    return r;
} 
void Circle::print(){
    printf("CirleArea:%.2lf\n",GetArea());
}
class Ccylinder:public Circle{
    private:
        double h;
    public:
        Ccylinder(double,double,double,double);
        double GetArea();
        double GetVolume();
        void print();
};
Ccylinder::Ccylinder(double x,double y,double r,double h):Circle(x,y,r){
    this->h=h;
}
double Ccylinder::GetArea(){
    return PI*GetR()*GetR();
}
double Ccylinder::GetVolume(){
    return GetArea()*h;
}
void Ccylinder::print(){
    printf("CcylinderVolume:%.2lf\n",GetVolume());
}
int main(){
    double x,y,r,h;
    cin>>x>>y>>r>>h;
    CPoint c(x,y);
    Circle c1(x,y,r);
    Ccylinder c2(x,y,r,h);
    c.print();
    c1.print();
    c2.print();
    return 0;
}

2. 国际贸易统计

给出N个国家之间进行国际贸易的记录,请你统计这些国家进行国际贸易的收益。

答案:

#include<iostream>
using namespace std;
class country
{
    public:
    int num;
    int getings;
    int counts;
};
int main()
{
    int n;
    cin>>n;
    country cty[n+1];
    for(int i=1;i<n+1;i++)
    {
        cty[i].counts=0;
        cty[i].getings=0;
        cty[i].num=i;
    }
    for(int i=1;i<n+1;i++)
    {
        int *in=new int;
        cin>>*in;
        cty[i].counts+=*in;
        for(int j=0;j<*in;j++)
        {
            int *id=new int;
            cin>>*id;
            cty[*id].counts++;
            int *inin=new int;
            cin>>*inin;
            cty[i].getings+=*inin;
            cty[*id].getings-=*inin;
            delete id;
            delete inin;
        }
        delete in;
    }
    for(int i=1;i<n+1;i++)
    {
        for(int j=1;j<n;j++)
        {
            if(cty[j].getings==cty[j+1].getings&&cty[j].counts==cty[j+1].counts&&cty[j].num>cty[j+1].num)
            {
                country *p=new country;
                *p=cty[j];
                cty[j]=cty[j+1];
                cty[j+1]=*p;
                delete p;
            }
            else if(cty[j].getings==cty[j+1].getings&&cty[j].counts<cty[j+1].counts)
            {
                country *p=new country;
                *p=cty[j];
                cty[j]=cty[j+1];
                cty[j+1]=*p;
                delete p;
            }   
            else if(cty[j].getings<cty[j+1].getings)
            {
                country *p=new country;
                *p=cty[j];
                cty[j]=cty[j+1];
                cty[j+1]=*p;
                delete p;
            }    
        }
    }
    for(int i=1;i<n+1;i++)
    {
        cout<<cty[i].num<<" "<<cty[i].getings<<endl;
    }
    return 0;
}

3. 设计一个类CRectangle

设计一个类CRectangle,要求如下所述:
(1) 该类中的私有成员变量存放CRectangle的长和宽,并且设置它们的默认值为1.
(2) 通过成员函数设置其长和宽,并确保长和宽都在(0,50)范围之内。
(3) 求周长Perimeter

答案:

#include<iostream>
using namespace std;
 
class CRectangle{
public:
    void setlw();
    float getper();
private:
    float l, w;
};

void CRectangle::setlw(){
    cin >> l;
    if (l > 50)l = 1;
    cin >> w;
    if (w > 50)w = 1;
}

float CRectangle::getper(){
    return 2*(l+w);
}
 
int main(){
    CRectangle a;
    a.setlw();
    cout << a.getper();
}

4. 定义一个时间类

定义一个时间类Time,能提供和设置由时、分、秒组成的时间,并编写应用程序,定义时间对象,设置时间和输出该对象提供的时间。

答案:

#include<iostream>
#include<bits/stdc++.h>
using namespace std;
 
class Time{
public:
    void timing();
    void output();
private:
    int h, m, s;
};

void Time::timing(){
    cin>>h>>m>>s;
    if (m > 60){
        h+=1;
        m=m-60;}
    if (s > 60){
        m+=1;
        s=s-60;}
}

void Time::output()
{
cout<<setw(2)<<setfill('0')<<h<<"-"<<setw(2)<<setfill('0')<<m<<"-"<<setw(2)<<setfill('0')<<s<<endl; 
}

int main(){
    Time a;
    a.timing();
    a.output();
    return 0;
}

5. 定义一个Date类

定义一个满足如下要求的Date类
用下列的数据输出数据
年-月-日

答案:

#include<iostream>
#include<bits/stdc++.h>
using namespace std;
 
class Date{
public:
    void timing();
    void output();
private:
    int n, y, r;
};

void Date::timing(){
    cin>>n>>y>>r;
}

void Date::output()
{
cout<<setw(2)<<setfill('0')<<n<<"-"<<setw(2)<<setfill('0')<<y<<"-"<<setw(2)<<setfill('0')<<r<<endl; 
}

int main(){
    Date a;
    a.timing();
    a.output();
    return 0;
}

6. 定义一个Time类

定义一个时间类,能够提供和设置由时、分、秒组成的时间,并按照如下的格式输出时间:
08-09-24
12-23-59

答案:

#include<iostream>
#include<bits/stdc++.h>
using namespace std;
 
class TIME{
public:
    void timing();
    void output();
private:
    int n, y, r;
};

void TIME::timing(){
    cin>>n>>y>>r;
}

void TIME::output()
{
cout<<setw(2)<<setfill('0')<<n<<"-"<<setw(2)<<setfill('0')<<y<<"-"<<setw(2)<<setfill('0')<<r<<endl; 
}

int main(){
    TIME a;
    a.timing();
    a.output();
    return 0;
}

7. 设计一个People类

设计一个People 类,该类的数据成员有姓名、年龄、身高、体重和人数,其中人数为静态数据成员,成员函数有构造函数、显示和显示人数。其中构造函数由参数姓名、年龄、身高和体重来构造对象;显示函数用于显示人的姓名、年龄、身高和体重;显示人数函数为静态成员函数,用于显示总的人数。

答案:

#include<iostream>
#include<cstdio>
#include<string>
using namespace std;
class people{
private:
    string name;
    int age;
    int height;
    int weight;
    static int number;
public:
    people(string name, int age, int height, int weight){
        this->name = name;
        this->age = age;
        this->height = height;
        this->weight = weight;
    }
    void num_add()const{
        number++;
    }
    static void get_num(){
        cout << number << endl;
    }
};
int people::number = 0;
int main()
{
    string str;
    while (1){
        cin >> str;
        if (str == "exit")
            break;
        int age, height, weight;
        cin >> age >> height >> weight;
        people peo(str, age, height, weight);
        peo.num_add();
    }
    people::get_num();
    return 0;
}

8. 平均成绩

输入n个学生的姓名及其3门功课成绩,要求按输入的逆序逐行输出每个学生的姓名、3门课成绩和平均成绩。若有学生平均成绩低于60分,则不输出该学生信息。

答案:

#include<iostream>
#include<cstdio>
using namespace std;
struct student
{
    char name[20];
    int a;
    int b;
    int c;
    float avg;
};
int main()
{
    int n;
    while(1){
        cin>>n;
        student stu[n];
        for(int i = 0; i < n; i++){
        scanf("%s %d %d %d",stu[i].name, &stu[i].a,&stu[i].b,&stu[i].c);
            stu[i].avg = (stu[i].a+stu[i].b+stu[i].c)/3.0;
        }
        for(int i=n-1; i >= 0; i--){
            if(stu[i].avg >= 60){
                printf("%s %d %d %d %.2f\n",stu[i].name, stu[i].a,stu[i].b,stu[i].c,stu[i].avg);
            }
        }
        break;
    }
    return 0;
}

9. 计算若干个学生的总成绩及平均成绩

定义一个类Student,记录学生C++课程的成绩。要求使用静态数据成员或静态成员函数计算若干个学生C++课程的总成绩和平均成绩。

答案:

#include <iostream>
using namespace std;
class Student{
    protected:
    int studentscore;
    static int sum;
    static double avg;
    public:
    Student(){};
    Student(int a):studentscore(a){
        sum+=a;
        avg=sum/5;
    };
    void disp(){
        cout<<sum<<endl;
        cout<<avg;
    }
};
int Student::sum=0;
double Student::avg=0;
int main(){
    int score,count;cin>>count;
    Student *p;
    for(int i=0;i<count;i++){
        cin>>score;
        p=new Student(score);
    }
    p->disp();
    return 0;
}

11. 使用面向对象的方法求长方形的周长

本题目要求读入2个实数A和B,作为长方形的长和宽,计算并输出长方形的周长。

面向对象的方法,先要定义你要处理的数据类型——类,类就是现实中一个事物的抽象,在本题中就是长方形。

接着抽象长方形的属性和方法。

属性就是长方形用哪些数据来描述,要结合具体的应用场景,在本题中长方形有长和宽两个属性。属性就是类中的成员变量。

方法就是长方形具有哪些行为或者说可以对长方形进行哪些操作,要结合具体的应用场景,在本题中就是求长方形的周长。方法就是类中的成员函数。

类体现了面向对象的抽象和封装,将数据(成员变量)和对数据进行操作的函数(成员函数)封装在一起。

成员变量和成员函数统称为类的成员,成员需要指定访问权限,如果未指定访问权限,默认为私有权限。一般成员变量设为私有,成员函数设为共有。

类定义好之后,在主函数中就可以使用类定义一个具体的长方形,称为对象,定义对象的时候会自动调用构造函数完成初始化,即给该对象的长和宽赋值,接着就可以调用该对象的求周长函数求其周长。

答案:

#include<iostream>
#include<cstdio>
using namespace std;
class REC{
    double a;
    double b;
public:
    REC(double a1, double b1){
    a=a1;
    b=b1;
    }
    void circum(){
        double arr=2*(a+b);
        printf("%.2lf\n",arr);
    }
};

int main(){
    double a,b;
    cin>>a>>b;
    REC stu(a, b);
    stu.circum ();
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1667904.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

16 华三数据中心最流行的技术 M-LAG

STP和MTP&#xff08;第二十二课&#xff09;-CSDN博客 VRRP技术和浮动路由(第二十六课)_vrrp 浮动路由-CSDN博客 VRRP DHCP ACL NAT 网络核心路由技术综述 (第十课)-CSDN博客 04 交换机的IRF的配置-CSDN博客 1 M-LAG AI介绍 M-LAG&#xff08;Multi-Chassis Link Aggrega…

57 读取/写出/读取 文件的过程的调试

前言 问题来自于文章 请教文件读写问题 请教文件读写问题 - 内核源码-Chinaunix vim 编辑文件, 实际上删除了原有的文件建立了一个新的文件? Ls –ail . 查看 inode 编号不一样了 这里主要是 调试一下 这一系列流程 测试用例 就是一个程序, 读取 1.txt 两次, 两次之间间隔…

数据结构-二叉树-红黑树

一、红黑树的概念 红黑树是一种二叉搜索树&#xff0c;但在每个节点上增加一个存储位表示节点的颜色&#xff0c;可以是Red或者BLACK&#xff0c;通过对任何一条从根到叶子的路径上各个节点着色方式的限制&#xff0c;红黑树确保没有一条路径会比其他路径长出两倍&#xff0c;…

【C++杂货铺铺】AVL树

目录 &#x1f308;前言&#x1f308; &#x1f4c1; 概念 &#x1f4c1; 节点的定义 &#x1f4c1; 插入 &#x1f4c1; 旋转 1 . 新节点插入较高左子树的左侧---左左&#xff1a;右单旋 2. 新节点插入较高右子树的右侧---右右&#xff1a;左单旋 3. 新节点插入较高左…

在vue3中,如何优雅的使用echarts之实现大屏项目

前置知识 效果图 使用技术 Vue3 Echarts Gasp Gasp&#xff1a;是一个 JavaScript动画库,它支持快速开发高性能的 Web 动画。在本项目中&#xff0c;主要是用于做轨迹运动 所需安装的插件 npm i echarts npm i countup.js 数字滚动特效 npm i gsap javascript动画库 np…

全新时代的降临——比亚迪,助力未来出行

近日&#xff0c;世界舞台中央聚焦&#xff0c;比亚迪登上欧洲顶级赛事赞助席位&#xff0c;让全球见证中国新能源汽车传奇崛起&#xff01;作为新能源领袖品牌&#xff0c;比亚迪现已累计销售突破730万辆&#xff0c;全球每售出五辆新能源汽车&#xff0c;便有一辆来自比亚迪。…

vivado Virtex-7 配置存储器器件

Virtex-7 配置存储器器件 下表所示闪存器件支持通过 Vivado 软件对 Virtex -7 器件执行擦除、空白检查、编程和验证等配置操作。 本附录中的表格所列赛灵思系列非易失性存储器将不断保持更新 &#xff0c; 并支持通过 Vivado 软件对其中所列非易失性存储器 进行擦除、…

【中航证券军工】北摩高科2023年报2024Q1点评:聚焦航空及军工主赛道,民机业务有望成为第二曲线

事件 公司4月24日公告&#xff0c;2024Q1实现营收&#xff08;2.40亿元&#xff0c;同比-23.71%)&#xff0c;归母净利润&#xff08;0.73亿元&#xff0c;同比-45.63%)&#xff0c;毛利率&#xff08;62.63%&#xff0c;同比-7.22pcts)&#xff0c;净利率&#xff08;37.34%&…

安装conda并搭建python环境(入门教程)

文章目录 1. 什么是 conda&#xff1f;1.1 Conda 与 Anaconda 的区别1.2 Conda 与 pip 的区别 2. 下载安装3. 配置并使用 conda3.1 配置下载源3.2 环境管理3.2.1 创建&#xff08;删除&#xff09;环境3.2.2 激活&#xff08;切换&#xff09;环境3.2.2 下载&#xff08;卸载&a…

Sping源码(七)—ConfigurationClassPostProcessor ——@PropertySources解析

序言 先来简单回顾一下ConfigurationClassPostProcessor大致的一个处理流程&#xff0c;再来详细的讲解PropertySources注解的处理逻辑。 详细的步骤可参考ConfigurationClassPostProcessor这篇帖子。 流程图 从获取所有BeanDefinition -> 过滤、赋值、遍历 -> 解析 -&…

常用的简单友好的工单系统(免费)- WGCAT

最近在项目中&#xff0c;有工单系统的需求场景&#xff0c;所以想寻找一款轻量简单的运维工单软件&#xff0c;主要用来记录和处理工作中的一些故障、维护&#xff0c;主要用来记录设备的维护状态&#xff0c;包括服务器、主机、交换机那些 WGCAT&#xff0c;是一款简单轻量的…

2024中国(重庆)人工智能展览会8月举办

2024中国(重庆)人工智能展览会8月举办 邀请函 主办单位&#xff1a; 中国航空学会 重庆市南岸区人民政府 招商执行单位&#xff1a; 重庆港华展览有限公司 【报名I59交易会 2351交易会 9466】 展会背景&#xff1a; 2024中国航空科普大会暨第八届全国青少年无人机大赛在…

macOS12安装 php8.1和apache

1. 安装php 8.1 macOS12不再自带php brew tap shivammathur/php 查看可安装版本 brew search php 安装指定版本 brew install php8.1 环境配置 vim ~/.zshrc export PATH"/usr/local/opt/php8.1/bin:$PATH" export PATH"/usr/local/opt/php8.1/sbin:$PAT…

Git Bash和Git GUI设置中文的方法

0 前言 Git是一个分布式版本控制系统&#xff0c;可以有效、高速地处理从很小到非常大的项目版本管理。一般默认语言为英文&#xff0c;本文介绍修改Git Bash和Git GUI语言为中文的方法。 1 Git Bash设置中文方法 &#xff08;1&#xff09;鼠标右键&#xff0c;单击“Git B…

每日两题 / 108. 将有序数组转换为二叉搜索树 543. 二叉树的直径(LeetCode热题100)

108. 将有序数组转换为二叉搜索树 - 力扣&#xff08;LeetCode&#xff09; 每次将数组对半分&#xff0c;数组的中点作为树的节点 先选择整个数组的中点作为根节点&#xff0c;然后选择对半分后的两个子数组的中点作为根节点的左右节点… /*** Definition for a binary tre…

【操作系统期末速成】​内存管理|内存的装入模块在装入内存的方式|分配管理方式|页面置换算法|页面置换

&#x1f3a5; 个人主页&#xff1a;深鱼~&#x1f525;收录专栏&#xff1a;操作系统&#x1f304;欢迎 &#x1f44d;点赞✍评论⭐收藏 推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到…

Django开发实战之定制管理后台界面及知识梳理(上)

不知道不觉写博客已经半个月了&#xff0c;涨了164个粉丝&#xff0c;在一边分享笔记的过程&#xff0c;一边收获粉丝&#xff0c;感觉很开心也很幸福&#xff0c;希望看我博客的小伙伴都能有所收获&#xff0c;大家共同成长进步&#xff0c;好拉&#xff0c;话不多说&#xff…

hcip实验6:BGP综合实验

实验拓扑&#xff1a; 实验配置&#xff1a; ip地址配置&#xff1a; #R1 [R1]int g0/0/0 [R1-GigabitEthernet0/0/0]ip add 12.1.1.1 24 [R1-GigabitEthernet0/0/0]int l0 [R1-LoopBack0]ip add 172.16.0.1 32 [R1-LoopBack0]int l1 [R1-LoopBack1]ip add 192.168.1.1 24#R2…

回归预测 | Matlab实现GA-LSSVM遗传算法优化最小二乘支持向量机多输入单输出回归预测

回归预测 | Matlab实现GA-LSSVM遗传算法优化最小二乘支持向量机多输入单输出回归预测 目录 回归预测 | Matlab实现GA-LSSVM遗传算法优化最小二乘支持向量机多输入单输出回归预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 Matlab实现GA-LSSVM遗传算法优化最小…

【RAG论文】RAG中半结构化数据的解析和向量化方法

论文简介 论文题目&#xff1a; 《A Method for Parsing and Vectorization of Semi-structured Data used in Retrieval Augmented Generation》 论文链接&#xff1a; https://arxiv.org/abs/2405.03989 代码: https://github.com/linancn/TianGong-AI-Unstructure/tree/m…