首页 > 编程语言 >面向对象程序设计-实验1

面向对象程序设计-实验1

时间:2024-10-13 22:10:28浏览次数:1  
标签:begin end cout int v0 面向对象 实验 程序设计 include

任务一: 

#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;
}

  

 

标签:begin,end,cout,int,v0,面向对象,实验,程序设计,include
From: https://www.cnblogs.com/luyiming/p/18462939

相关文章

  • 2024-2025-1 20241329 《计算机基础与程序设计》第三周学习总结
    作业信息作业归属课程:https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP作业要求:https://www.cnblogs.com/rocedu/p/9577842.html#WEEK03作业目标:数字分类与计数法、位置计数法、进制转换、模拟数据与数字数据、压缩与解压、数字化、信息安全作业正文:https://www.cnblo......
  • 实验1 现代c++编程初体验
    实验任务一task1.cpp1//现代C++标准库、算法库体验2//本例用到以下内容:3//1.字符串string,动态数组容器类vector、迭代器4//2.算法库:反转元素次序、旋转元素5//3.函数模板、const引用作为形参6#include<iostream>7#include<string>8#includ......
  • openssl实验截图记录
                                    ......
  • 实验1 C++
    task1:代码:1//现代C++标准库、算法库体验2//本例用到以下内容:3//1.字符串string,动态数组容器类vector、迭代器4//2.算法库:反转元素次序、旋转元素5//3.函数模板、const引用作为形参67#include<iostream>8#include<string>9#......
  • 2024-2025第一学年 20241410苏尚君《计算机基础与程序设计》第三周学习总结
    这个作业属于哪个课程(2024-2025-1-计算机基础与程序设计)这个作业要求在哪里(2024-2025-1计算机基础与程序设计第三周作业这个作业的目标门电路,组合电路,逻辑电路,冯诺依曼结构作业正文教材学习内容总结一、门定义:“门”通常指的是逻辑门(LogicGates),这是构......
  • 从本我出发,窥视java面向对象之本源
    掀开面向对象的神秘面纱,我们到底该如何深入理解java的面向对象?1.故事从一个小场景开始:是夜,月黑风高,你单枪匹马独自一人来到幽暗森林,想要去窥探java那神秘而充满好奇的世界。突然,眼前一个黑影一闪而过,你顿时血压飙到250,一句“卧槽”脱口而出,心里害怕极了。“刚刚那玩意到......
  • 实验1
    实验任务1:1#include<iostream>2#include<string>3#include<vector>4#include<algorithm>56usingnamespacestd;78template<typenameT>9voidoutput(constT&c);1011voidtest1();12voidtest2();13voi......
  • 2024-2025 20241313刘鸣宇《计算机基础与程序设计》第三周学习总结
    1.阅读《C语言程序设计》,对有疑问的地方寻找AI进行解答2.3.《计算机科学概论》学习总结(1)第二章学习了不同进制(二进制,十进制,八进制,十六进制)之间的转换学习了其他技术系统中的运算规则(2)第三章1.信息与数据的区别:信息是数据的一种2.为何进行数据压缩:网络具有固定的带宽限制,压......
  • 2024-2025-1 20241423 《计算机基础与程序设计》第3周学习总结
    作业信息这个作业属于哪个课程<班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里2024-2025-1计算机基础与程序设计第三周作业这个作业的目标学习《C语言程序设计》第二章并完成云班课测试。自学《计算机科学概论》第2章,第3章并完成云班课测试......
  • 2024-2025-1 20241312 《计算机基础与程序设计》第3周学习总结
    |这个作业属于哪个课程|https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP|这个作业要求在哪里|https://www.cnblogs.com/rocedu/p/9577842.html#WEEK03|这个作业的目标|数字分类与计数法位置计数法进制转换模拟数据与数字数据压缩与解压数字化信息安全|作业正文|h......