实验一
task1
task2
task3
task4
#include<iostream> #include<string> #include<algorithm> bool is_palindrome(const std::string& s); bool is_palindrome_ignore_case(const std::string& s); int main() { using namespace std; string s; while (cin >> s) { cout << boolalpha << "区分大小写:" << is_palindrome(s) << "\n" << "不区分大小写:" << is_palindrome_ignore_case(s) << "\n\n"; } } bool is_palindrome(const std::string& s) { std::string s1(s.size(), ' '); reverse_copy(s.begin(), s.end(), s1.begin()); int i; for (i = 0;i < s.size();i++) { if (s[i] != s1[i]) { return 0; break; } } if (i == s.size() - 1) return 0; } bool is_palindrome_ignore_case(const std::string& s) { std::string s1; for (auto c : s) s1 += std::tolower(c); std::string s2(s1.size(), ' '); reverse_copy(s1.begin(), s1.end(), s2.begin()); int i; for (i = 0;i < s1.size();i++) { if (s1[i] != s2[i]) { return 0; break; } } if (i == s1.size() - 1) return 0; }
task5
#include<iostream> #include<string> #include<algorithm> std::string dec2n(int x, int n = 2); int main() { int x; while (std::cin >> x) { std::cout << "十进制: " << x << '\n' << "二进制: " << dec2n(x) << '\n' << "八进制: " << dec2n(x, 8) << '\n' << "十二进制: " << dec2n(x, 12) << '\n' << "十六进制: " << dec2n(x, 16) << '\n' << "三十二进制: " << dec2n(x, 32) << "\n\n"; } } std::string dec2n(int x, int n) { if (x == 0) return "0"; std::string s; while (x != 0) { int r; r = x % n; if (r >= 10) s += static_cast<char>('A'+ r -10); else s += static_cast<char>(r + '0'); x = x / n; } std::reverse(s.begin(), s.end()); return s; }
task6
#include<iostream> #include<iomanip> #include<algorithm> void putout(const std::string& s); int main() { std::string s1,s2; int i; for (i = 0;i < 26;i++) s1 += static_cast<char>('a' + i); std::cout << " "; putout(s1); for (auto c : s1) s2 += std::toupper(c); for (i = 1;i <= 26;i++) { std::cout << std::setfill(' ') << std::setw(2) << i; std::rotate(s2.begin(), s2.begin() + 1 , s2.end()); putout(s2); } } void putout(const std::string& s) { for (auto c : s) std::cout << ' ' << c; std::cout << '\n'; }
task7
#include<iostream> #include<cstdlib> #include<ctime> #include<vector> #include<iomanip> using namespace std; int main() { srand(time(0)); int correct = 0; for (int i = 0;i < 10;i++) { int x = rand() % 10 + 1; int y = rand() % 10 + 1; int z = rand() % 4; int ans; string s{ '+','-','*','/' }; if (z == 0) ans = x + y; if (z == 1) { if (x < y) swap(x, y); ans = x - y; } if (z == 2) ans = x * y; if (z == 3) { if (x % y != 0) { vector<int> v; for (int k = 1;;k++) { x = k * y; if (x > 10) break; v.push_back(x); } x = v[rand() % v.size()]; } ans = x / y; } int answer; std::cout << x << " " << s[z] << " " << y << " " << "= "; std::cin >> answer; if (ans == answer) correct++; } double rate = correct / 10.00 * 100; std::cout << "正确率:" <<fixed<<setprecision(2)<< rate << '%' << '\n'; }