任务一: 

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>

using namespace std;

template<typename T>
void output(const T &c);

void test1();
void test2();
void test3();

int main() {
    cout << "测试1: \n";
    test1();

    cout << "\n测试2: \n";
    test2();

    cout << "\n测试3: \n";
    test3();
}

template <typename T>
void output(const T &c) {
    for(auto &i: c)
        cout << i << " ";
    cout << endl;
}

void test1() {
    string s0{"0123456789"};
    cout << "s0 = " << s0 << endl;

    string s1{s0};
    reverse(s1.begin(), s1.end());  
    cout << "s1 = " << s1 << endl;

    string s2{s0};
    reverse_copy(s0.begin(), s0.end(), s2.begin()); 
    cout << "s2 = " << s2 << endl;
}

void test2() {
    vector<int> v0{2, 0, 4, 9};
    cout << "v0: ";
    output(v0);

    vector<int> v1{v0};
    reverse(v1.begin(), v1.end());
    cout << "v1: ";
    output(v1);

    vector<int> v2{v0};
    reverse_copy(v0.begin(), v0.end(), v2.begin());
    cout << "v2: ";
    output(v2);
}

void test3() {
    vector<int> v0{0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    cout << "v0: ";
    output(v0);

    vector<int> v1{v0};
    rotate(v1.begin(), v1.begin()+1, v1.end());  
    cout << "v1: ";
    output(v1);

    vector<int> v2{v0};
    rotate(v2.begin(), v2.begin()+2, v2.end());
    cout << "v2: ";
    output(v2);

    vector<int> v3{v0};
    rotate(v3.begin(), v3.end()-1, v3.end());
    cout << "v3: ";
    output(v3);

    vector<int> v4{v0};
    rotate(v4.begin(), v4.end()-2, v4.end());
    cout << "v4: ";
    output(v4);
}

任务二:

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <numeric>
#include <iomanip>

using namespace std;

template<typename T>
void output(const T &c);

int rand_int_100();
void test1();
void test2();

int main() {
    cout << "测试1: \n";
    test1();

    cout << "\n测试2: \n";
    test2();
}

template <typename T>
void output(const T &c) {
    for(auto &i: c)
        cout << i << " ";
    cout << endl;
}

int rand_int_100() {
    return rand() % 101;
}

void test1() {
    vector<int> v0(10);  
    generate(v0.begin(), v0.end(), rand_int_100);
    cout << "v0:"; 
    output(v0);

    vector<int> v1{v0};
    sort(v1.begin(), v1.end()); 
    cout << "v1: ";
    output(v1);

    vector<int> v2{v0};
    sort(v2.begin()+1, v2.end()-1); 
    cout << "v2: ";
    output(v2);
}

void test2() {
    vector<int> v0(10);  
    generate(v0.begin(), v0.end(), rand_int_100); 
    cout << "v0: ";
    output(v0);

    auto iter1 = min_element(v0.begin(), v0.end());
    cout << "最小值: " << *iter1 << endl;

    auto iter2 = max_element(v0.begin(), v0.end());
    cout << "最大值: " << *iter2 << endl;

    auto ans = minmax_element(v0.begin(), v0.end());
    cout << "最小值: " << *(ans.first) << endl;
    cout << "最大值: " << *(ans.second) << endl;
    double avg1 = accumulate(v0.begin(), v0.end(), 0)/v0.size();
    cout << "均值: " << fixed << setprecision(2) << avg1 << endl;

    cout << endl;

    vector<int> v1{v0};
    cout << "v0: ";
    output(v0);
    sort(v1.begin(), v1.end());
    double avg2 = accumulate(v1.begin()+1, v1.end()-1, 0)/(v1.size()-2);
    cout << "去掉最大值、最小值之后,均值: " << avg2 << endl;
}

任务三:

#include <iostream>
#include <string>
#include <algorithm>

bool is_palindrome(std::string s);

int main() {
    using namespace std;
    string s;

    while(cin >> s) 
        cout << boolalpha << is_palindrome(s) << endl;
}

bool is_palindrome(std::string s){
    int left=0;
    int right=s.length()-1;
    for(left<right;left++,right--;){
        if(s[left]!=s[right]){
            return false;
        }
    }
    return true;
}

任务四:

 

#include <iostream>
#include <string>
#include <algorithm>

std::string dec2n(int x, int n = 2);

int main() {
    using namespace std;

    int x;
    while(cin >> x) {
        cout << "十进制: " << x << endl;
        cout << "二进制: " << dec2n(x) << endl;
        cout << "八进制: " << dec2n(x, 8) << endl;
        cout << "十六进制: " << dec2n(x, 16) << endl << endl;
    }
}

// 函数dec2n定义
std::string dec2n(int x, int n) {
    if (x == 0) return "0";

    std::string result;
    std::string i="0123456789ABCDEF";
    while (x > 0) {
        int j = x % n;
        result=i[j]+result;
        x /= n;
    }
    return result;
}

  

任务五:

#include <iostream>
#include <string>
#include <iomanip>

void fun(int n){
	std::string a="ABCDEFGHIJKLMNOPQRSTUVWHYZ";
	for(int i=n;i<26;i++){
		std::cout <<" " << a[i]; 
	}
	for(int j=0;j<n;j++){
		std::cout <<" " << a[j];
	}
	std::cout << std::endl;
}
int main(){
	std::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" << std::endl;
	for(int k=1;k<=26;k++){
		std::cout << std::setw(2) << std::setfill(' ') << k;
		fun(k);
	}
}

  

任务六:

 

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <iomanip>

int main() {
    srand(time(0)); 
    double correctCount = 0;
    int t;
    for (int i = 0; i < 10; i++) {
        int num1 = rand()%10+1;
        int num2 = rand()%10+1;
        char op;
        switch (rand() % 4) {
            case 0: op = '+'; break;
            case 1: 
            if(num2>num1){
            	t=num2;
            	num2=num1;
            	num1=t;
			}
			op = '-'; break;
            case 2: op = '*'; break;
            case 3: op = '/'; do { num2 = rand() % 10 + 1; } while (num1 % num2 != 0); break;
        }
        std::cout << num1 << " " << op << " " << num2 << " = ";
        int userAnswer;
        std::cin >> userAnswer;
        int correctAnswer;
        switch (op) {
            case '+': correctAnswer = num1 + num2; break;
            case '-': correctAnswer = num1 - num2; break;
            case '*': correctAnswer = num1 * num2; break;
            case '/': correctAnswer = num1 / num2; break;
        }
        if (userAnswer == correctAnswer) {
            correctCount++;
        } 
    }
    double accuracy = correctCount / 10 * 100;
    std::cout << "正确率:" << accuracy << "%";
    return 0;
}

  

 

posted on 2024-10-13 22:18  陆一鸣·  阅读(11)  评论(0编辑  收藏  举报