OOP实验一

news/2024/10/9 16:58:56/文章来源:https://www.cnblogs.com/syf0824/p/18454635

任务1:

源码:

 1 #include <iostream>
 2 #include <string>
 3 #include <vector>
 4 #include <algorithm>
 5 using namespace std;
 6 // 声明
 7 // 模板函数声明
 8 template<typename T>
 9 void output(const T& c);
10 // 普通函数声明
11 void test1();
12 void test2();
13 void test3();
14 int main() {
15     cout << "测试1: \n";
16     test1();
17     cout << "\n测试2: \n";
18     test2();
19     cout << "\n测试3: \n";
20     test3();
21 }
22 // 函数实现
23 // 输出容器对象c中的元素
24 template <typename T>
25 void output(const T& c) {
26     for (auto& i : c)
27         cout << i << " ";
28     cout << endl;
29 }
30 // 测试1
31 // 组合使用算法库、迭代器、string反转字符串
32 void test1() {
33     string s0{ "0123456789" };
34     cout << "s0 = " << s0 << endl;
35     string s1{ s0 };
36     reverse(s1.begin(), s1.end()); // 反转指定迭代器区间的元素
37     cout << "s1 = " << s1 << endl;
38     string s2{ s0 };
39     reverse_copy(s0.begin(), s0.end(), s2.begin()); // 将指定迭代区间的元素拷贝到指定迭代器开始的目标区间,并且在复制过程中反转次序
40         cout << "s2 = " << s2 << endl;
41 }
42 // 测试2
43 // 组合使用算法库、迭代器、vector反转动态数组对象vector内数据
44 void test2() {
45     vector<int> v0{ 2, 0, 4, 9 };
46     cout << "v0: ";
47     output(v0);
48     vector<int> v1{ v0 };
49     reverse(v1.begin(), v1.end());
50     cout << "v1: ";
51     output(v1);
52     vector<int> v2{ v0 };
53     reverse_copy(v0.begin(), v0.end(), v2.begin());
54     cout << "v2: ";
55     output(v2);
56 }
57 // 测试3
58 // 组合使用算法库、迭代器、vector实现元素旋转移位
59 void test3() {
60     vector<int> v0{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
61     cout << "v0: ";
62     output(v0);
63     vector<int> v1{ v0 };
64     rotate(v1.begin(), v1.begin() + 1, v1.end()); // 旋转指定迭代器区间[v1.begin(), v1.end())之间的数据项,旋转后从迭代器v1.begin() + 1位置的数据项开始
65         cout << "v1: ";
66     output(v1);
67     vector<int> v2{ v0 };
68     rotate(v2.begin(), v2.begin() + 2, v2.end());
69     cout << "v2: ";
70     output(v2);
71     vector<int> v3{ v0 };
72     rotate(v3.begin(), v3.end() - 1, v3.end());
73     cout << "v3: ";
74     output(v3);
75     vector<int> v4{ v0 };
76     rotate(v4.begin(), v4.end() - 2, v4.end());
77     cout << "v4: ";
78     output(v4);
79 }

 

结果:

 

任务2:

源码:

 

 1 #include <iostream>
 2 #include <vector>
 3 #include <string>
 4 #include <algorithm>
 5 #include <numeric>
 6 #include <iomanip>
 7 using namespace std;
 8 // 函数声明
 9 // 模板函数声明
10 template<typename T>
11 void output(const T& c);
12 // 普通函数声明
13 int rand_int_100();
14 void test1();
15 void test2();
16 int main() {
17     cout << "测试1: \n";
18     test1();
19     cout << "\n测试2: \n";
20     test2();
21 }
22 // 函数实现
23 // 输出容器对象c中的元素
24 template <typename T>
25 void output(const T& c) {
26     for (auto& i : c)
27         cout << i << " ";
28     cout << endl;
29 }
30 // 返回[0, 100]区间内的一个随机整数
31 int rand_int_100() {
32     return rand() % 101;
33 }
34 // 测试1
35 // 对容器类对象指定迭代器区间进行赋值、排序
36 void test1() {
37     vector<int> v0(10); // 创建一个动态数组对象v0, 对象大小为10
38     generate(v0.begin(), v0.end(), rand_int_100); // 产生[0, 100]之间的随机整数赋值给指定迭代器区间[v0.begin(), v0.end())内的每个数据项
39     cout << "v0: ";
40     output(v0);
41     vector<int> v1{ v0 };
42     sort(v1.begin(), v1.end()); // 对指定迭代器区间[v1.begin(), v1.end())内数据项进行升序排序
43         cout << "v1: ";
44     output(v1);
45     vector<int> v2{ v0 };
46     sort(v2.begin() + 1, v2.end() - 1); // 对指定迭代器区间[v1.begin()+1,v1.end() - 1)内数据项进行升序排序
47     cout << "v2: ";
48     output(v2);
49 }
50 // 测试2
51 // 对容器类对象指定迭代器区间进行赋值、计算最大值/最小值/均值
52 void test2() {
53     vector<int> v0(10);
54     generate(v0.begin(), v0.end(), rand_int_100);
55     cout << "v0: ";
56     output(v0);
57     auto iter1 = min_element(v0.begin(), v0.end());
58     cout << "最小值: " << *iter1 << endl;
59     auto iter2 = max_element(v0.begin(), v0.end());
60     cout << "最大值: " << *iter2 << endl;
61     auto ans = minmax_element(v0.begin(), v0.end());
62     cout << "最小值: " << *(ans.first) << endl;
63     cout << "最大值: " << *(ans.second) << endl;
64     double avg1 = accumulate(v0.begin(), v0.end(), 0) / v0.size();
65     cout << "均值: " << fixed << setprecision(2) << avg1 << endl;
66     cout << endl;
67     vector<int> v1{ v0 };
68     cout << "v0: ";
69     output(v0);
70     sort(v1.begin(), v1.end());
71     double avg2 = accumulate(v1.begin() + 1, v1.end() - 1, 0) / (v1.size() - 2);
72     cout << "去掉最大值、最小值之后,均值: " << avg2 << endl;
73 }

 

结果:

 

 

任务3:

源码:

 

结果:

 

任务4:

源码:

 

结果:

 

任务5:

源码:

结果:

 

任务6:

源码:

 

 1 #include<iostream>
 2 #include<cstdlib>
 3 #include<ctime>
 4 #include<iomanip>
 5 int main() {
 6     using namespace std;
 7     char sym[] = { '+','-','*','/' };
 8     int num = 0;
 9     int i;
10     srand((unsigned int)time(NULL));
11     for (i = 0; i < 10; i++)
12     {
13         int a, b, c;
14         a = rand() % 9 + 1;
15         b = rand() % 9 + 1;
16         c = rand() % 4;
17         if (c == 1 && a < b)
18         {
19             i--;
20             continue;
21         }
22         else if (c == 3 && a % b != 0)
23         {
24             i--;
25             continue;
26         }
27         int re;
28         cout << a << sym[c] << b << "=";
29         cin >> re;
30         int right;
31         switch (c) {
32         case 0:
33             right = a + b;
34             break;
35         case 1:
36             right = a - b;
37             break;
38         case 2:
39             right = a * b;
40             break;
41         case 3:
42             right = a / b;
43             break;
44         }
45         if (right == re) {
46             num++;
47         }
48     }
49     double rate = num * 1.0 / 10;
50     cout << "正确率:" << setiosflags(ios::fixed) << setprecision(2) << 100.0 * rate << "%" << endl;
51 }

结果:

 

 

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

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

相关文章

最近运行VBA代码时候出现这样错误,现已经找到了问题所在处

最近运行VBA代码时候出现这样错误,《我们遇到了一个无法恢复的问题》经过研究这是一个有关数据类型相关的问题

组件间通信--自定义事件

自定义事件实现通信的逻辑是给子组件的标签上绑定一个自定义事件。 在子组件中写触发事件,传入实参。 在父组件中定义具体事件方法体逻辑。 例如:<!-- 绑定自定义事件xxx,实现子组件给父组件传递数据 --> <Event2 @xxx="handler3"></Event2>在子…

Coppersmith定理

原理 用到格基规约和LLL算法。。。 啊?你问那是什么?去搜吧,反正我没看懂。 实现 有一个 e 阶的多项式 f, 那么可以:在模 n 意义下,快速求出 以内的根 给定 β,快速求出模某个 b 意义下较小的根,其中b≥​​​,是 n 的因数。一般采用sage下的small_roots(X=2^kbits,be…

威尔逊定理

初识威尔逊定理 什么是威尔逊定理,即对于一个质数p来说,有 (p-1)! ≡ -1 (mod p) 恒成立,其逆定理也成立,即对于一个数p来说若满足上式,则p一定是素数。 于是通过这个性质我们能够得到素数分布的函数: f(n) = sin(π*((n-1)!+1)/n) 当函数值为0时,对应n就是一个素数,但…

fiddler抓模拟器的手机包

1、fiddler中设置 a、设置抓取https接口 b.设置端口和允许所有设备连接 下载2、下载模拟器并打开模拟器 3、开始模拟器是平板模式,改成手机竖屏模式 改成900*1600 4、在window中的运行中输入:inetcpl.cpl b、点击连接 输入代理地址:127.0.0.1 端口号:8888 模拟器中的设置…

浴火之路完整无修百度/云网盘下载[HD1080高清]在线免费无删减下载链接

电影,历来是承载故事的一种重要媒介,但《浴火之路》这部影片,却不仅仅是一个故事,它是一次人性的深刻剖析,是对爱与痛苦的共鸣,在这个瞬息万变的时代,很多人可能会问:看电影究竟是为了什么?为了娱乐、为了消遣,还是寻找那久违的感动?当你坐在影院那舒适的座椅上,当…

prometheus学习笔记之黑盒探针blackbox_exporter

项目地址:https://github.com/prometheus/blackbox_exporter 一、安装blackbox_exporterwget https://github.com/prometheus/blackbox_exporter/releases/download/v0.25.0/blackbox_exporter-0.25.0.linux-amd64.tar.gz tar xf blackbox_exporter-0.25.0.linux-amd64.tar.gz…

uniapp-开发APP的坑点,文件上传,选择方面

1.文件上传 uni.uploadFile 在H5端可以上传成功,在APP无法上传成功, 1.先检查url:必须是全路径,之前是 url: /api/test 所以上传不上去,2,manifest配置权限<uses-feature android:name="android.hardware.camera"/> <uses-feature android:name="an…

iPhone 16 Pro上百款充电头充电功率测试

一、苹果原装充电器测试截图: 以下所有测试均为“充电头网实验室”评测,且测试手机为最新的iPhone 16 Pro手机,充电线均为iPhone 16 Pro 最新的原装编织充电线,所以只有充电头是不同的,排除了其他因素的干扰。视频网站来自于B站: https://www.bilibili.com/video/BV1XixL…

如何用AI快速开发一个小程序?

从idea到上线,只花了2个小时,整个流程中,除了手动调整样式的数值,没有写一行代码,全部由AI能力,结合prompt帮助我完成。ChatGPT这个轰动全球的产品自问世以来,已经过了将近2年的时间,各行各业的精英们如火如荼的将AI能力应用到自己生产的产品中来。为分担人类的部分工作…

装酷就来这,秒变黑客精英的6个网站

有网友问:有没有装黑客,炫酷的网站? 回答:当然有。当黑客,门槛太高;装黑客,都是1秒钟的事情。下面介绍几个: 第一个:hackertyper 网址:https://hackertyper.net/ 随意输入文字,屏幕出现整齐的代码 这个是装酷首选,速度快,网页干净! 第二个:GEEKtyper 网址: ht…