首页 > 其他分享 >实验一

实验一

时间:2024-10-14 17:02:54浏览次数:9  
标签: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();
}

// 函数实现
// 输出容器对象c中的元素
template <typename T>
void output(const T &c) {
    for(auto &i: c)
        cout << i << " ";
    cout << endl;
}

// 返回[0, 100]区间内的一个随机整数
int rand_int_100() {
    return rand() % 101;
}

// 测试1
// 对容器类对象指定迭代器区间进行赋值、排序
void test1() {
    vector<int> v0(10);  // 创建一个动态数组对象v0, 对象大小为10
    generate(v0.begin(), v0.end(), rand_int_100); // 产生[0, 100]之间的随机整数赋值给指定迭代器区间[v0.begin(), v0.end())内的每个数据项
    cout << "v0: ";
    output(v0);

    vector<int> v1{v0};
    sort(v1.begin(), v1.end()); // 对指定迭代器区间[v1.begin(), v1.end())内数据项进行升序排序
    cout << "v1: ";
    output(v1);

    vector<int> v2{v0};
    sort(v2.begin()+1, v2.end()-1); // 对指定迭代器区间[v1.begin()+1, v1.end()-1)内数据项进行升序排序
    cout << "v2: ";
    output(v2);
}

// 测试2
// 对容器类对象指定迭代器区间进行赋值、计算最大值/最小值/均值
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)  // 多组输入,直到按下Ctrl+Z后结束测试
        cout << boolalpha << is_palindrome(s) << endl;
}

// 函数is_palindrom定义
// 待补足
// ×××
bool is_palindrome(std::string s){
    std::string b{s};
    
    reverse(s.begin(),s.end());//翻转字符串
    
    if(b==s) {
        return true;
    }
    else{
        return false;
    }
}

 

截图:

 

任务四:

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

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

int main() {


    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(n == 2 || n == 8){
        std::string str = "";
        while(x / n !=  0){
            str += char('0'+x%n);
            x /= n;
        }
        str += char('0'+x%n);
        reverse(str.begin(),str.end());
        return str;
    }else if(n == 16){
        char arr[16] = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
        std::string str = "";
        while(x / n !=  0){
            str += arr[x%n];
            x /= n;
        }
        str += arr[x%n];
        reverse(str.begin(),str.end());
        return str;
    }
}

截图:

任务五:

代码:

#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <iomanip>
using namespace std;

int main() {
    cout << "  ";
    vector<char> arr;
    for(int i = 0;i < 26;i++){
        cout << " ";
        cout << char('a' + i);
        arr.push_back(char('A' + i));
    }
    cout << endl;
    for(int i = 1;i <= 26;i++){
        cout << setw(2) << setfill(' ') << i;
        rotate(arr.begin(),arr.begin() + 1,arr.end());
        for(auto ele:arr){
            cout << " ";
            cout << ele;
        }
        cout << endl;
    }


    return 0;
}

截图:

 

任务六:

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

using namespace std;

int main() {
    int m=0;
    for(int i=0;i<10;i++){
        srand(time(0));
        char op = "+-*/"[rand() % 4];
        int w = 0;
        int a;
        int b;
        int c;
        switch (op) {
            case '+':
                 a = rand() % 10+1;  // 生成一个1到9之间的随机整数
                 b = rand() % 10+1 ;
                 w = a + b; break;
            case '-':
                 a = rand() % 10+1;  // 生成一个1到9之间的随机整数
                 b = rand() % a+1 ;
                 w=a-b; break;
            case '*':w=a*b; break;
            case '/':
                 a= rand() % 10+1;  // 生成一个1到9之间的随机整数
                    for(int i=2;i<=a;i++){
                      b=i;
                      for(int j=1;j<=10;j++){
                          c=j;
                        if(b*c==a){
                            w=a/b;break;
                        }
                    }
                }
        }
        cout << a << ' ' << op << ' ' << b << '=' ;
        int user_answer = 0;
        cin >> user_answer;
        cout<<endl;
        if (user_answer == w) {
                m++;
        }
    }
    cout<<"正确率:"<<m*10<<"%"<<endl;
    return 0;
}

截图:

 

标签:begin,end,cout,int,v0,实验,include
From: https://www.cnblogs.com/hhhyx/p/18461865

相关文章

  • 实验1现代c++编程初体验
    1.实验任务一task1.cpp//现代C++标准库、算法库体验//本例用到以下内容://1.字符串string,动态数组容器类vector、迭代器//2.算法库:反转元素次序、旋转元素//3.函数模板、const引用作为形参#include<iostream>#include<string>#include<vector>#include<......
  • 实验4-2-3-for 验证“哥德巴赫猜想C++解法
    #include<iostream>#include<cmath>boolvia(longlongi);usingnamespacestd;intmain(){  longlongn=0,i=3,p=0,q=0,a=0,b=0;  cin>>n;  if(n>4)  {    for(i=3;i<n/2;i+=2)    {......
  • 国防科大:反事实验证LLM在RAG的生成质量
    ......
  • 实验2
    任务1:源代码1#include<stdio.h>2#include<stdlib.h>3#include<time.h>45#defineN56#defineN13977#defineN24768#defineN321910intmain(){11intcnt;12intrandom_major,random_no;1314srand(t......
  • 【华三】【华三】VXLAN典型组网-集中式网关配置实验
    【华三】VXLAN典型组网-二层组网静态配置实验VXLAN的相关术语VTEP(VXLANTunnelEndPoint)VXLAN隧道核心设备VSI(VirtualSwitchInstance)VSIinterfaceVXLANsegmentVNI(VXLANNetworkIdentifier)AC(AttachmentCircuit)VXLAN隧道工作模式L2Gateway:二层转发模式IPGateway:......
  • 实验2
    #include<stdio.h>#include<stdlib.h>#include<time.h>#defineN5#defineN1397#defineN2476#defineN321intmain(){intcnt;intrandom_major,random_no;srand(time(NULL));cnt=0;while(cnt<N){random......
  • 实验二
    task_1#include<stdio.h>#include<stdlib.h>#include<time.h>#defineN5#defineN1397#defineN2476#defineN321intmain(){intcnt;intrandom_major,random_no;srand(time(NULL));cnt=0;while(cnt<......
  • 操作系统:实验二:进程调度
    1.实验目的  1.了解三级调度的基本概念;  2.通过对先来先服务算法、时间片轮转算法和短作业优先算法的模拟实现掌握它们的工作原理。2.三级调度的基本概念  现在的操作系统大多是多道程序系统,在同一时段内,允许用户同时执行多个作业进(或进程)。一个作业从提......
  • 操作系统:实验三:存储器管理
    1.实验目的  1.理解固定式分区及可变式分区两种存储管理模式,知道各自的优缺点;  2.验证型实验需理解可变式分区方式的三种算法最先适应算法、最佳适应算法和最坏适应算法的工作原理,理解内存释放的具体实现过程;  3.提高型实验需在提供的代码框架下根据提示自主......
  • 实验1 现代c++编程初体验
    任务1:task1.cpp//现代C++标准库、算法库体验//本例用到以下内容://1.字符串string,动态数组容器类vector、迭代器//2.算法库:反转元素次序、旋转元素//3.函数模板、const引用作为形参#include<iostream>#include<string>#include<vector>#include<algorithm>......