首页 > 编程语言 >实验1 现代C++基础编程

实验1 现代C++基础编程

时间:2024-10-12 17:44:12浏览次数:1  
标签:begin cout int 编程 C++ v0 v1 实验 include

task 1 实验代码:

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

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

//测试1 
//组合使用算法库,迭代器,string反转字符串
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;
//测试2 
//组合使用算法库迭代器,vector反转动态数组对象vector内数据

} 
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);
    
}     
//测试3
//组合使用算法库迭代器,vector实现元素旋转移位
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);
} 

实验结果:

task 2 实验代码:

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

实验结果:

task3 实验代码:

#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;
}
bool is_palindrome(std::string s){
    int left=0;
    int right=s.length() -1;
    while(left<right){
        if(s[left]!=s[right])
        return false;
        else
        left++;
        right--;
    }
    return true;
}

实验结果:

task4 实验代码:

#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;
}
}
std::string dec2n(int x, int n ){
    std::string a="0123456789ABCDEF";
    std::string result;
    int remainder;
    if(x==0)
    return "0";
    
    while(x>0){
        remainder= x % n;
        result=a[remainder]+result;
        x=x/n;
    }
    return result;
}

实验结果:

task5 实验代码:

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

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

int main(){
    
    test1();
}
template <typename T>
void output(const T &c){
    for(auto &i:c)
        cout<<i<<" ";
    cout <<endl;
}
void test1(){
    vector<string> v0{"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"};
    cout<<"   ";
    output(v0);
    vector<string> v1{"A","B","C","D","E","G","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
    for(int i=1;i<=26;i++){
        if(i<=9)
        cout<<" ";
        rotate(v1.begin(),v1.begin()+1,v1.end());
        cout<<i<<" ";
        output(v1);
        
    }
}

实验结果:

task6 实验代码:

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

void problem();

int main(){
    srand(time(0));
    problem();
}
void problem(){
    int correctcount = 0;
    for(int i=1;i<=10;i++){
    int a = rand()%10 + 1;
    int b = rand()%10 + 1;
    int answer;
    char op;
    
    switch(rand()%4){
        case 0:
            op='+';
            answer = a+b;
            break;
        case 1:
            op='-';
             a = rand()%10 + 1;
             b = rand()%a;
            answer = a-b;
            break;
        case 2:
            op='*';
            answer = a*b;
            break;
        case 3:
            op='/';
            a = rand()%10 + 1;
             b = (rand()%a)+1;
            answer = a/b;
            break;
    }
    cout<<a<<" "<<op<<" "<<b<<" "<<"=";
    int useranswer;
    cin>>useranswer;
    if(useranswer=answer){
        correctcount++;
    }
    
    
    }
    double accuracy=static_cast<double>(correctcount)/10*100;
    cout<<"正确率:"<<fixed<<setprecision(2)<<accuracy<<"%"<<endl;
    
}

实验结果:

 

标签:begin,cout,int,编程,C++,v0,v1,实验,include
From: https://www.cnblogs.com/huashu1/p/18461014

相关文章

  • 《DNK210使用指南 -CanMV版 V1.0》第二十九章 音频录制实验
    第二十九章音频录制实验1)实验平台:正点原子DNK210开发板2)章节摘自【正点原子】DNK210使用指南-CanMV版V1.03)购买链接:https://detail.tmall.com/item.htm?&id=7828013987504)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/k210/ATK-DNK210.html5)正点原......
  • 实验二
    任务一:#include<stdio.h>#include<stdlib.h>#include<time.h>#defineN5#defineN1397//11班第一位学生的尾号#defineN2476//12班最后一位学生的尾号#defineN321//奇安信班一共21人intmain(){intcnt;intrandom_major,random_......
  • 实验1现代c++编程初体验
    test1:源代码:1#include<iostream>2#include<string>3#include<vector>4#include<algorithm>5usingnamespacestd;6template<typenameT>7voidoutput(constT&c);8voidtest1();9voidtest2();10voidtest3......
  • 你真的懂C++吗?
    看看下面的代码,你真的懂C++吗?#defineN2#defineMN+1#defineNUM(M+1)*M/2intmain(){std::cout<<NUM;return0;}//输出结果为8,展开过程如下//(M+1)*M/2//(N+1+1)*N+1/2//(2+1+1)*2+1/2//4*2+0//8c......
  • 实验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......
  • 实验1 现代C++编程初体验
    task1://现代C++标准库、算法库体验//本例用到以下内容://1.字符串string,动态数组容器类vector、迭代器//2.算法库:反转元素次序、旋转元素//3.函数模板、const引用作为形参#include<iostream>#include<string>#include<vector>#include<algorithm>usin......
  • C++ 中 `const` 的用法
    C++中const的用法1.在成员函数中的const示例:voidprintWindow()const{//...}含义和特性:函数不会修改对象状态:声明为const的成员函数承诺不会修改该类的任何非const成员变量。可以被常量对象调用:const成员函数可以被常量对象调用,确......
  • 关于C++当中全局变量的释放问题
    一、由来主要是在修改公司的一个MFC项目的时候遇到的问题,我在MFC页面的析构函数当中对一个全局图像变量进行了释放,具体如下:ai_engine_OCR::~ai_engine_OCR(){//及时释放内存if(g_pImg_open!=NULL){deleteg_pImg_open;g_pImg_open=NULL......
  • PyQt5/6 PySide2/6 在任务栏托盘区域编程,用于显示文字(图片)信息
    PyQt5/6PySide2/6在任务栏编程,用于显示文字(图片)信息本文使用PyQt5演示,其他库如PySide2/6,稍微改改就能用,因为其核心使用的是Win32gui来获取一些系统信息代码结构本文中全部代码全在test_taskbar.py这一个文件中编码,步骤中有变动的地方会注释标注,无改动的不会重复显示出来,需要......
  • 一起体验AI动手实验,OceanBase 2024 年度发布会精彩预告
    2024年OceanBase年度发布会将于10月23日在北京望京凯悦酒店举行。此次大会围绕“不止于记录”的主题,共同探讨当前数据库领域的前沿话题,包含主论坛、分论坛、AI动手实训营、开源技术交流会等多个环节,诚邀全国各地的企业和开发者共同参与! 点击链接免费报名 >>2024OceanBase......