实验二:指针,数组和c++标准库
实验五:
”info.hpp“
#ifndef info_hpp #define info_hpp #include <iostream> #include <string> #include <iomanip> using namespace std; class info { public: info(string nic, string con, string cit, int n0) :nickname(nic), contact(con), city(cit), n(n0) { num+=n; }; void print() const; static int show_num() { return num; }; private: string nickname,contact,city; int n; static int num; }; int info::num = 0;//静态成员初始化 void info::print() const { cout << setiosflags(ios::left);//设置输出是左对齐 cout << setw(10) << "称呼:" << nickname << endl;//setw设置输出为10个空间,不足的用空格补齐,补齐的方向和上述的输出对齐方向一致 cout << setw(10) << "联系方式:" << contact << endl;//setw只对后面的一个<<有效 cout << setw(10) << "所在城市:" << city << endl; cout << setw(10) << "预定人数:" << n << endl; } #endif
task5.cpp
#include <iostream> #include <vector> #include "info.hpp" int main() { using namespace std; vector<info>audience_info_list;//定义了一个元素是info对象的数组 const int capacity = 100;//初始化 //录入信息 cout << "录入信息" << endl; cout << "称呼/昵称, 联系方式(邮箱/手机号), 所在城市, 预定参加人数" << endl; string nickname, contact, city; int n = 0; int total = 0;//记录总共的观众人数 while (cin >> nickname >> contact >> city >> n) { if (total + n > 100) { cout << "对不起,只剩" << capacity - total << "个位置." << endl; cout << "1.输入u,更新预定信息." << endl; cout << "2.输入q,退出预定" << endl; cout << "你的选择:"; char c; cin >> c; if (c == 'q') break; else continue; } total += n; info m(nickname, contact, city, n);//定义一个对象 audience_info_list.push_back(m);//在尾部插入元素 } cout << "截至目前,一共有" << info::show_num() << "位听众参加。预定听众信息如下:" <<endl; for (auto i : audience_info_list)//用i遍历容器audience_info_list中的值 { i.print(); } }
测试结果截图:


实验六
TextCoder.hpp
#ifndef TextCoder_hpp #define TextCoder_hpp #include <iostream> #include <string> #include <vector> using namespace std; class TextCoder { public: TextCoder(string x) :text(x) {}; string encoder(); string decoder(); private: string text; }; string TextCoder::encoder() { for (auto& i : text) { if (i >= 'a' && i <= 'u') i = i + 5; else if (i > 'u' && i <= 'z') i = i - 21; if (i >= 'A' && i <= 'U') i = i + 5; else if (i > 'U' && i <= 'Z') i = i - 21; else; } return text; } string TextCoder::decoder() { for (auto& i : text) { if (i >= 'a' && i <= 'e') i = i + 21; else if (i > 'e' && i <= 'z') i = i - 5; if (i >= 'A' && i <= 'E') i = i + 21; else if (i > 'E' && i <= 'Z') i = i - 5; else; } return text; } #endif
task6
#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输入英文文本: "; } }
测试结果截图

实验总结:
- 实验五:
- 首先就是设置输出格式可以用setiosflags()函数和setw()来操作
- 其次就是巧用vector构造对象数组
- for(auto i:s)的意思是用i遍历容器s中的值,不能改变容器中的值,如果是for(auto &i:s)便可以改变s里的值、
- string是在std中的所以要记住要加std
- 我定义了一个静态成员函数记录观众数,其实大可不必
- 实验六;
- 没什么好说的,应该是可以用更灵活的方式得出结果
- 枚举挺简单的,就直接枚举了

浙公网安备 33010602011771号