C++实验 面向对象编程

一、实验目的:

掌握类中静态成员的定义方法,初始化方法,使用方法;
掌握类的友元说明方法,理解友元的使用特点

二、实验内容:

1、编写程序,统计某旅馆住宿客人的总数,要求输入客人姓名,输出客人编号(按先后顺序自动生成),姓名以及总人数。

在这里插入图片描述

#include<iostream>
#include<stdlib.h>
#include<iomanip>
using namespace std;
struct ListPeople {int num;string name;struct ListPeople* next;ListPeople(int num, string name){this->num = num;this->name = name;}
};
void sumpeople(ListPeople* m)//输出总人数
{int sum = 0;while (m->next != NULL){sum++;m = m->next;}cout <<"总人数为:" << sum << "人" << endl;
}
int main()
{int num = 0;string name = "";ListPeople* head = new ListPeople(num, name);head->next = NULL;int number = 0;cout << "输入0查看客人总数" << endl;cout << "输入1客人入住" << endl;cout << "输入2客人退房" << endl;cout << "输入-1退出" << endl;while (number != -1){cout << "请输入编号:";cin >> number;switch (number){case 0://输出总人数{sumpeople(head);break;}case 1://客人入住{cout << "请输入入住客人姓名:";cin >> name;num++;ListPeople* q = new ListPeople(num, name);ListPeople* p = head;while (p->next != NULL)p = p->next;p->next = q;q->next = NULL;cout << "客人编号为:" << setw(4) << setfill('0') << q->num << ",客人姓名为:" << q->name << endl;sumpeople(head);break;}case 2://客人退房{ListPeople* m = head;int flag = 0;if (m->next == NULL){cout << "目前没有客人入住,无法退房!" << endl;break;}cout << "请输入退订客人姓名:";cin >> name;while (m->next != NULL){if (m->next->name == name){ListPeople* d = m->next;m->next = m->next->next;delete d;cout << "客人退订成功" << endl;sumpeople(head);flag = 1;break;}m = m->next;}if (flag == 0)cout << "未查找到该客人!" << endl;break;}           default:if (number != -1)cout << "请重新输入" << endl;elsecout << "已退出" << endl;}}   return 0;
}
2、编写学生类Stu,包含学生姓名,成绩,设计一个友员函数,将学生成绩按大到小排序。

在这里插入图片描述

#include <iostream>
#include <vector>
#include <algorithm>using namespace std;
class Stu {
private:string name;float score;
public:Stu(string name, float score) : name(name), score(score) {}friend bool operator<(const Stu& s1, const Stu& s2);void print() {cout << "Name: " << name << ", Score: " << score << endl;}
};
bool operator<(const Stu& s1, const Stu& s2) {return s1.score > s2.score;
}
int main() {std::vector<Stu> students;// 添加学生信息students.push_back(Stu("Tom", 85.5));students.push_back(Stu("Alice", 92.0));students.push_back(Stu("John", 78.5));students.push_back(Stu("Emma", 95.0));// 按成绩排序std::sort(students.begin(), students.end());// 输出排序结果for (auto it : students) {it.print();}return 0;
}
1、编写整型数组类 arrow,能创建任意长度数组对象,用深复制

在这里插入图片描述

#include <iostream>
#include <cstring>
using namespace std;class Array {
public:int* arr;int size;Array(int length) {size = length;arr = new int[length];}Array(const Array &a) {size = a.size;arr = new int[size];memcpy(arr, a.arr, size*sizeof(int)); }~Array() {delete[] arr;}
};int main() {Array a(5);int n;int x;cin>>n;for(int i=0;i<n;i++)cin>>x,a.arr[i]=x;Array b(a);for(int i=0;i<n;i++)cout << b.arr[i] << " " ;return 0;
}

2、已知三点座标,求三角形的面积。
在这里插入图片描述

#include <iostream>
#include <cmath>using namespace std;double getTriangleArea(int x1, int y1, int x2, int y2, int x3, int y3) {double a = sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1));double b = sqrt((x3-x2)*(x3-x2) + (y3-y2)*(y3-y2)); double c = sqrt((x1-x3)*(x1-x3) + (y1-y3)*(y1-y3));double s = (a + b + c) / 2;return sqrt(s*(s-a)*(s-b)*(s-c));
}int main() {int x1 , y1 ;int x2 , y2 ; int x3 , y3 ;cin>>x1>>y1;cin>>x2>>y2;cin>>x3>>y3;double area = getTriangleArea(x1, y1, x2, y2, x3, y3);cout << "Triangle area is: " << area << endl;return 0;
}

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

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

相关文章

[SaaS] AI试衣间

就刚刚&#xff01;我在淘宝用AI试了1000件衣服~淘宝AI试衣间&#xff0c;1秒换装&#xff0c;立即解锁不一样的你&#xff01;https://mp.weixin.qq.com/s/mZiNmepoWddYaLbEaap1Ow

C#入门及进阶教程| Windows编程(一)Windows应用的基本概念及开发步骤

1.Windows应用的基本概念 C#可以为Windows操作系统生成多类应用&#xff0c;其中最基本的两类应用是基于控制台的应用和基于GUI&#xff08;Graphics User Interface&#xff0c;图形用户界面&#xff09;的应用。基于控制台的应用程序的输出是基于文本的&#xff0c;不需要用…

技术资讯:Volar正式更名为Vue-Official

大家好&#xff0c;我是大澈&#xff01; 本文约700字&#xff0c;整篇阅读大约需要1分钟。 关注微信公众号&#xff1a;“程序员大澈”&#xff0c;免费加入问答群&#xff0c;一起交流技术难题与未来&#xff01; 现在关注公众号&#xff0c;免费送你 ”前后端入行大礼包“…

C语言例3-19:逻辑运算的例子

逻辑运算符的优先级&#xff1a; &#xff01; 优先于 双目运算符 优先于 关系运算符 优先于 && 优先于 ||单目逻辑运算符&#xff01; 和单目算术运算符 的优先级相同&#xff0c;结合性均是从右至左双目逻辑运算符“&&”和“||”的结合性是从左…

Android Studio实现内容丰富的安卓校园二手交易平台

获取源码请点击文章末尾QQ名片联系&#xff0c;源码不免费&#xff0c;尊重创作&#xff0c;尊重劳动 项目编号038 1.开发环境android stuido jdk1.8 eclipse mysql tomcat 2.功能介绍 安卓端&#xff1a; 1.注册登录 2.查看二手商品列表 3.查看二手商品详情 4.评论商品&…

试炼2 Marcille

文章目录 前言2D3D旋转展示动画blender工程文件头部起手式细节 前言 迷宫饭 Marcille 2D 3D 旋转展示动画 清晰展示: https://live.csdn.net/v/371218 blender工程文件 https://download.csdn.net/download/Computer_Tech/88972046 头部起手式 八点眼 侧峰线 三角鼻(三…

Java基础知识总结(3)

冒泡排序 冒泡排序是比较基础的排序算法之一&#xff0c;其思想是相邻的元素两两比较&#xff0c;较大的数下沉&#xff0c;较小的数冒起来&#xff0c;这样一趟比较下来&#xff0c;最大(小)值就会排列在一端。整个过程如同气泡冒起&#xff0c;因此被称作冒泡排序。 import…

3.AD域控如何做补丁策略?通过组策略如何做域控的补丁策略?

目录 (1)补丁简介 1.简介 2.为什么要做AD(Active Directory)统一管理电脑的补丁? (2)实战配置过程 1.实验环境介绍 第一步:新建组策略-编辑 第二步:策略应用到OU 第三步:检测是否成功 补丁策略带来的瑕疵-解决方案 解决方式: (1)补丁简介 1.简介 Wi…

显著性检验P值...

显著性检验&#xff1a;P值和置信度_显著性p<0.05,p<0.01,p<0.001-CSDN博客 看论文里面一般在结果后面都会加上 虽然学过概率统计&#xff0c;但是一直不懂在结果这里加上这个代表什么含义&#xff0c;以及如何计算&#xff0c;参考上面链接进行学习。 P值指的是比较…

springboot RestTemplate 发送xml、接收xml、pojo中的属性转为属性

背景 调用第三方接口时&#xff0c;它们的系统比较老&#xff0c;只支持接收xml而不支持json&#xff0c;默认的springboot RestTemplate不支持发送xml&#xff0c;添加依赖就可以解决这个问题。 添加jackson-dataformat-xml依赖 FasterXML/jackson-dataformat-xml是一个xml…

torchrun、 torch.distributed.launch 多节点分布式训练使用案例

数据并行分布式图: 梯度更新 分布式训练参数含义: nnodes:节点的数量,通常一个节点对应一个主机,方便记忆,直接表述为主机 node_rank:节点的序号,从0开始 nproc_per_node:一个节点中显卡的数量 -master_addr:master节点的ip地址,也就是0号主机的IP地址,该参数是…

保护数据免受.DevicData-P-XXXXXXXX勒索病毒的攻击:恢复数据的关键步骤

导言&#xff1a; 你突然发现你的电脑上出现了一个奇怪的文件扩展名&#xff0c;以“.DevicData-P-XXXXXXXX”为结尾。别慌&#xff01;你很可能中了“DevicData-P-XXXXXXXX”勒索病毒。这种病毒是一种恶意软件&#xff0c;会将你的文件加密&#xff0c;然后勒索赎金以解密它们…

Mysql中的engine

Mysql中的engine 表缺省是InnoDB类型。 修改表的引擎类型&#xff1a; ALTER TABLE tablename ENGINE MyISAM &#xff1b; 1.engine myisam MyIASM是IASM表的新版本&#xff0c;有如下扩展&#xff1a;二进制层次的可移植性。NULL列索引。对变长行比ISAM表有更少的碎片。支…

Qt学习--this指针的使用

在 C 中&#xff0c;this 指针是一个特殊的指针&#xff0c;它指向当前对象的实例。 在 C 中&#xff0c;每一个对象都能通过 this 指针来访问自己的地址。 this是一个隐藏的指针&#xff0c;可以在类的成员函数中使用&#xff0c;它可以用来指向调用对象。 当一个对象的成员…

【vim 学习系列文章 14 -- 快速选中多行】

文章目录 vim 快速选中多行的映射 vim 快速选中多行的映射 在 Vim 中&#xff0c;您可以通过定义一个映射&#xff08;map&#xff09;来快捷地在 Visual 模式下选择指定数量的行。例如&#xff0c;您可能想通过按键快速选择下面的 10 行。 以下是一个 Vim 映射示例&#xff…

实验2 芯片测试算法设计

一、【实验目的】 &#xff08;1&#xff09;理解分治策略的设计思想&#xff1b; &#xff08;2&#xff09;熟悉将伪码转换为可运行的程序的方法&#xff1b; &#xff08;3&#xff09;能够根据算法的要求设计具体的实例。 二、【实验内容】 有n片芯片&#xff0c;其中好芯片…

并发编程之 sleep 与 yield的详细解析

3.7 sleep 与 yield sleep 调用 sleep 会让当前线程从 Running 进入 Timed Waiting 状态&#xff08;阻塞&#xff09; 其它线程可以使用 interrupt 方法打断正在睡眠的线程&#xff0c;这时 sleep 方法会抛出 InterruptedException public static void main(String[] args) …

基于单片机的简单温控风扇设计与实现

基于单片机的简单温控风扇设计与实现 摘要&#xff1a; 随着智能家居的兴起&#xff0c;温控设备在日常生活中扮演着越来越重要的角色。本文设计并实现了一款基于单片机的简单温控风扇系统。该系统能够根据环境温度自动调整风扇转速&#xff0c;为用户提供更加舒适的使用体验。…

Spring Boot整合canal实现数据一致性解决方案解析-部署+实战

&#x1f3f7;️个人主页&#xff1a;牵着猫散步的鼠鼠 &#x1f3f7;️系列专栏&#xff1a;Java全栈-专栏 &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正 目录 1.前言 2.canal部署安装 3.Spring Boot整合canal 3.1数据库与缓存一致性问题…

嵌入式驱动学习第三周——如何优化驱动及提高驱动稳定性

前言 在 Linux 中应用程序运行在用户空间&#xff0c;应用程序错误之后&#xff0c;并不会影响其他程序的运行&#xff0c;而驱动工作在内核层&#xff0c;是内核代码的一部分&#xff0c;当驱动出现问题之后&#xff0c;可能会导致整个系统的崩溃。所以在驱动中&#xff0c;需…