stl和c++标准库,c++的标准模板库
13 标准模板库STL 13-判断题单选题填空题程序填空题函数题7-1 .查找电话号码7-2 姓名排序7-3分数处理13编程题7-1 查找成绩并折算后输出7-2 电话号码同步7-3 姓名排序标准模板库测试13-判断题1-1 可以通过下标随机访问向量矢量中的元素1000吨。
1-2 当向量对象的内存用完之后,就会产生越界错误F
单选题2-1 若有下面的语句:
向量int v;
for(int I=0;I 4;我)
五。push _ back(I 1);
cout v . size()endl;则
执行后程序的输出结果是D
A.一
B.2
C.3
D.四
2-2 设有定义向量串五(10);执行下列哪条语句时会调用构造函数?C
a . v[0]=" ABC ";
b . v[0]=" 2018 ";
简历。push _ back(" ZUCC ");
d . cout(v[1]==" def ");
2-3 .设有如下代码段:
std:map char *,int m;
const int MAX _ SIZE=100
int main() {
char str[MAX _ SIZE];
for(int I=0;i 10i ) {
性病:cin海峡;
m[str]=I;
}
STD:cout m . size()STD:endl;
}读入10个字符串,则输出的m.size()为B
答:0
B.一
C10
填空题4-1(6分)
容器保存一系列对象。容器可以这样分类:
序列容器提供对(半开)元素序列的访问。
关联容器提供基于关键字的值查找。
4-2(8分)
迭代器类似于指针,因为它提供解引用访问(例如,解引用),以及移动以指向新元素(例如,移动到下一个元素)的操作。一个序列由一对定义半开范围的迭代器定义[begin:end]:
也就是说,开始指向序列的第一个元素,结束指向序列的倒数第二个元素。切勿读取或写入。注意,空序列有begin==end也就是说,[p:p]是任何迭代器p的空序列。
程序填空题5-1.查找雇员信息(关联容器地图)
阅读程序并填空。
#包括输入输出流
#包含标准库函数
#包含地图
#包含字符串
使用命名空间标准
员工类别{
公共:
雇员(字符串名称,字符串电话号码,字符串地址){
this-name=name;
this-电话号码=电话号码;
此地址=地址;
}
字符串名称;
字符串电话号码
字符串地址;
};
int main()
{
映射int,雇员*雇员映射
typedef对int,employee * employeePair
for(int employIndex=1001;employIndex=1003employIndex ){
充电温度[10];//临时存储单元
sprintf(temp," %d ",employ index);//将转化为字符串存储在临时雇员中
字符串tmp(温度);//通过临时雇员构造线对象
员工* p=新员工(2分)("员工-" tmp " 85523927-" tmp "地址——“tmp);
employeeMap.insert(2分)(employeePair(employIndex,p));//将员工编号和员工信息插入到员工地图对象中
}
int员工编号=0;
cout "请输入员工编号:";
宫颈癌前病变雇员号;//从标准输入获得员工号
map int,employee* (2分):迭代器它;
it=员工图。查找(员工编号);//根据员工编号查找员工信息
if(it==employeeMap.end()(2分)){
cout "该员工编号不存在!"恩德尔
return-1;
}
cout "你所查询的员工编号为:“it-first endl;
cout "该员工姓名:“it-second-name endl;
cout "该员工电话:" it-second-phornnumber(2分)endl
cout "该员工地址:“it-second-address endl;
返回0;
}
5-2 文件目录树
阅读下列说明和C代码,将应填入(名词)处的字句写在答题纸的对应栏内。
【说明】现欲构造一文件/目录树,采用组合(复合材料)设计模式来设计,得到的类图如下所示
【C代码】
#包括
#包括
#包括
使用命名空间标准
类抽象文件{
受保护:
字符串名称;//文件或目录名
公共:
void print name(){ cout name;}//打印文件或目录名
虚拟void addChild(abstract file * file)=0;//将子目录或文件添加到目录中
虚拟void remove child(abstract file file)=0;//删除目录的子目录或文件
虚拟列表abstract file * get children()=0;//获取一个目录的子目录或文件
};
类文件:公共抽象文件{
公共:
文件(字符串名称){
this-name=name;}
void addChild(abstract file * file){ return;}
void remove child(abstract file * file){ return;}
list abstract file * * get children(){返回NULL}
};
类文件夹:公共抽象文件{
私人:
list AbstractFile * childList//存储子目录或文件
公共:
文件夹(字符串名称){ this-name=name;}
void addChild(abstract file * file){ child list . push _ back(file);}
void remove child(abstract file file){ child list . remove(file);}
list abstract file * get children(){ return child list;}
};
int main( ) {
//构建树状文件/目录结构
AbstractFile *rootFolder=新文件夹(" c:\ ");
AbstractFile *compositeFolder=新文件夹(" composite ");
AbstractFile *windowsFolder=新文件夹(“windows”);
abstract File * File=new File(" test composite . Java ");
root folder-addChild(composite folder);
root folder-addChild(windows folder);
compositeFolder- addChild(文件);
返回0;
}
问题7-1。找到电话号码7-1。找到电话号码
phonebook1.txt文件包含几个联系人的姓名和电话号码。
高富帅13312342222
付梅13412343333
孙悟空13512345555
唐三藏13612346666
朱能13712347777
沙悟静13812348888
请写一个简单的地址簿程序。当你从键盘输入一个名字时,你可以找到相应的电话号码并输出。如果未找到,则显示未找到。
由于目前的自动判断系统暂时不能支持用户读取文件,我们编写了一个程序,通过键盘输入文件中的姓名和电话号码。当输入名为noname时,表示结束。noname后面有一个名字,你需要找到它对应的电话号码。
输入格式:
高富帅13312342222
付梅13412343333
孙悟空13512345555
唐三藏13612346666
朱能13712347777
沙悟静13812348888
非姓名(结束)
唐三藏(需要找到这个人的电话)
输出格式:
1612346666(输出相应的电话号码)
输入样本:
付梅13412343333
孙悟空13512345555
唐三藏13612346666
朱能13712347777
沙悟静13812348888
没有名字
白骨精
输出样本:
没有找到。#包括iostream
#包含字符串
#包含矢量
#包含地图
使用命名空间std
int main() {
映射字符串,字符串m;
字符串a;
字符串b;
while(1) {
CIN a;
if (a==noname )
打破;
CIN b;
m.insert(对字符串,字符串(a,b));
}
映射字符串,string:迭代器p;
字符串s;
cin的;
p=m . find(s);
如果(p!=m.end())
cout p -秒endl
其他
找不到cout。endl
返回0;
}7-2姓名排序7-2姓名排序
从指定的文本文件中读取若干学生姓名,按拼音顺序排序并输出。
由于目前的OJ系统暂时还不能支持用户读写文件,我们编写了一个程序从键盘输入文件中的名字。当输入的单词是end时,意味着文件的结束。将姓名按拼音顺序排序输出。
输入格式:
张三
李四
王武
刘妈
陈其
孙悟空
目标
输出格式:
陈李四刘妈孙悟空王张武三
输入样本:
来自体面家庭的白皙迷人的女士们
孙悟空
唐三藏
朱
沙悟净
目标
示例输出:#include iostream
#包含字符串
#包含集
使用命名空间std
int main() {
字符串名称;
设置字符串m;
getline(cin,名字);
while(名字!=end) {
m.insert(姓名);
getline(cin,名字);
}
set string:iterator p=m . begin();
而(p!=m.end())
cout * p“”;
}7-3分数处理7-3分数处理
写一个程序来处理学生的成绩数据。
程序的输入包含文本行,有两种格式:
学生的姓名和学号,如学号、姓名和
一个学生的一门课程的分数,如学号,课程名称,分数。
这两种格式的例子有:
3190101234,张三
3190101111,线性代数,89.5
逗号被用作每个字段的分隔符,永远不会出现在任何字段中。请注意,人名和课程名称有不止一个单词。为了使您的代码更容易,分数可以被视为双倍。
学生的数量和课程的数量在开始时是不知道的。一开始也不知道行数。不同格式的行没有顺序出现。一个学生可能不会注册所有课程。
您的程序应该读取中的每一行,并打印出中的摘要表csv。格式。
输出的第一行是表头,包含如下字段:
学号,姓名,课程名称1,课程名称2,平均值
其中课程名称是所有阅读的课程,按字母顺序排列。每个逗号后面应该有一个空格。
然后,输出的每一行都是一个学生的数据,按照学生编号的升序排列,并带有每门课程的分数,如下所示:
3190101234,张三,85.0,89.5,87.3
对于没有注册的课程,在逗号前留一个空格,并且不应该包含在平均分中。平均值有一位小数。每个逗号后面应该有一个空格。
输出的最后一行是每门课程平均分数的汇总行,如下所示:
, 76.2, 87.4, 76.8
所有输出的数字,包括平均值,都有一个小数位。
输入格式
如上文所述。
输出格式
如上文所述。
标准输出由(同groundcontrolcenter)地面控制中心编译的程序生成,即第一个小数位的舍入是“海湾合作委员会方式"。
样本值输入
3180111435,操作系统34.5
3180111430线性代数,80
3180111435,杰西赵
杨志雯3180111430
3180111430,计算机体系结构,46.5
3180111434,线性代数,61.5
3180111434,安娜滕
抽样输出
学号、姓名、计算机体系结构、线性代数、操作系统、平均
3180111430,杨志雯,46.5,80.0,63.2
3180111434,安娜滕,61.5,61.5
3180111435,杰西赵,34.5,34.5
、46.5、70.8、34.5、50.6 #包含算法
#包括输入输出流
#包括非全部
#包含标准库函数
#包括cstdio
#包含字符串
#包含矢量
#包含集
#包含地图
使用命名空间标准
班级学生{
公共:
字符串id,名称;
地图串,双课程;
学生():id(),姓名(){
课程。clear();
}
空集合1(字符串id_,字符串名称_) {
id=id _;
name=name _;
}
空集合2(字符串一,双b) {
课程[a]=b;
}
布尔运算符(常量学生tmp)常量{
返回id tmp。id;
}
};
int main() {
串入;
设置字符串s;
矢量学生表示留数
映射字符串,int mp
而(getline(cin、印第安纳州)){
int n=0;
for(int I=0;我加入。size();i ) {
if (in[i]==,){
n;
}
}
开关(n) {
案例1: {
int ad=-1;
for(int I=0;我加入。size();i ) {
if (in[i]==,){
ad=I;
打破;
}
}
字符串id,名称;
id=in.substr(0,ad);
name=in。substr(ad 2);
如果(!mp.count(id)) {
MP[id]=RES . size();
学生终端监督程式(Terminal Monitor Program的缩写)
tmp.set1(id,name);
资源推回(tmp);
}否则{
ad=MP[id];
res[ad].set1(id,name);
}
打破;
}
案例2: {
int ad1=-1,ad2=-1;
for(int I=0;我加入。size();i ) {
if (in[i]==,){
if (ad1==-1) {
ad1=I;
}否则{
ad2=I;
打破;
}
}
}
字符串id,课程,年级;
id=in.substr(0,ad1);
course=in.substr(ad1 2,ad2-ad1-2);
等级=英寸。substr(ad2 2);
s .插入(课程);
如果(!mp.count(id)) {
MP[id]=RES . size();
学生终端监督程式(Terminal Monitor Program的缩写)
tmp.set2(课程,atof(成绩。c _ str()));
资源推回(tmp);
}否则{
int ad=MP[id];
res[ad].set2(课程,atof(成绩。c _ str());
}
打破;
}
}
}
cout 学生id,姓名;
对于(自动输入){
cout , I;
}
cout ,average endl
vector double sum(s.size(),0),cnt(s.size(),0);
sort(res.begin()、RES . end());
int tot=0;
double ave=0;
for(int I=0;I RES . size();i ) {
法院决议。id , res[i].姓名;
int ad=0;
tot=0;
ave=0;
对于(自动j: s) {
cout ,;
if (res[i].course.count(j)) {
cout固定设定精度(1) res[i]。课程[j];
sum[ad]=res[i]。课程[j];
CNT[ad];
ave=res[i]。课程[j];
tot
}
ad;
}
cout , fixed set precision(1)ave/tot endl;
}
cout ,;
tot=0;
ave=0;
for(int I=0;I sum . size();i ) {
tot
ave=sum[I]/CNT[I];
cout , fixed set precision(1)sum[I]/CNT[I];
}
cout , fixed set precision(1)ave/tot endl;
返回0;
}13编程问题7-1求结果并转换后输出7-1求结果并转换后输出。
文件:期中考试成绩. txt里有几个学生的名字和数学期中考试成绩。
史密斯67
安德森75
刘易斯83
库克58
大卫96
请写一个简单的查询结果程序。当你从键盘输入一个名字,就可以找到他的数学期中成绩,换算成21%输出。如果未找到,则显示未找到。
由于目前的OJ系统暂时不能支持用户读取文件,我们编写了一个程序从键盘输入文件中的名字和等级。当输入名为noname时,表示结束。noname后面有一个名字,你需要找到它的成就。
输入格式:
史密斯67
安德森75
刘易斯83
库克58
大卫96
非姓名(结束)
账单
输出格式:
没有找到。
输入样本:
史密斯67
安德森75
刘易斯83
库克58
大卫96
没有名字
刘易斯
输出样本:
17.43 #包含iostream
#包含字符串
#包含地图
使用命名空间std
int main()
{
映射字符串,int m;
字符串a;
int b;
while(1)
{
CIN a;
if (a==noname )
打破;
CIN b;
m.insert(对字符串,int (a,b));
}
字符串s;
cin的;
map string,int:iterator p=m . begin();
p=m . find(s);
如果(p!=m.end())
cout (p秒)* 0.21 endl
其他
找不到cout。endl
返回0;
}7-2电话号码同步7-2电话号码同步
文件phonebook1.txt和phonebook2.txt包含几个联系人的姓名和电话号码。请设计一个程序来同步这两个文件中的电话号码。(所谓同步,就是把两个文件中的电话号码合并,去掉相同的名字和电话号码。请按语音顺序对同步的电话号码进行排序,并将其保存在phonebook3.txt文件中)
由于目前的OJ系统暂时不能支持用户读写文件,我们编写程序从键盘输入文件中的姓名和电话号码。当输入的单词是end时,表示文件结束。同步的电话号码根据姓名的语音顺序排序,然后输出。
输入格式:
张13012345678
李13112340000
王武13212341111
马13312342222
陈13412343333
孙悟空13512345555
End(表示文件phonebook1.txt的结束)
张13012345678
孙悟空13512345555
王武13212341111
陈13412343333
唐三藏13612346666
朱能13712347777
沙悟静13812348888
End(表示文件phonebook2.txt的结束)
输出格式:
陈13412343333
李13112340000
马13312342222
沙悟静13812348888
孙悟空13512345555
唐三藏13612346666
王武13212341111
张13012345678
朱能13712347777
输入样本:
张3 13012345678
Li4 13112340000
王5 13212341111
Ma6 13312342222
陈7 13412343333
孙悟空13512345555
目标
张3 13012345678
孙悟空13512345555
王5 13212341111
陈7 13412343333
唐三藏13612346666
珠物能13712347777
沙悟净13812348888
目标
输出样本:
陈7 13412343333
Li4 13112340000
Ma6 13312342222
沙悟净13812348888
孙悟空13512345555
唐三藏13612346666
王5 13212341111
张3 13012345678
珠物能13712347777 #包含iostream
#包含集
#包含字符串
使用命名空间std
int main() {
设置字符串s;
字符串S1;
for(int I=0;I 2;我)
{
getline(cin,S1);
而(s1!=结束)
{
s .插入(S1);
getline(cin,S1);
}
}
set string:iterator ITER;
for(ITER=s . begin();iter!=s . end();iter)
cout * iter endl
返回0;
}7-3姓名排序7-3姓名排序
从指定的文本文件中读取若干学生姓名,按拼音顺序排序并输出。
由于目前的橙汁系统暂时不能支持用户读入文件和写文件,我们编写程序从键盘输入文件中的姓名,当输入的单词为目标时,表示文件结束。将按照姓名拼音顺序排序后输出。
输入格式:
张三
李四
王五
马六
陈七
孙悟空
目标
输出格式:
陈七李四马六孙悟空王五张三
输入样例:
白富美
孙悟空
唐三藏
猪悟能
沙悟净
目标
输出样例:#包含输入输出流
#包含集
#包含字符串
使用命名空间标准
int main() {
设置字符串s;
字符串S1;
for(int I=0;I 2;我)
{
getline(S1 CIN);
而(s1!=结束)
{
s。插入(S1);
getline(S1 CIN);
}
}
设置字符串:迭代器ITER;
for(ITER=s . begin();iter!=s . end();iter)
cout * ITER " ";
返回0;
}STL测试#包括输入输出流
#包含矢量
#包含集
#包含地图
使用命名空间标准
void testVector(){
向量int v;
for(int I=0;i5;i ){
五、推回(一);
}
for(int I=0;i5;i ){
cout v[I]”;//我
}
cout \ n
}
void testSet(){
设置int s;
for(int I=0;i5;i ){
插入(一);
}
设置int:迭代器项;
item=s . begin();
//while(item!=s.end()){
//cout * item " ";//我
//item;
//}
for(item=s . begin();物品!=s . end();item)cout(* item)" ";//我
cout \ n
}
void testMap(){
map int,int m;
for(int I=0;i5;i ){
m.insert(pair int,int (i,I));
}
for(int I=0;i5;i ){
//cout m[I]" ";//我
cout m . at(I)" ";//我
}
cout \ n
}
int main(){
void(* test)();//一个函数指针
void(*funs[])()=//一个函数指针数组
{
测试向量,
测试集,
测试地图
};
for(int I=0;i3;i ){
test=funs[I];
test();
}
}
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。