计算机等级 > 二级考试 > C++语言程序设计 > C++模拟试题 > 文章内容

全国计算机二级考试C++上机考试试题及答案(12)

2017-7-5编辑:daibenhua

  一、程序改错题

  使用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]=’\0’;//新串添加尾符

  }

  }

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

  三、综合应用题

  (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<

全国计算机二级考试C++上机考试试题及答案(11)

热点推荐

登录注册
触屏版电脑版网站地图