实验二 数组、指针与C++标准库
1、试验任务1-4
略
2、实验任务5
问题场景描述如下: 某独立音乐人要举办一场免费小型liveshow。livehouse场地容量有限,最多容纳100位乐迷听众。现通 过某平台开通线上预约登记。
info.hpp
#ifndef INFO_HPP #define INFO_HPP //info类的定义 #include<iostream> #include<string> using namespace std; class info{ public: int n; string nickname,contact,city; info(string name,string con,string cit,int m):nickname(name),contact(con),city(cit),n(m) {} void print(){ cout<<"称呼:\t"<<nickname<<endl; cout<<"联系方式:\t"<<contact<<endl; cout<<"所在城市:\t"<<city<<endl; cout<<"预定人数:\t"<<n<<endl; } }; #endif
task5.cpp
#include"info.hpp" #include<iostream> #include<string> #include<vector> using namespace std; int main(){ const int capacity=100; vector<info> audience_info_list; cout<<"录入信息"<<endl<<endl; cout<<"称呼/昵称,联系方式(邮箱/手机号),所在城市,预定参加人数"<<endl; string nickname,contact,city; int n,sum=0; while(cin>>nickname>>contact>>city>>n){ if(sum+n>capacity){ cout<<"对不起,只剩"<<capacity-sum<<"个位置"<<endl; cout<<"1、输入u,更新(update)预定信息"<<endl; cout<<"2、输入q,退出预定"<<endl; cout<<"你的选择:"; char op; cin>>op; if(op=='u')continue; else break; } info p(nickname,contact,city,n); audience_info_list.push_back(p); sum+=n; } cout<<"截至目前,一共有"<<sum<<"位听众预定参加。预定听众信息如下:"<<endl; for(auto x:audience_info_list){ x.print(); puts(""); } }
输出结果如下:


3、试验任务6
实验流程:设计并实现一个类TextCoder,用于对英文文本字符串进行简单的加密和解密操作
textcoder.hpp
#ifndef TEXTCODER_HPP #define TEXTCODER_HPP //textcoder类的定义 #include<iostream> #include<string> using namespace std; class TextCoder{ public: TextCoder(string t):text(t){} string encoder(){ for(char &c:text){ if(c>='A'&&c<='Z') c='A'+(c-'A'+5)%26; else if(c>='a'&&c<='z') c='a'+(c-'a'+5)%26; } return text; } string decoder(){ for(char &c:text){ if(c>='A'&&c<='Z') c='A'+(c-'A'-5+26)%26; else if(c>='a'&&c<='z') c='a'+(c-'a'-5+26)%26; } return text; } private: string text; }; #endif
tast6.cpp
#include "textcoder.hpp" #include <iostream> #include <string> int main() { using namespace std; string text, encoded_text, decoded_text; cout << "输入英文文本: "; while (getline(cin, text)) { encoded_text = TextCoder(text).encoder(); // 这里使用的是临时无名对象 cout << "加密后英文文本:\t" << encoded_text << endl; decoded_text = TextCoder(encoded_text).decoder(); // 这里使用的是临时无名对象 cout << "解密后英文文本:\t" << decoded_text << endl; cout << "\n输入英文文本: "; } }
输出结果如下:


浙公网安备 33010602011771号