实验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 
11 void test1();
12 void test2();
13 void test3();
14 
15 int main(){
16     cout << "测试1:\n";
17     test1();
18     
19     cout <<"\n测试2:\n";
20     test2();
21     
22     cout << "\n测试3:\n";
23     test3();
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     cout << "s2 = " << s2 <<endl;
44 }
45 
46 void test2(){
47     vector<int> v0{2,0,4,9};
48     cout << "v0: ";
49     output(v0);
50     
51     vector<int> v1{v0};
52     reverse(v1.begin(),v1.end());
53     cout<<"v1: ";
54     output(v1);
55     
56     vector<int> v2{v0};
57     reverse_copy(v0.begin(),v0.end(),v2.begin());
58     cout << "v2: ";
59     output(v2);
60 }
61 
62 void test3(){
63     vector<int> v0{0,1,2,3,4,5,6,7,8,9};
64     cout << "v0: ";
65     output(v0);
66     
67     vector<int> v1{v0};
68     rotate(v1.begin(),v1.begin()+1,v1.end());
69     cout << "v1: ";
70     output(v1); 
71     
72     vector<int> v2{v0};
73     rotate(v2.begin(),v2.begin()+2,v2.end());
74     cout << "v2: ";
75     output(v2);
76     
77     vector<int> v3{v0};
78     rotate(v3.begin(),v3.end()-1,v3.end());
79     cout<< "v3: ";
80     output(v3);
81     
82     vector<int> v4{v0};
83     rotate(v4.begin(),v4.end()-2,v4.end());
84     cout << "v4: ";
85     output(v4);            
86 }

 

 

实验任务2:

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

 

 

实验任务3:

 1 #include <iostream>
 2 #include <string>
 3 #include <algorithm>
 4 bool is_palindrome(std::string s);
 5 
 6 int main() {
 7     using namespace std;
 8     string s;
 9     while(cin >> s)
10         cout << boolalpha << is_palindrome(s) << endl;
11 }
12 
13 bool is_palindrome(std::string a){
14     int len = a.size();
15     std::string b = a;
16     char t;
17     int i;
18     for(i=0;i<len/2;i++){
19         t = a[i];
20         a[i] = a[len-1-i];
21         a[len-i-1] = t;
22     } 
23     if(b == a){
24         return true;
25     }else{
26         return false;
27     }
28 }

 

 

实验任务4:

 1 #include <iostream>
 2 #include <string>
 3 #include <algorithm>
 4 std::string dec2n(int x, int n = 2);
 5 int main() {
 6     using namespace std;
 7     int x;
 8     while(cin >> x) {
 9         cout << "十进制: " << x << endl;
10         cout << "二进制: " << dec2n(x) << endl;
11         cout << "八进制: " << dec2n(x, 8) << endl;
12         cout << "十六进制: " << dec2n(x, 16) << endl << endl;
13     }
14 }
15 
16 std::string dec2n(int x,int n){
17     using namespace std;
18     int i;
19     int y = x;
20     string j;
21     string res = "0123456789ABCDEF";
22     while(y != 0){
23         i = y % n;
24         j = res[i] + j;
25         y/=n;
26     }
27     if(x == 0){
28         return "0";
29     }else{
30         return j;
31     }
32 }

 

实验任务5:

 1 #include<iostream>
 2 #include<string>
 3 #include<vector>
 4 #include<algorithm>
 5 #include<iomanip>
 6 
 7 using namespace std;
 8 
 9 template<typename T>
10 void output(const T &c);
11 
12 void fun();
13 
14 int main(){
15     cout << "   a b c d e f g h i j k l m n o p q r s t u v w x y z" << endl;
16     int i;
17     for(i=1;i<=26;i++){
18         fun();
19     }
20 }
21 
22 template <typename T>
23 void output(const T &c){
24     for(auto &i: c)
25         cout << i << " ";
26     cout << endl;
27 }
28 int j=1;
29 void fun(){
30     string s0={"ABCDEFGHIJKLMNOPQRSTUVWXYZ"};
31     rotate(s0.begin(),s0.begin()+j,s0.end());
32     cout << setw(2) << j  << " ";
33     output(s0);
34     j++;
35 }

实验任务6:

 

 1 #include <iostream>
 2 #include <cstdlib>
 3 #include <ctime>
 4 #include <iomanip>
 5 
 6 using namespace std;
 7 
 8 int ran_int_10();
 9 
10 int rand_int_10(){
11     return rand() % 10;
12 }
13 
14 int main() {
15     srand(static_cast<unsigned int>(time(nullptr)));
16     int sum = 0;
17     for (int i = 0; i < 10; ++i) {
18         int num1 = rand_int_10() % 10 + 1;
19         int num2 = rand_int_10() % 10 + 1;
20         int operators = rand() % 4;
21         int res;
22         string operation;
23         switch (operators) {
24             int t;
25             case 0:
26                 operation = "*";
27                 res = num1 * num2;
28                 break;
29             case 1:
30                 if (num1 % num2!= 0) {
31                     if (num1 < num2) {
32                         t = num1;
33                         num1 = num2;
34                         num2 = t;
35                     }
36                     num1 = num1 % num2 == 0? num1 : num2 * (rand() % (num1 / num2) + 1);
37                 }
38                 operation = "/";
39                 res = num1 / num2;
40                 break;
41             case 2:
42                 operation = "+";
43                 res = num1 + num2;
44                 break;
45             case 3:
46                 if (num1 < num2) {
47                     t = num1;
48                     num1 = num2;
49                     num2 = t;
50                 }
51                 operation = "-";
52                 res = num1 - num2;
53                 break;
54         }
55         int answer;
56         cout << num1 << " " << operation << " " << num2 << " = ";
57         cin >> answer;
58         if (answer == res) {
59             sum++;
60         }
61     }
62     double accuracy = (double)sum / 10 * 100;
63     cout << "正确率为:" << accuracy << "%";
64     return 0;
65 }

 

实验总结:

1.学习了rotate、reverse的用法;

2.运用C++语言来编写程序,逐步将思维从C语言向C++语言转换;

3.学习运用vector来存储数据、对数据进行处理

posted @ 2024-10-13 20:43  Bling888  阅读(14)  评论(0编辑  收藏  举报