当前位置:首页 > 全部子站 > IT > 等级考试

2018年9月计算机二级C++考试上机练习题及答案(3)

来源:长理培训发布时间:2018-08-14 20:32:52

   一、程序改错题

  使用VC++6.0打开考生文件夹下的源程序文件1.cpp。本程序要求输入一个字符串,然后将其中的小写字母改成大写字母,字符可能输入多行,当输入字符“?”时,默认字符输入结束,最后把结果输出到屏幕中。

  注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。

  试题程序:

  #include

  voidmain()

  {

  inti=0;

  charstr[120];

  cout<<"Enterastringendwith’?’."<  //********error********

  cin.getline(str,120);

  //********error********

  while(str)

  {

  //********error********

  if(str[i])=’a’)

  str[i]=str[i]-’a’+’A’;

  i++;

  }

  cout<  return;

  }

  二、简单应用题

  使用VC++6.0打开考生文件夹下的源程序文件2.cpp。完成函数fun(char*sl,char*s2)的空出部分。函数fun(char*s1,char*s2)的功能是将在字符串s1中下标为偶数的字符,紧随其后重复出现一次,放在一个新串s2中,s2中字符按原字符串中字符的顺序排列。(注意0为偶数)

  例如:当s1中的字符串为“abcdef”时,s2中的字符串应为“aaccee”。

  注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

  试题程序:

  #include(iostream.h)

  voidfun(char*s1,char*s2)

  {

  }

  voidmain()

  {

  charsi[100】,s2【1OO];

  cout<<"Pleaseenterstringstrin9:"<  cin.getline(s1,100);

  fun(s1,s2);

  cout<<"Theresultis:"<  return;

  }

  三、综合应用题

  使用VC++6.0打开考生文件夹下的源程序文件3.cpp,其中定义了用于表示日期的类Date,但类Date的定义并不完整,按要求完成下列操作,将类的定义补充完整。

  (1)定义私有成员变量year、month、day。分别表示年、月、日,类型为int。请在注释1后添加适当的语句。

  (2)完成构造函数,分别给year、month、day赋值,请在注释2后添加适当的语句。

  (3)完成重载符号“十=”的定义,请在注释3后添加适当的语句。

  (4)完成print打印函数,输出到屏幕和文件的格式相同,请在注释4后添加适当的语句。

  注意:仅在函数指定位置添加语句,请勿改动主函数main与其他函数中的任何内容。

  程序正常运行,输出的结果为2008年11月813。

  试题程序:

  #include(iostream.h)

  #include(fstream)

  #include(iomanip)

  #include  usingnamespacestd;

  voidWriteFile(intc)

  {

  ofstreamout1;

  out1.open("3.txt",ios_base::app);

  out1<  out1.close();

  }

  voidWriteFile(char*str)

  {

  ofstreamoutl;

  out1.open("3.txt",ios_base::app);

  out1<  out1.close();

  }

  voidClearFile()

  {

  ofstreamout1;

  out1.open("3.txt");

  out1.close();

  }

  classDate

  {

  public:

  Date(inty,intm,intd)

  {

  //********1********

  }

  voidprint();

  //********2********

  {

  month+=m;

  inti=month/12:

  intj=month;

  if(j==0)

  {year+=(i-1);

  month=12;

  }

  else

  {

  year+=i:

  month=j;

  }

  return*this;

  }

  private:

  //********3********

  };

  voidDate::print()

  {

  //********4********

  WriteFile(year):

  WriteFile("年");

  WriteFile(month);

  WriteFile("月");

  WriteFile(day);

  WriteFile("日");

  }

  intmain()

  {

  ClearFile();

  DateOly_day(2008,8,8);

  Olyday+=3:

  Oly_day.print();

  return0;

  }

 答案与解析

  一、程序改错题

  (1)应改为“ein.getline(str,120,’?’);”。

  (2)应改为“while(str[i])”。

  (3)应改为“if(str[i]>=’a’&&str[i]<=’2’)”。

  【解析】本题中要求以输入字符“?”为结束符,用于字符输入的流成员函数getline函数读入一行字符,格式为“cin.getline(字符数组,字符个数,终止标志字符)”,所以第1处改为“cin.getline(str,120,’?’);”。第2处的“while(str)”语句应该是判断字符串str中的每一个字符是否为结束符,若不是结束符,在循环中判断每一个字符是否为小写,若为小写,则转换。所以应该修改为“while(str[i])”。第3处的“if(str[i]>=’a’)”语句是判断字符str[i]是否为小写字符,而现有的语句只是判断字符是否大于’a’,但是小写字符应该是’a’到’2’,所以修改为“if(str[i]>=’a’&&str[i]>=’z’)”。

  二、简单应用题

  inti;

  for(i=0;s1[i]!=0;i++)//循环判断每一个字符

  {

  if(i%2==0)//判断字符串中下标为偶数位置

  {

  s2[i]=s1[3];

  s2[i+1]=s1[i];

  s2[i+2]=’’;//新串添加尾符

  }

  }

  【解析】判断一个字符串中的某一个字符下标i是否为偶数,可用“i%2==0”来判断。对串s1中各个字符串逐个进行考查,满足条件的字符就顺序放在新串s2中,否则就不存放。所有字符处理完成后,记得在新串s2的末尾加上结束符“’’。

  三、综合应用题

  (1)应添加“year=y;month=m;day=d;”。

  (2)应添加“Date&operator+=(intm)”。

  (3)应添加“intyear,month,day;”。

  (4)应添加“cout<  【解析】本题中第1处要求“完成构造函数,分别给year、month、day赋值”。在程序中“Date(inty,intm,intd)”的构造函数中添加给year、month、day赋值的语句,即在第1处添加“year=y;month=m;day=d;”。第2处要求“完成重载符号‘+=’的定义”。在C++中,运算符重栽的定义方法是定义一个重载运算符的函数,格式为函数operator+重载运算符号+,所以这里补全“Date&operator+=(intm)”。第3处要求“定义私有成员变量year、month、day”。在C++程序的private区域中添加变量year、month、day的定义,即在第3处添加“intyear,month,day;”。第4处要求“完成函数print()打印函数”。在C++中的print函数中补全其打印功能,即在第四个标识下添加“eout<

责编:曾珂

发表评论(共0条评论)
请自觉遵守互联网相关政策法规,评论内容只代表网友观点,发表审核后显示!

国家电网校园招聘考试直播课程通关班

  • 讲师:刘萍萍 / 谢楠
  • 课时:160h
  • 价格 4580

特色双名师解密新课程高频考点,送国家电网教材讲义,助力一次通关

配套通关班送国网在线题库一套

课程专业名称
讲师
课时
查看课程

国家电网招聘考试录播视频课程

  • 讲师:崔莹莹 / 刘萍萍
  • 课时:180h
  • 价格 3580

特色解密新课程高频考点,免费学习,助力一次通关

配套全套国网视频课程免费学习

课程专业名称
讲师
课时
查看课程
在线题库
面授课程更多>>
图书商城更多>>
在线报名
  • 报考专业:
    *(必填)
  • 姓名:
    *(必填)
  • 手机号码:
    *(必填)
返回顶部