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

全国计算机二级考试C++语言程序设计上机考试试题及答案(7)

2017-6-20编辑:daibenhua

全国计算机二级考试C++语言程序设计上机考试试题及答案

  一、程序改错题

  使用VC++6.0打开考生文件夹下的源程序文件

  1.cpp,该程序运行时有误,请改正其中的错误,使程序正常运行,并使程序的输出结果为

  平均值为29

  最大值为112

  最小值为-11

  注意:错误的语句在//******error******的下面,修改该语句即可。

  试题程序:

  #include(iostream)

  usingnamespacestd;

  intmain()

  {

  inti,Ave,Min,Max;

  intdata[8]={100,21,-73,86,14,0,-21,1};

  Ave=0;

  for(i=0:i<8:i++)

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

  Ave=data[i];

  Ave/=8:

  cout<<"平均值为:"<  Max=Min=data[O];

  for(i=0;i<8;i++)

  {

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

  if(data[i](Max)Max=data[i];

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

  if(data[i])Min)Min=data[i];

  }

  cout<<"最大值为:"<  cout<<"最小值为:"<  return0;

  }

  二、简单应用题

  使用VC++6.0打开考生文件夹下的源程序文件2.cpp。阅读下列函数说明和代码,完成空出部分程序。函数sum(intA[NUM][NUM],intn)的功能是计算矩阵中所有非质数数字的和。

  提示:函数isPrime(intn)的功能是判定当前数字是否为质数,如果是,则返回true。

  注意:不能修改程序的其他部分,只能修改sum函数。

  试题程序:

  #include(iostream.h)

  #include

  #defineNUM50

  intA[NUM][NUM]=

  {

  {1,3,5,7,9},

  {11,13,15,17,19},

  {21,23,25,27,29},

  {31,33,35,37,39},

  {41,43,45,47,49}

  };

  boolisPrime(intn)

  {

  if(n==1)

  returnfalse;

  if(n==2)

  returntrue;

  for(inti=2;i(n/2;i++)

  {

  if(n%i==0)

  returnfalse;

  }

  returntrue;

  }

  intsum(intAENUM]ENUM],intn)

  {

  }

  intmain()

  {

  cout<  return0;

  }

  三、综合应用题

  使用VC++6.0打开考生文件夹下的源程序文件3.cpp,其中定义了类BA、PA1和PA2,其中PA1类由BA类公有派生,PA2类由PA1类公有派生。上述3个类的定义并不完整,请按要求完成下列操作,将程序补充完整。

  程序输出结果如下:

  1O

  5

  1057

  (1)定义类BA的构造函数,该构造函数有一个整型的参数m,在构造函数中将m赋值给数据成员a。请在注释1之后添加适当的语句。

  (2)定义类PA1的构造函数,该构造函数有两个整型的参数m和n,在构造函数中将m赋值给数据成员b,将n作为基类BA构造函数的参数值传人。请在注释2之后添加适当的语句。

  (3)定义类PA2的构造函数,该构造函数有3个整型的参数m、n和k,在构造函数中请将m赋值给数据成员c,将n和k分别赋值给基类PA1构造函数的参数m和n。请在注释3之后添加适当的语句。

  (4)完成类PA2的成员函数show的定义,该函数调用基类成员函数,输出基类私有成员a、b及类PA2自身的数据成员C的值,上述3个值在输出时用空格隔开。请在注释4之后添加适当的语句。

  注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。

  试题程序:

  #include(iostream.h>

  classBA

  {

  inta;

  public:

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

  intgeta(){returna;}

  };

  classPAl:publicBA

  {

  intb;

  public:

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

  intgetb(){returnb;}

  };

  classPA2:publicPAl

  {

  intC;

  public:

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

  voidshow()

  {

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

  }

  };

  voidmain()

  {

  PA2a(7,5,10);

  cout<  cout<  a.show();

  }

  上机考试试题答案与解析

  一、程序改错题

  (1)应改为“Ave+=data[i];”或“Ave=Ave+data[i];”。

  (2)应改为“if(data[i])Max)Max=data[i];”。

  (3)应改为“if(data[i](Min)Min=data[i];”。

  【解析】本题第一个for循环是求数组各个元素的和,逐次将每个元素值加起来,而程序当中是逐个赋值的,因此在第1标识处应将“Ave=data[i]”改成“Ave+=data[i]”或“AveAve+data[i]”。第2处根据题意再求数组当中元素的最大值和最小值,用变量Max记录最大值,Min记录最小值,在for循环中,逐次比较,如果该元素值比当前Max大,则Max取该元素值,因此第2标识处正确的语句应该是“if(data[i]>Max)Max=data[i]”。如果数组中该元素值比Min小,则Min取该元素值。因此,两个if语句中的条件判断错误,将第3标识处的语句“if(data[i]>Min)Min=data[i];”改成“if(data[i]  二、简单应用题

  intre=0:

  for(inti=0;i  {

  for(intj=0;j  {

  if(!isPrime(A[i][j]))//判断是否是素数,不是

  素数则累加

  {

  re=re+A[i][j];

  }

  }

  }

  returnre:

  【解析】矩阵A[NUM][NUM]是二维矩阵,sum函数的参数n给出了矩阵A的具体维数,因此矩阵A中共含有n×n个有效数。A[NUM][NUM]中的元素可表示为A[i][j],其中i表示元素所在行数,j表示元素所在的列数,i、j分别在0到n-1范围内变化,因此设置内外两层循环可逐个遍历整个矩阵寻找非质数。函数isPrime提供了判断质数的方法,对每个元素A[i][j],调用函数isPrime(A[i][j]),判断函数的返回值是否为假,如果为假,说明不是质数,应该累加起来。

  三、综合应用题

  (1)应添加“BA(intm){a=m;}”。

  (2)应添加“PAl(intm,intn):BA(n){b=m;}”。

  (3)应添力Ⅱ“PA2(intm,intn,intk):PAl(n,k){C=m;)”。

  (4)应添加“cout<  【解析】根据第1处要求,构造函数的函数名和类名一致,显然BA构造函数的名称为BA,在BA()中通过参数m完成对成员变量a的赋值,因此构造函数的名称为BA(intm),在函数内部对成员a赋值,故第1处的语句应添加“BA(intm){a=m;)”。根据第2处的要求,构造函数的形式为“PAl(intm,intn)”,m赋值给PA1类成员b,将n作为基类BA构造函数的参数值传入,故第2处应添加“PA1(intm,intn):BA(n){b=m;}”。根据第3处的要求,函数形式为PA2(intm,intn,intk),在构造函数中将m赋值给数据成员c,将n和k分别赋值给基类PA1构造函数的参数m和n,因此第3处应添加“PA2(intm,intn,intk):PA1(n,k){C=m;}”。根据第4处的要求,PA2类公有派生于PA1,而PA1公有派生于BA,因此在PA2类中可以调用基类的geta()和getb()来获得基类私有成员a和b,再输出PA2的私有成员C即满足要求,因此第4处应添加“cout<

全国计算机二级考试C++语言程序设计上机考试试题及答案(6)

热点推荐

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