任务1
1 #include<iostream> 2 #include<string> 3 #include<vector> 4 #include<algorithm> 5 using namespace std; 6 template<typename T> 7 void output(const T &c) { 8 for (auto &i : c) 9 cout << i << " "; 10 cout << endl; 11 } 12 void test1() { 13 string s0{ "0123456789" }; 14 cout << "s0=" << s0 << endl; 15 string s1{ s0 }; 16 reverse(s1.begin(), s1.end()); 17 cout << "s1=" << s1 << endl; 18 string s2{ s0 }; 19 reverse_copy(s0.begin(), s0.end(), s2.begin()); 20 cout << "s2=" << s2 << endl; 21 } 22 void test2() { 23 vector<int> v0{ 2,0,4,9 }; 24 cout << "v0:"; 25 output(v0); 26 vector<int> v1{ v0 }; 27 reverse(v1.begin(), v1.end()); 28 cout << "v1:"; 29 output(v1); 30 vector<int> v2{ v0 }; 31 reverse_copy(v0.begin(), v0.end(), v2.begin()); 32 cout << "v2:"; 33 output(v2); 34 } 35 void test3() { 36 vector<int> v0{ 0,1,2,3,4,5,6,7,8,9 }; 37 cout << "v0:"; 38 output(v0); 39 vector<int> v1{ v0 }; 40 rotate(v1.begin(), v1.begin() + 1, v1.end()); 41 cout << "v1:"; 42 output(v1); 43 vector<int> v2{ v0 }; 44 rotate(v2.begin(), v2.begin() + 2, v2.end()); 45 cout << "v2:"; 46 output(v2); 47 vector<int> v3{ v0 }; 48 rotate(v3.begin(), v3.end() - 1, v3.end()); 49 cout << "v3:"; 50 output(v3); 51 vector<int> v4{ v0 }; 52 rotate(v4.begin(), v4.end() - 2, v4.end()); 53 cout << "v4:"; 54 output(v4); 55 } 56 int main() { 57 cout << "测试1:\n"; 58 test1(); 59 cout << "\n测试2:\n"; 60 test2(); 61 cout << "\n测试3:\n"; 62 test3(); 63 }
}
任务2
1 #include<iostream> 2 #include<vector> 3 #include<string> 4 #include<algorithm> 5 #include<numeric> 6 #include<iomanip> 7 using namespace std; 8 template<typename T> 9 void output(const T& c) { 10 for (auto& i : c) 11 cout << i << " "; 12 cout << endl; 13 } 14 int rand_int_100() { 15 return rand() % 101; 16 } 17 void test1() { 18 vector<int> v0(10); 19 generate(v0.begin(), v0.end(), rand_int_100); 20 cout << "v0:"; 21 output(v0); 22 vector<int> v1{ v0 }; 23 sort(v1.begin(), v1.end()); 24 cout << "v1:"; 25 output(v1); 26 vector<int> v2{ v0 }; 27 sort(v2.begin() + 1, v2.end() - 1); 28 cout << "v2:"; 29 output(v2); 30 } 31 void test2() { 32 vector<int> v0(10); 33 generate(v0.begin(), v0.end(), rand_int_100); 34 cout << "v0:"; 35 output(v0); 36 auto iter1 = min_element(v0.begin(), v0.end()); 37 cout << "最小值:" << *iter1 << endl; 38 auto iter2 = max_element(v0.begin(), v0.end()); 39 cout << "最大值:" << *iter2 << endl; 40 auto ans = minmax_element(v0.begin(), v0.end()); 41 cout << "最小值:" << *(ans.first) << endl; 42 cout << "最大值:" << *(ans.second) << endl; 43 double avg1 = accumulate(v0.begin(), v0.end(), 0) / v0.size(); 44 cout << "均值:" << fixed << setprecision(2) << avg1 << endl; 45 cout << endl; 46 vector<int> v1{ v0 }; 47 cout << "v0:"; 48 output(v0); 49 sort(v1.begin(), v1.end()); 50 double avg2 = accumulate(v1.begin() + 1, v1.end() - 1, 0) / (v1.size() - 2); 51 cout << "去掉最大值、最小值之后,均值:" << avg2 << endl; 52 53 } 54 int main() { 55 cout << "测试1:\n"; 56 test1(); 57 cout << "测试2:\n"; 58 test2(); 59 }
任务3
1 #include<iostream> 2 #include<string> 3 #include<algorithm> 4 using namespace std; 5 bool is_palindrome(string s) { 6 string s1{ s }; 7 reverse(s1.begin(), s1.end()); 8 if (s1 == s) 9 return true; 10 return false; 11 } 12 int main() { 13 string s; 14 while (cin >> s) 15 cout << boolalpha << is_palindrome(s) << endl; 16 17 }
任务4
1 #include<iostream> 2 #include<string> 3 #include<algorithm> 4 using namespace std; 5 string dec2n(int x, int n = 2) { 6 string ans; 7 while (x) { 8 if (x % n >= 10) { 9 ans += char(x % n - 10 + 'A'); 10 x /= n; 11 } 12 else 13 { 14 ans += char(x % n + '0'); 15 x /= n; 16 } 17 18 } 19 reverse(ans.begin(), ans.end()); 20 return ans; 21 } 22 int main() { 23 int x; 24 while (cin >> x) { 25 cout << "十进制:" << x << endl; 26 cout << "二进制:" << dec2n(x) << endl; 27 cout << "八进制:" << dec2n(x, 8) << endl; 28 cout << "十六进制:" << dec2n(x, 16) << endl << endl; 29 } 30 return 0; 31 }
任务5
1 #include<iostream> 2 #include<algorithm> 3 #include<iomanip> 4 using namespace std; 5 void output(string& s) { 6 for (auto& i : s) 7 cout << setw(2)<<char(i-32); 8 cout << endl; 9 } 10 int main() { 11 string s{ 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','s','y','z' }; 12 cout << setw(4); 13 for (auto& i : s) 14 cout <<i<<setw(2); 15 cout << endl; 16 for (int i = 1; i <= 26; i++) { 17 string s1{ s }; 18 cout << setw(2) << i; 19 rotate(s1.begin(), s1.begin() + i, s1.end()); 20 output(s1); 21 } 22 return 0; 23 }
任务6
1 #include<iostream> 2 #include<algorithm> 3 #include<iomanip> 4 using namespace std; 5 int main() { 6 int cnts = 10; 7 int ans = 0; 8 int answer = 0; 9 int correct = 0; 10 while (cnts--) { 11 int k = rand() % 4; 12 int num1 = rand() % 11; 13 int num2 = rand() % 11; 14 switch (k) 15 { 16 case 1: 17 cout << num1 << "+" << num2 << "="; 18 ans = num1 + num2; 19 break; 20 case 2: 21 if (num1 <= num2) 22 swap(num1, num2); 23 cout << num1 << "-" << num2 << "="; 24 ans = num1 - num2; 25 break; 26 27 case 3: 28 cout << num1 << "*" << num2<<"="; 29 ans = num1 * num2; 30 break; 31 case 0: 32 num1 = num2 * (rand() % (10 / num2 + 1)); 33 cout << num1 << "/" << num2 << "="; 34 ans = num1 / num2; 35 break; 36 } 37 cin >> answer; 38 if (ans == answer) 39 correct++; 40 } 41 cout << fixed << setprecision(2); 42 cout << correct * 100.0 / 10 << "%"; 43 return 0; 44 }