首页 > 其他分享 >OOP实验一

OOP实验一

时间:2024-10-09 16:49:01浏览次数:1  
标签:begin end cout v0 v1 实验 OOP include

任务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 }

结果:

 

 

标签:begin,end,cout,v0,v1,实验,OOP,include
From: https://www.cnblogs.com/syf0824/p/18454635

相关文章

  • 实验1 现代C++编程初体验
    任务一#include<iostream>#include<string>#include<vector>#include<algorithm>usingnamespacestd;template<typenameT>voidoutput(constT&c);voidtest1();voidtest2();voidtest3();intmain(){cout<<&qu......
  • 实验1
    #include<iostream>#include<string>#include<vector>#include<algorithm>usingnamespacestd;template<typenameT>voidoutput(constT&c);voidtest1();voidtest2();voidtest3();intmain(){cout<<&qu......
  • 《DNK210使用指南 -CanMV版 V1.0》第二十八章 音频播放实验
    第二十八章音频播放实验1)实验平台:正点原子DNK210开发板2)章节摘自【正点原子】DNK210使用指南-CanMV版V1.03)购买链接:https://detail.tmall.com/item.htm?&id=7828013987504)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/k210/ATK-DNK210.html5)正点原......
  • 20222407 2024-2025-1《网络与系统攻防技术》实验一实验报告
    1.实验内容1.1本周学习内容1.1.1缓冲区溢出的定义和原因定义:写入缓冲区的数据量超过该缓冲区能容纳的最大限度,造成溢出的数据改写了与该缓冲区相邻的原始数据的情形。原因:(直接)由于代码语言的设计问题、程序员的安全意识问题,程序没有严格的内存越界检查;(根本)冯诺依曼体系的安全......
  • 20222314 2024-2025-1 《网络与系统攻防技术》实验一实验报告
    网络攻防实验报告姓名:陈振烨学号:20222314实验日期:2024/09/29—2024/10/09实验名称:缓冲区溢出和shellcode指导教师:王志强实验要求: 1.掌握NOP,JNE,JE,JMP,CMP汇编指令的......
  • PTA JAVA语言 面向对象程序设计 作业二 6-1 sdut-oop-7 计算长方体的体积与质量(类和对
    6-1sdut-oop-7计算长方体的体积与质量(类和对象)分数10作者 周雪芹单位 山东理工大学现根据长方体的长、宽、高、密度,求其底面周长、底面积、体积、质量。若长、宽、高、密度之一有数据为0或者负数,则不能构成长方体,输出的值均为0。补充完整如下类的定义:classCuboid{......
  • 实验十二 迈克耳孙干涉仪
         ......
  • OOP实验一
    ##任务一代码:1//现代C++标准库、算法库体验2//本例用到以下内容:3//1.字符串string,动态数组容器类vector、迭代器4//2.算法库:反转元素次序、旋转元素5//3.函数模板、const引用作为形参67#include<iostream>8#include<string>......
  • 解决ERROR ResizeObserver loop completed with undelivered notifications.
    https://www.cnblogs.com/luo9tian/p/18116299该报错虽然不影响项目运行,但是影响开发效率,总是弹出报错的黑框很烦人该报错原因:newResizeObserver包裹的方法,在布局发生变化时,不支持每帧都调用解决方法:用window.requestAnimationFrame包裹回调函数在App.vue/main.js中加......
  • OPP__实验一
    任务一  1//现代C++标准库、算法库体验2//本例用到以下内容:3//1.字符串string,动态数组容器类vector、迭代器4//2.算法库:反转元素次序、旋转元素5//3.函数模板、const引用作为形参67#include<iostream>8#include<string>9#in......