stl和c++标准库,c++的标准模板库

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: