首页 > 编程语言 >实验一,现代C++编程初体验

实验一,现代C++编程初体验

时间:2024-10-11 18:37:09浏览次数:1  
标签:begin 初体验 end cout 编程 C++ v0 v1 实验

一、实验目的

 体验C++的标准库,算法库用法。数据表示,分支循环,函数和标准库等,编程解决简单基础问题。

二、实验准备

 第二章C++语言简单设计

第三章函数

第九章 函数模板

 

三、实验内容

 

1. 实验任务1

代码:

 1 #include<iostream>
 2 #include<string>
 3 #include<vector>
 4 #include<algorithm>
 5 
 6 using namespace std;
 7 
 8 template <typename T>
 9 void output (const T &c);
10 void test1();
11 void test2();
12 void test3();
13 
14 int main(){
15     cout <<"测试1:\n" ;
16     test1();
17     
18     cout <<"\n测试2:\n";
19     test2();
20     
21     cout <<"\n测试3:\n";
22     test3();
23     
24     
25 } 
26 template <typename T>
27 void output(const T &c){
28     for (auto &i:c)
29         cout << i  << " ";
30         cout <<endl;
31         
32 }
33 void test1(){
34     string s0{"0123456789"};
35     cout <<"s0 = "<<s0<<endl;
36     
37     string s1{s0};
38     reverse(s1.begin(),    s1.end());
39     cout <<"s1 = "<<s1<<endl;
40     
41     string s2{s0};
42     reverse_copy(s0.begin(),s0.end(),s2.begin());
43      
44     cout << "s2 = "<<s1<<endl;
45 }
46 
47 void test2()
48 {
49     vector <int> v0{2,0,4,9};
50     cout<<"v0: ";
51     output(v0);
52     
53     vector<int> v1{v0};
54     reverse(v1.begin(),v1.end());
55     cout <<"v1: ";
56     output(v1);
57     
58     vector<int> v2{v0};
59     reverse_copy(v0.begin(),v0.end(),v2.begin());
60     cout<<"v2: ";
61     output(v2);
62 }
63 
64 void test3(){
65     vector<int> v0{0,1,2,3,4,5,6,7,8,9};
66     cout<<"v0: " ;
67     output(v0);
68     
69     vector<int> v1{v0};
70     rotate(v1.begin(),v1.begin()+1,v1.end());
71     cout << "v1: ";
72     output(v1);
73     
74     vector<int>v2{v0};
75     rotate(v2.begin(),v2.begin()+2,v2.end());
76     cout<<"v2: ";
77     output(v2);
78 
79     vector<int> v3{v0};
80     rotate(v3.begin(),v3.end()-1,v3.end());
81     cout <<"v3: " ;
82     output(v3);
83     
84     vector<int>v4{v0};
85     rotate (v4.begin(),v4.end()-2,v4.end( ));
86     cout<<"v4: ";
87     output(v4);
88     
89 }
90 
91 
92  

 

 

 

运行截图:

 

 

 

问题回答:

 

 

 

2. 实验任务2

代码:

 

 1 #include<iostream>
 2 #include<vector>
 3 #include<string>
 4 #include<algorithm>
 5 #include<numeric>
 6 #include<iomanip>
 7 
 8 
 9 using namespace std;
10 
11 template < typename T>
12 void output (const T&c);
13 
14 
15 int rand_int_100();
16 void test1();
17 void test2();
18 
19 int main(){
20     cout << "测试1:\n";
21     test1();
22     
23     cout<<"\n测试2: \n";
24     test2();
25     
26 }
27 
28 template <typename T>
29 void output (const T&c){
30     
31     for (auto &i:c)
32         cout<< i  << " ";
33     cout<<endl;
34 }
35 
36 
37 int rand_int_100(){
38     
39     return rand()%101;
40     
41 }
42 
43 void test1(){
44     vector<int> v0(10);
45     generate(v0.begin(),v0.end(),rand_int_100);
46     cout << "v0: ";
47     output(v0);
48     vector<int> v1{v0};
49     sort(v1.begin(),v1.end());
50     
51     cout << "v1: ";
52     output(v1);
53     
54     vector <int> v2{v0};
55     sort(v2.begin()+1,v2.end()-1);
56     
57     cout << "v2: ";
58     output(v2);
59      
60 }
61 
62 void test2(){
63     
64     
65     vector <int> v0(10);
66     generate(v0.begin(),v0.end(),rand_int_100);
67     cout<< "v0: ";
68     output(v0);
69     
70     auto iter1 = min_element (v0.begin(),v0.end());
71     cout<<"最小值:"<< *iter1<<endl;
72     
73     auto iter2 = max_element(v0.begin(),v0.end());
74     cout<<"最大值:"<< *iter2<<endl;
75     
76     auto ans = minmax_element(v0.begin(),v0.end());
77     cout<<"最小值:"<< *(ans.first)<<endl;
78     cout<<"最大值:"<<*(ans.second)<<endl;
79     double avg1= accumulate (v0.begin(),v0.end(),0)/v0.size();
80     cout<<"均值:"<<fixed<<setprecision(2)<<avg1<<endl;
81     
82     cout << endl;
83     vector <int> v1{v0};
84     cout<<"v0: ";
85     output(v0);
86     sort(v1.begin(),v1.end());
87     double avg2 = accumulate (v1.begin()+1,v1.end()-1,0)/(v1.size()-2);
88     cout<<"去掉最大值、最小值之后,均值:"<<avg2<<endl; 
89      
90 }
91  

 

运行截图:

 

 

 

问题回答:

 

 

 

3. 实验任务3

代码:

 

 

运行截图:

 

 

 问题回答:

 

 

 

4. 实验任务4

代码:

 

 

运行截图:

 

 

 问题回答:

 

 

 

5. 实验任务5

代码:

 

 

运行截图:

 

 

 问题回答:

 

 

 

6. 实验任务6

代码:

 

 

运行截图:

 

 

 问题回答:

 

 

 

7. 实验任务7

代码:

 

 

运行截图:

 

 

 问题回答:

 

 

 

8. 实验任务8

代码:

 

 

运行截图:

 

 

 问题回答:

 

 

 

四、实验结论

1. 实验任务1

 

2. 实验任务2

 

3. 实验任务3

 

4. 实验任务4

 

5. 实验任务5

 

6. 实验任务6

 

7. 实验任务7

 

8. 实验任务8

 

五、实验总结(选) 

 

标签:begin,初体验,end,cout,编程,C++,v0,v1,实验
From: https://www.cnblogs.com/andongni51/p/18454479

相关文章

  • 找到你的编程“秘密武器”:提升工作效率的工具分享
    在如今竞争激烈、任务繁忙的工作环境中,开发者们始终在寻找能够提高效率的编程工具。无论是智能的代码编辑器,强大的版本控制工具,还是帮助自动化日常工作流程的脚本,正确的工具能让开发工作变得更加轻松,并大幅提升生产力。在这篇文章中,我们将分享几款广受好评的编程工具,帮助你在开......
  • ROS1,用C++实现获取激光雷达数据,并使用gazebo测试
    实现步骤构建一个新的软件包,包名叫做lidar_pkg。cdcatkin_ws/src/catkin_create_pkglidar_pkgroscpprospysensor_msgs输入code,打开vscode在软件包中新建一个节点,节点名叫做lidar_node。在节点中,向ROS大管家NodeHandle申请订阅话题/scan,并设置回调函数为......
  • Windows多线程编程 互斥量和临界区使用
    Windows多线程编程允许程序同时运行多个线程,提高程序的并发性和执行效率。多线程编程中的核心概念包括线程的创建、同步、调度、数据共享和竞争条件等。本文详细介绍了Windows多线程编程的关键技术点,并解释如何使用线程同步机制来保证线程安全。1.线程基础概念1.1线......
  • C++ 读写锁 shared_mutex
    C++17新增了std::shared_mutex,通过shared_mutex可以实现读写锁的功能, 参考网址:https://zh.cppreference.com/w/cpp/thread/shared_mutexshared_mutex可以同时支持多个线程对共享资源同时读,但是只支持一个线程对同一共享资源进行写操作。shared_mutex支持共享锁和独......
  • 0元购-初体验
    闲来无事想着验证一下支付逻辑漏洞的方法,网上教程一大堆,但是没实践成功,总不确定是不是真正有用的知识。通常支付逻辑漏洞测试方法概况如下:1、直接修改商品的价格2、修改支付状态3、修改商品数量4、重复支付5、越权支付6、线程并发问题随手找一个资产(这次真的随便搜了......
  • Python多进程中并行编程与进程池
    Python的并行编程可以采用multiprocessing或mpi4py模块来完成。multiprocessing是Python标准库中的模块,实现了共享内存机制,也就是说,可以让运行在不同处理器核心的进程能读取共享内存。在基于共享内存通信的多进程编程中,常常通过加锁或类似机制来实现互斥。mpi4py库实现了消息传......
  • Dev C++ 安装与使用
    本帖子针对C/C++入门的学生。用该编译器可便于初学者入门C/C++。一、安装1、下载DevC++    百度搜索DevC++的官网点击Download等待下载2、安装点击安装这里并没有发现有支持中文的语言选项(可能是本人在语言选择的时候漏看了,见谅),选择English即可。......
  • C++删除字符串中的所有空格与换行(任意字符)
    删除字符串中的所有空格与换行使用头文件中的remove函数,注意:std::remove不会改变容器的大小,它只是将元素移动到容器的末尾。因此,我们需要调用erase来实际从字符串中删除这些元素。使用std::remove算法,它重排元素,使得要删除的元素(在这里是空格和换行符)被放在序列的末尾,......
  • Python编程:创意爱心表白代码集
    在寻找一种特别的方式来表达你的爱意吗?使用Python编程,你可以创造出独一无二的爱心图案,为你的表白增添一份特别的浪漫。这里为你精选了六种不同风格的爱心表白代码,让你的创意和情感通过代码展现出来。话不多说,咱直接上代码!1.紫色浪漫:心形表白#1-1导入turtle模块进行设计......
  • 【Shell】基础的 shell 脚本编程入门
    目录注意点数值计算(())letexprbc基础条件测试test中括号双中括号各种比较逻辑注意点通配符和正则表达式不同符号含义不同,特别是*这个符号通配符:零到无限多个字符的意思正则表达式:重复零到无限多个前一个字符的意思${name}#取出变量结果$(date)#在括......