当前位置: 首页 > article >正文

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

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;

}

运行结果截图

相关文章:

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

6-1 计算捐款总量 这里需要设计一个捐款人类Donator及一个相关函数getMaxName( )&#xff0c;Donator类中包含捐款人的姓名及其捐款额 代码清单&#xff1a; #include <iostream> using namespace std; class Donator { private: string name; float money; //单位&…...

如何学习Elasticsearch(ES):从入门到精通的完整指南

如何学习Elasticsearch&#xff08;ES&#xff09;&#xff1a;从入门到精通的完整指南 嘿&#xff0c;小伙伴们&#xff01;如果你对大数据搜索和分析感兴趣&#xff0c;并且想要掌握Elasticsearch这一强大的分布式搜索引擎&#xff0c;那么你来对地方了&#xff01;本文将为…...

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队列中加入恶意代码即可实现…...

Spring Boot 的约定优于配置:简化开发的艺术

# Spring Boot 的约定优于配置&#xff1a;简化开发的艺术 在现代软件开发中&#xff0c;Spring Boot 凭借其“约定优于配置”&#xff08;Convention Over Configuration&#xff0c;简称 CoC&#xff09;的理念&#xff0c;极大地简化了 Spring 应用的开发流程。本文将深入探…...

WSL Ubuntu 安装 CUDA 教程

WSL Ubuntu 安装 CUDA 教程 1. 概述2. 准备工作3. 删除旧的 GPG 密钥4. 安装 CUDA Toolkit4.1 使用 WSL-Ubuntu 包安装&#xff08;推荐&#xff09; 5. 设置环境变量6. 注意事项7. 参考链接8. 总结 1. 概述 随着 WSL 2 的推出&#xff0c;Windows 用户现在可以在 Windows 子系…...

docker运行perplexica

序 本文主要研究一下如何用docker运行perplexica 步骤 git clone git clone https://github.com/ItzCrazyKns/Perplexica.gitapp.dockerfile FROM docker.1ms.run/node:20.18.0-alpineARG NEXT_PUBLIC_WS_URLws://127.0.0.1:3001 ARG NEXT_PUBLIC_API_URLhttp://127.0.0.1…...

15、Python面试题解析:列表推导式-条件推导与嵌套推导

1. 列表推导式简介 列表推导式&#xff08;List Comprehension&#xff09;是 Python 中一种简洁的创建列表的方式。它允许我们通过一行代码生成列表&#xff0c;通常比传统的 for 循环更简洁、更易读。 基本语法 [表达式 for 元素 in 可迭代对象]表达式&#xff1a;对元素的…...

uvm错误记录4

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

正则表达式(Regular expresssion)

正则表达式 匹配单次 . &#xff1a;匹配任意一个字符 [ ] &#xff1a;匹配[ ]里举例的任意一个字符 /d &#xff1a;匹配数字0-9 /D &#xff1a;匹配非数字 /s &#xff1a;匹配空白或tab建 /S &#xff1a;匹配非空白 /w &#xff1a;…...

React 中级教程

1. useState 与 setState 深入理解 import React, { useState } from react;const Counter = () => {const [count, setCount] = useState(0);const increment = () => {setCount(count + 1); // setState 会异步更新};return (<div><p>Count: {count}</…...

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插件使用…...

高级 Conda 使用:环境导出、共享与优化

1. 引言 在 Conda 的基础包管理功能中&#xff0c;我们了解了如何安装、更新和卸载包。但对于开发者来说&#xff0c;如何更好地管理环境、导出环境配置、共享环境&#xff0c;以及如何优化 Conda 的使用效率&#xff0c;才是提高工作效率的关键。本篇博客将进一步深入 Conda …...

函数perror 和全局变量errno

#include <stdio.h> #include <errno.h> #include <fcntl.h>int main() {int fd open("nonexistent_file.txt", O_RDONLY);if (fd -1) {perror("Failed to open file");}return 0; }控制台有如下输出 Failed to open file: No such f…...

微信小程序的制作

制作微信小程序的过程大致可以分为几个步骤&#xff1a;从环境搭建、项目创建&#xff0c;到开发、调试和发布。下面我会为你简要介绍每个步骤。 1. 准备工作 在开始开发微信小程序之前&#xff0c;你需要确保你已经完成了以下几个步骤&#xff1a; 注册微信小程序账号&…...

QT 异步编程之多线程

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

人工智能之数学基础:线性子空间

本文重点 在前面的课程中,我们学习了线性空间,本文我们我们在此基础上学习线性子空间。在应用中,线性子空间的概念被广泛应用于信号处理、机器学习、图像处理等领域。 子空间的性质 子空间是线性空间的一部分,它需要满足下面的性质: 设V是数域F上的线性空间,W是V的一个…...

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…...

Python--常见库与函数

二、Python常见库与函数 2.1 OS库 常用功能&#xff1a;文件/目录操作、路径管理、环境变量。 import os # 路径操作 abs_path os.path.abspath("data.txt") exists os.path.exists(abs_path) # 目录操作 os.mkdir("logs") # 创建目录&#xff08;需处…...

算法——数学建模的十大常用算法

数学建模的十大常用算法在数学建模竞赛和实际问题解决中起着至关重要的作用。以下是这些算法的具体信息、应用场景以及部分算法的C语言代码示例&#xff08;由于篇幅限制&#xff0c;这里只给出部分算法的简要代码或思路&#xff0c;实际应用中可能需要根据具体问题进行调整和扩…...

JVM——垃圾回收算法

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

游戏APP如何通过精准广告策略实现广告变现收益增长?

不同类型的游戏APP合作AdSet聚合广告平台&#xff0c;量身定制广告变现方案&#xff0c;以提升变现收益的表现。#app广告变现 1、智能选择广告形式 基于用户的行为习惯&#xff0c;推荐优化广告格式&#xff0c;包括插屏广告、激励视频广告和Banner广告等&#xff0c;最大化广…...

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

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

vue3读取webrtc-stream 视频流

一.首先下载webrtc-stream&#xff0c;方便自己本地搭建视频流服务 https://download.csdn.net/download/cyw8998/90373521 解压后&#xff0c;启动命令 webrtc-streamer.exe -H 127.0.0.1:8020 二.vue3代码如下 <template><h1>video</h1><video id&…...

周考考题(学习自用)

1.查询student表中name叫张某的信息 select * from student where name张某; 2.写出char和varchar类型的区别 1&#xff09;char存储固定长度的字符串&#xff0c;varchar存储可变长度的字符串&#xff08;在实际长度的字符串上加上一个字节用于存储字符串长度&#xff09;&a…...

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…...

K-均值(K-means)聚类算法

K-均值&#xff08;K-means&#xff09;聚类算法是一种常用的无监督学习算法&#xff0c;用于将数据集分成 K 个簇&#xff08;clusters&#xff09;。该算法的基本思想是将数据点分为 K 个簇&#xff0c;使得每个数据点所属的簇内部的数据点之间的相似度最大化&#xff0c;而不…...

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;带有标志性的…...