C/C++教程

实验2 数组、指针与C++标准库

本文主要是介绍实验2 数组、指针与C++标准库,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1.实验任务1-4

  1)普通数组、array、vector的相关性,以及,区别:

    a)数组和array的大小都是固定的,而vector的大小可以改变。

    b)数组和array存储在栈中,而vector存储在堆中。

    c)数组只能通过下标访问,而array和vector可以通过at函数访问。

    d)数组不允许将对象赋值给另一个对象,而array和vector允许.

    e)vector和array提供了更好的遍历机制。

  2)迭代器与指针相关性,以及,区别:

    a)迭代器不是指针,是类模板,表现的像指针。

    b)迭代器返回的是对象引用而不是对象的值,所以cout只能输出迭代器使用*取值后的值而不能直接输出其自身。

    c)指针能指向函数而迭代器不行,迭代器只能指向容器。

    d)指针是迭代器的一种,指针只能用于某些特定的容器。

  3)C风格字符串与string区别:

    a)C语言字符串是字符的数组,并用‘\0’来表示字符串结束。

    b)string类,使用时不必担心内存是否充足,字符串长度等问题。并且C++中的string类作为一个类,其中集成的操作函数足以完成多数情况下的程序需求。

 

2. 实验任务5

Info.hpp源码:

 1 #ifndef INFO_HPP
 2 #define INFO_HPP
 3 
 4 #include<iostream>
 5 #include<string>
 6 #include<iomanip>
 7 
 8 using namespace std;
 9 
10 class info {
11     private:
12         string nickname;
13         string contact;
14         string city;
15         int n;
16     public:
17         void print();
18         info();
19         int get_n();
20 };
21 
22 void info::print() {
23     cout<<setw(30)<<setfill(' ')<<left<<"称呼:"<<nickname<<endl;
24     cout<<setw(30)<<setfill(' ')<<left<<"联系方式:"<<contact<<endl;
25     cout<<setw(30)<<setfill(' ')<<left<<"所在城市:"<<city<<endl;
26     cout<<setw(30)<<setfill(' ')<<left<<"预定人数:"<<n<<endl;
27 }
28 info::info() {
29     cin>>nickname;
30     cin>>contact;
31     cin>>city;
32     cin>>n;
33 }
34 int info::get_n() {
35     return n;
36 }
37 
38 #endif

task5.cpp源码:

 1 #include"info.hpp"
 2 #include<iostream>
 3 #include<vector>
 4 
 5 using namespace std;
 6 
 7 int main() {
 8     cout<<"录入信息:"<<endl<<endl;
 9     cout<<"称呼/昵称,联系方式(邮箱/手机号),所在城市,预定参加人数"<<endl;
10 
11     const int capacity=100;
12     int num=0;
13 
14     vector<info> audience_info_list;
15 
16     while(num<capacity) {
17         info s;
18         if(num+s.get_n()>capacity) {
19             cout<<"对不起,只剩"<<capacity-num<<"个位置."<<endl;
20             cout<<"1.输入u,更新(update)预定信息"<<endl
21                 <<"2.输入q,退出预定"<<endl;
22             char a;
23             cin>>a;
24             cout<<"你的选择:"<<a<<endl;
25             if(a=='u') continue;
26             else  break;
27         } else {
28             audience_info_list.push_back(s);
29             num=num+s.get_n();
30             if(num==capacity) break;
31         }
32         cout<<"还需要增加预定信息吗?"<<endl;
33         cout<<"1.输入yes,增加预定信息"<<endl
34             <<"2.输入no,退出预定"<<endl;
35         string b;
36         cin>>b;
37         if(b=="yes") continue;
38         else break;
39     }
40 
41     cout<<endl;
42     cout<<"截至目前,一共有"<<num<<"位听众预定参加,预定听众信息如下:"<<endl;
43     for(auto i=audience_info_list.begin(); i!=audience_info_list.end(); i++) {
44         i->print();
45     }
46 }

测试结果截图:

 

3.实验任务6

TextCoder.hpp源码:

 1 #ifndef TEXTCODER_HPP
 2 #define TEXTCODER_HPP
 3 
 4 #include<iostream>
 5 #include<string>
 6 
 7 using namespace std;
 8 
 9 class TextCoder {
10     private:
11         string text;
12     public:
13         string encoder();
14         string decoder();
15         TextCoder(string text0) {
16             text=text0;
17         }
18 };
19 
20 string TextCoder::encoder() {
21     for(int i=0; i<text.size(); i++) {
22         if('a'<=text[i]&&text[i]<='u') {
23             text[i]=text[i]+5;
24         } else if('v'<=text[i]&&text[i]<='z') {
25             text[i]=text[i]-21;
26         } else if('A'<=text[i]&&text[i]<='U') {
27             text[i]=text[i]+5;
28         } else if('V'<=text[i]&&text[i]<='Z') {
29             text[i]=text[i]-21;
30         }
31     }
32     return text;
33 }
34 string TextCoder::decoder() {
35     for(int i=0; i<text.size(); i++) {
36         if('f'<=text[i]&&text[i]<='z') {
37             text[i]=text[i]-5;
38         } else if('a'<=text[i]&&text[i]<='e') {
39             text[i]=text[i]+21;
40         } else if('F'<=text[i]&&text[i]<='Z') {
41             text[i]=text[i]-5;
42         } else if('A'<=text[i]&&text[i]<='E') {
43             text[i]=text[i]+21;
44         }
45     }
46     return text;
47 }
48 
49 #endif

task5.cpp源码:

 1 #include "textcoder.hpp"
 2 #include <iostream>
 3 #include <string>
 4 
 5 int main() {
 6     using namespace std;
 7 
 8     string text, encoded_text, decoded_text;
 9 
10     cout << "输入英文文本: ";
11     while (getline(cin, text)) {
12         encoded_text = TextCoder(text).encoder();  // 这里使用的是临时无名对象
13         cout << "加密后英文文本:\t" << encoded_text << endl;
14 
15         decoded_text = TextCoder(encoded_text).decoder(); // 这里使用的是临时无名对象
16         cout << "解密后英文文本:\t" << decoded_text << endl;
17         cout << "\n输入英文文本: ";
18     }
19 }

测试结果截图:

这篇关于实验2 数组、指针与C++标准库的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!