面向对象程序设计-实验七

news2025/4/4 5:24:32

6-1 计算捐款总量

这里需要设计一个捐款人类Donator及一个相关函数getMaxName( ),Donator类中包含捐款人的姓名及其捐款额

代码清单:

#include <iostream>

using namespace std;

class Donator {

private:

    string name;

    float money; //单位:元        

public:

    void setName(string _name);

    void setMoney(float _money);

    string getName() { return name; }

    float getMoney() { return money; }

    /* 你编写的代码将被嵌入这里*/

    static float totalMoney;

    static void printTotal()

    {

        cout << "total:" << totalMoney << endl;

    }

};

float Donator::totalMoney = 0;

void Donator::setName(string _name)

{

    name = _name;

}

void Donator::setMoney(float _money)

{

    money = _money;

    totalMoney = totalMoney + money;

}

string getMaxName(Donator dt[], int n)

{

    float max = dt[0].getMoney();

    int max_id = 0;

    for (int i = 1; i < n; i++)

    {

        if (dt[i].getMoney() > max)

        {

            max_id = i;

        }

    }

    return dt[max_id].getName();

}

    //读取n个捐款人的姓名和捐款额 

    void read(Donator dt[], int n) {

        string name;

        float money;

        for (int i = 0; i < n; i++) {

            cin >> name >> money;

            dt[i].setName(name);

            dt[i].setMoney(money);

        }

    }

    int main() {

        int n;

        cin >> n; 输入本批次将参与的捐款人数

        cin >> Donator::totalMoney; //输入目前已有的捐款总额 

        Donator::printTotal();

        Donator d[n];

        read(d, n);

        Donator::printTotal();

        cout << getMaxName(d, n) << endl;//输出本批次中捐款最高者姓名 

        return 0;

    }

运行结果截图

题目2

(给出题目描述)

6-2 是否是回文

代码清单:

#include <iostream>

using namespace std;

class Solution

{

public:

    /*

     * 判断以'@'结尾的字符串s是否为回文。

     * 如果是回文,返回true;不是回文,返回false

     */

    bool isPalindrome(char* s);

};

int main()

{

    Solution obj;

    char ss[100];

    cin >> ss;

    if (obj.isPalindrome(ss)) {

        cout << "YES\n";

    }

    else {

        cout << "NO\n";

    }

    return 0;

}

/* 你的代码将被嵌在这里 */

bool Solution::isPalindrome(char* s)

{

    char* p = s;

    while (*p != '\0')

    {

        p++;

    }

    int len = p - s;

    for (int i = 0; i < len / 2; i++)

    {

        if (s[i] != s[len - i - 2])

        {

            return false;

        }

    }

    return true;

}

运行结果截图

题目3

(给出题目描述)

7-1 复数类的操作

代码清单:

…………………………..

………………………….

#include<iostream>

using namespace std;

class Complex{

    private:

    double real;

    double image;

    public:

    Complex(double r=0,double i=0)

    {

        real=r;

        image=i;

    }

    Complex operator-()

    {

        Complex c;

        c.real=-real;

        c.image=-image;

        return c;

    }

    void setreal()

    {

        cin>>this->real;

    }

    void setimage()

    {cin>>this->image;}

    void Print()

    {

        cout<<"("<<this->real<<", "<<this->image<<")"<<endl;

    }

    friend Complex operator+(Complex &c1,Complex &c2);

};

Complex operator+(Complex &c1,Complex &c2)

{

    Complex c;

    c.real=c1.real+c2.real;

    c.image=c1.image+c2.image;

    return c;

}

    

int main()

{

    Complex c1,c2,c3,c4;

    c1.setreal();c1.setimage();

    c2.setreal();c2.setimage();

    c3=c1+c2;c3.Print();

    c4=-c2;

    c3=c4+c1;c3.Print();

    c2.Print();

    return 0;

    

}

运行结果截图

题目4

(给出题目描述)

7-2 宿舍谁最高?

代码清单:

…………………………..

………………………….

#include<bits/stdc++.h>

using namespace std;

class Student

{

public:

    int id;

    string name;

    int h;

    int w;

};

int main()

{

    int n,t=1,r=0;

    cin >> n;

    Student *s=new Student[n];

        for (int i = 0; i < n; i++)

        {

            cin >> s[i].id >> s[i].name >> s[i].h >> s[i].w;

        }

        if(n>1)

        {

        for (int w = 0; w < n - 1; w++)

        {

            for (int q = 0; q < n - 1; q++)

            {

                Student temp;

                if (s[q].id > s[q + 1].id)

                {

                    temp = s[q];

                    s[q] = s[q + 1];

                    s[q + 1] = temp;

                }

            }

        }

        for (; r <n - 1; )

        {

            if (s[r].id == s[r + 1].id)

            {

                if (s[r].h > s[r + 1].h)

                {

                    Student temp1;

                    temp1 = s[r];

                    s[r] = s[r + 1];

                    s[r + 1] = temp1;

                }

                r = r + 1;

            }

            else

            {

                cout << setw(6)<<setfill('0')<<s[r].id<<" " << s[r].name<<" " << s[r].h<<" " << s[r].w << endl;

                r = r + 1;

            }

        }

        

        cout << setw(6) << setfill('0') << s[r].id<<" " << s[r].name <<" "<< s[r].h<<" " << s[r].w << endl;

    }

    else

    {

        cout << setw(6) << setfill('0') << s[0].id<<" " << s[0].name<<" " << s[0].h<<" " << s[0].w << endl;

    }

    return 0;

}

运行结果截图

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

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

相关文章

Java面试宝典:说下Spring Bean的生命周期?

Java面试宝典专栏范围&#xff1a;JAVA基础&#xff0c;面向对象编程&#xff08;OOP&#xff09;&#xff0c;异常处理&#xff0c;集合框架&#xff0c;Java I/O&#xff0c;多线程编程&#xff0c;设计模式&#xff0c;网络编程&#xff0c;框架和工具等全方位面试题详解 每…

early bird inject

基本原理 本质是利用windows系统的apc机制&#xff0c;以及涉及到windows进程启动的流程. 因为线程初始化阶段LdrInitializeThunk函数会调用NtTestAlert函数,这个函数执行后,所有apc队列中的例程都会执行.因此我们在主线程初始化之前向主线程的apc队列中加入恶意代码即可实现…

uvm错误记录4

如下所示&#xff0c;奇怪的是penable莫名其妙的出X。可问题&#xff0c;我发送激励了。 仔细定位发现&#xff0c;39行用的是vif中的penable, 问题是都是赋值&#xff0c;却出现同时赋值多次&#xff0c;这是因为nonblocking和blocking同时触发导致的&#xff0c;因此&#xf…

3dtiles——Cesium ion for Autodesk Revit Add-In插件

一、说明&#xff1a; Cesium已经支持3dtiles的模型格式转换&#xff1b; 可以从Cesium官方Aesset中上传gltf等格式文件转换为3dtiles&#xff1b; 也可以下载插件&#xff08;例如revit-cesium插件&#xff09;转换并自动上传到Cesium官方Aseet中。 Revit转3dtiles插件使用…

QT 异步编程之多线程

一、概述 1、在进行桌面应用程序开发的时候&#xff0c;假设应用程序在某些情况下需要处理比较复制的逻辑&#xff0c;如果只有一个线程去处理&#xff0c;就会导致窗口卡顿&#xff0c;无法处理用户的相关操作。这种情况下就需要使用多线程&#xff0c;其中一个线程处理窗口事…

Proxmox 更新软件包数据库(TASK ERROR: command ‘apt-get update‘ failed: exit code 100)

1、连接自己报错的物理机Shell&#xff0c;编辑文件 vi /etc/apt/sources.list.d/pve-enterprise.list 2、注释文件的第一行在开头加上# 按I进入编辑模式后 开头添加# 然后shift&#xff1a; 输入wq或者wq&#xff01;进行保存 3、注释后执行两个命令apt-get update 和 apt…

JVM——垃圾回收算法

目录 垃圾回收算法 评价标准&#xff1a; 标记-清除算法&#xff1a; 复制算法&#xff1a; 标记-整理算法&#xff1a; 分代GC&#xff1a; arthas查看分代之后的内存情况&#xff1a; 垃圾回收算法 java是如何实现垃圾回收的呢&#xff1f;简单来说&#xff0c;垃圾回…

服务器安全——日志分析和扫描

如何通过访问日志查询被攻击 扫描攻击 攻击日志 GET /index?sindex/%5Cthink%5CModule/Action/Param/$%7Bphpinfo()%7D HTTP/1.1", host: "主机", referrer: "主机sindex/\think\Module/Action/Param/${phpinfo()}" 攻击日志文件 .error.log sql注…

ubuntu 22.04 安装vsftpd服务

先决条件&#xff0c;确保你已经配置好了存储库。 安装vsftpd 为了方便实验&#xff0c;我已经切换到了root用户。 rootlocal:~# apt-get install vsftpd修改配置 配置文件在 /etc/vsftpd.conf rootlocal:~# grep -vE ^#|^$ /etc/vsftpd.conf listenNO listen_ipv6YES anonymou…

STM32F407通过FSMC扩展外部SRAM和NAND FLASH

1 扩展外部SRAM 1.1 地址情况 FSMC控制器的存储区分为4个区(Bank)&#xff0c;每个区256MB。其中&#xff0c;Bank1可以用于连接SRAM、NOR FLASH、PSRAM&#xff0c;还可以连接TFT LCD。Bank1的地址范围是0x60000000&#xff5e;0x6FFFFFFF。Bank1又分为4个子区&#xff0c;每…

AndroidStudio查看Sqlite和SharedPreference

1.查看Sqlite 使用App Inspection&#xff0c;这是个好东西 打开方式&#xff1a;View → Tool Windows → App Inspection 界面如图&#xff1a; App inspection不但可以看Sqlite还可以抓包network和background task连抓包工具都省了。 非常好使 2.查看sharedPreference 使…

Elasticsearch:15 年来致力于索引一切,找到重要内容

作者&#xff1a;来自 Elastic Shay Banon 及 Philipp Krenn Elasticsearch 刚刚 15 岁了&#xff01;回顾过去 15 年的索引和搜索&#xff0c;并展望未来 15 年的相关内容。 Elasticsearch 刚刚成立 15 周年。一切始于 2010 年 2 月的一篇公告博客文章&#xff08;带有标志性的…

信呼OA办公系统sql注入漏洞分析

漏洞描述 信呼OA办公系统uploadAction存在SQL注入漏洞&#xff0c;攻击者可利用该漏洞获取数据库敏感信息。 环境搭建 源码下载地址&#xff1a;https://github.com/rainrocka/xinhu 下载后解压到本地网站根目录下&#xff0c;配置好数据库&#xff0c;然后安装即可 默认密…

机器学习算法 - 随机森林之决策树初探(1)

随机森林是基于集体智慧的一个机器学习算法&#xff0c;也是目前最好的机器学习算法之一。 随机森林实际是一堆决策树的组合&#xff08;正如其名&#xff0c;树多了就是森林了&#xff09;。在用于分类一个新变量时&#xff0c;相关的检测数据提交给构建好的每个分类树。每个…

原生Three.js 和 Cesium.js 案例 。 智慧城市 数字孪生常用功能列表

对于大多数的开发者来言&#xff0c;看了很多文档可能遇见不到什么有用的&#xff0c;就算有用从文档上看&#xff0c;把代码复制到自己的本地大多数也是不能用的&#xff0c;非常浪费时间和学习成本&#xff0c; 尤其是three.js &#xff0c; cesium.js 这种难度较高&#xff…

在 PyCharm 中接入deepseek的API的各种方法

在 PyCharm 中接入 DeepSeek 的 API&#xff0c;通常需要以下步骤&#xff1a; 1. 获取 DeepSeek API 密钥 首先&#xff0c;确保你已经在 DeepSeek 平台上注册并获取了 API 密钥&#xff08;API Key&#xff09;。如果没有&#xff0c;请访问 DeepSeek 的官方网站注册并申请 …

【2025新】基于springboot的问卷调查小程序设计与实现

目录 一、整体目录&#xff08;示范&#xff09;&#xff1a; 文档含项目技术介绍、E-R图、数据字典、项目功能介绍与截图等 二、运行截图 三、代码部分&#xff08;示范&#xff09;&#xff1a; 四、数据库表(示范)&#xff1a; 数据库表有注释&#xff0c;可以导出数据…

数据结构——Makefile、算法、排序(2025.2.13)

目录 一、Makefile 1.功能 2.基本语法和相关操作 &#xff08;1&#xff09;创建Makefile文件 &#xff08;2&#xff09;编译规则 &#xff08;3&#xff09;编译 &#xff08;4&#xff09;变量 ①系统变量 ②自定义变量 二、 算法 1.定义 2.算法的设计 &#xff…

什么是Docker多架构容器镜像

什么是Docker多架构容器镜像 在 Docker 中&#xff0c;同一个 Docker 镜像可以在不同的平台上运行&#xff0c;例如在 x86、ARM、PowerPC 等不同的 CPU 架构上。 为了支持这种多平台的镜像构建和管理&#xff0c;Docker 在 17.06 版本时引入了 Manifest 的概念&#xff0c;在…

【devops】 Git仓库如何fork一个私有仓库到自己的私有仓库 | git fork 私有仓库

一、场景说明 场景&#xff1a; 比如我们Codeup的私有仓库下载代码 放入我们的Github私有仓库 且保持2个仓库是可以实现fork的状态&#xff0c;即&#xff1a;Github会可以更新到Codeup的最新代码 二、解决方案 1、先从Codeup下载私有仓库代码 下载代码使用 git clone 命令…