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;
            else
                cout << "已退出" << 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;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机二级(Python)真题讲解每日一题:《绘制雪花》

在横线处填写代码&#xff0c;完成如下功能‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬…

Vue.js 应用实现监控可观测性最佳实践

前言 Vue 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建&#xff0c;并提供了一套声明式的、组件化的编程模型&#xff0c;帮助你高效地开发用户界面。无论是简单还是复杂的界面&#xff0c;Vue 都可以胜任。 TinyPro 是一套使用 Vue …

SQL Server错误:15404

执行维护计划失败&#xff0c;提示SQL Server Error 15404 无法获取有关... 异常如下图&#xff1a; 原因&#xff1a;数据库用户名与计算机名称不一致 解决办法&#xff1a;1.重名称数据库用户名 将前缀改成计算机名 2.重启SQL Server代理

JAVA基础—JVM内存结构基础需知

1.JVM内存结构 JVM内存结构分为5个区域&#xff1a;方法区&#xff0c;虚拟机栈&#xff0c;本地方法栈、堆、程序计数器。 1.方法区&#xff08;Method Area&#xff09;&#xff1a;用于存储类的结构信息、常量、静态变量、即使编译器编译后的代码等数据。方法区也是所有线…

Ansys Lumerical | 激光雷达天线仿真

附件下载 联系工作人员获取附件 在本文中&#xff0c;我们将了解如何根据激光雷达应用需求设计和优化相控阵光栅天线。 概述 激光雷达&#xff08;LIDAR&#xff09;是“light detection and ranging”的简称&#xff0c;近年来由于在机器人、自动驾驶汽车、高精度测绘等领域…

自动写作软件哪个好?分享7款独家推荐

随着人工智能技术的不断发展&#xff0c;自动写作软件正逐渐成为现代写作的利器。这些AI写作工具能够帮助用户高效地生成文章、报告、新闻稿等内容&#xff0c;为写作工作带来了极大的便利。然而&#xff0c;市面上的自动写作软件琳琅满目&#xff0c;让人眼花缭乱。为了帮助读…

Java多线程学习(一)

1、什么是多线程 进程的执行需要依赖线程。线程是进程的最小执行单位&#xff0c;每一个进程中最少有一个线程。 例如&#xff1a;使用某网盘下载时&#xff0c;当我们同时进行下载和上传操作时&#xff08;同一时间同时进行&#xff09;&#xff0c;就使用到了多线程&#x…

德国法兰克福交易所股票清单列表数据API接口

# Restful API https://tsanghi.com/api/fin/stock/XFRA/list?token{token}更新时间&#xff1a;收盘后3~4小时。 更新周期&#xff1a;每天。 请求方式&#xff1a;GET。 # 测试&#xff1a;返回不超过10条数据&#xff08;2年历史&#xff09; https://tsanghi.com/api/fin/…

【Java,Redis】Redis 数据库存取字符串数据以及类数据

1、 字符串存取数据 Resource private StringRedisTemplate stringRedisTemplate;//从Redis中获取string字符串 stringRedisTemplate.opsForValue().get("cache:shop:"id); //Json -> class Shop shop JSONUtil.toBean(ShopJson,Shop.class); //字符串写入redis…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的自动驾驶目标检测系统详解(深度学习+Python代码+PySide6界面+训练数据集)

摘要&#xff1a;开发自动驾驶目标检测系统对于提高车辆的安全性和智能化水平具有至关重要的作用。本篇博客详细介绍了如何运用深度学习构建一个自动驾驶目标检测系统&#xff0c;并提供了完整的实现代码。该系统基于强大的YOLOv8算法&#xff0c;并对比了YOLOv7、YOLOv6、YOLO…

什么是VR应急预案演练虚拟化|VR体验馆加盟|元宇宙文旅

VR 应急预案演练虚拟化指的是利用虚拟现实&#xff08;Virtual Reality&#xff0c;VR&#xff09;技术进行应急预案演练的过程。在传统的应急预案演练中&#xff0c;人们通常需要在实际场地或模拟环境中进行演练&#xff0c;这可能存在一些限制&#xff0c;如成本高昂、场地受…

解析KafkaConsumer类的神奇之道

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 解析KafkaConsumer类的神奇之道 前言KafkaConsumer双线程设计主线程&#xff08;消费线程&#xff09;&#xff1a;心跳线程&#xff1a;示例代码&#xff1a; KafkaConsumer线程不安全线程安全的替代…

PHP爬虫技术:利用simple_html_dom库分析汽车之家电动车参数

摘要/导言 本文旨在介绍如何利用PHP中的simple_html_dom库结合爬虫代理IP技术来高效采集和分析汽车之家网站的电动车参数。通过实际示例和详细说明&#xff0c;读者将了解如何实现数据分析和爬虫技术的结合应用&#xff0c;从而更好地理解和应用相关技术。 背景/引言 随着电…

非空约束

oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 非空约束 所谓的非空约束&#xff0c;指的是表中的某一个字段的内容不允许为空。如果要使用非空约束&#xff0c;只需要在每个列的后面利用“NOT NULL”声明即可 -- 删除数…

Java习题中 哈希表的理论 有效的字母异位词 快乐数 两数之和

关于 哈希表的理论 今天最大的疑惑好像就是map的复杂度怎么算哈哈,一般n个元素map的复杂度就是On哦,不需要想得太复杂了,冲突的空间并不会造成一个量级,改变n前面的常数不会影响空间复杂度哈提醒&#xff01;熟悉好map,set的API哦 关于 有效的字母异位词 为什么遍历第二个字符…

Linux异步通知实验:应用程序对异步通知的处理

一. 简介 前面文章学习了 应用程序对异步通知的处理方法&#xff0c;另一篇文章实现了Linux驱动对异步通知的处理&#xff1a; Linux应用程序对异步通知的处理-CSDN博客 Linux异步通知实验&#xff1a;驱动中异步通知的处理-CSDN博客 本文继续Linux异步通知实验&#xff0c…

想进阿里?先搞懂Spring Bean作用域!

大家好,我是小米!今天我来和大家分享一下 Java 开发中一项非常重要的技术——参数校验。参数校验在我们的代码中起着至关重要的作用,它能够确保我们的应用程序接收到正确的数据,并且保证了系统的安全性和稳定性。在过去,我们可能会通过繁琐的 if-else 来进行参数校验,但是…

AI视频矩阵混剪系统|罐头鱼AI批量混剪定时发送

AI视频矩阵混剪系统&#xff1a;智能创作与发布的完美结合 随着社交媒体平台的快速发展&#xff0c;视频已成为各行业推广和传播的热门方式。然而&#xff0c;对于许多人来说&#xff0c;制作高质量的视频仍然是一项挑战。Q:290615413但现在&#xff0c;有了AI视频矩阵混剪系统…

lftp服务与http服务(包含scp服务)详解

目录 前言: 1.lftp服务 1.1lftp服务的介绍以及应用场景 1.2安装lftp服务 1.2进行配置 1.3实际操作 2.http服务 2.1http服务介绍以及应用场景 2.1安装httpd服务 2.2进行配置 2.3实际操作 3.scp服务 3.1scp服务的介绍以及应用场景 致谢: 前言: 在当今互联网…

xss.haozi.me靶场“0x0B-0x12”通关教程

君衍. 一、0x0B 实体编码绕过二、0x0C script绕过三、0x0D 注释绕过四、0X0E ſ符号绕过五、0x0F 编码解码六、0x10 直接执行七、0x11 闭合绕过八、0x12 闭合绕过 XSS-Labs靶场“1-5”关通关教程 XSS-Labs靶场“6-10”关通关教程 Appcms存储型XSS漏洞复现 XSS-Labs靶场“11-13、…