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

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

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

  一、程序改错题

  使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错.请改正其中的错误,使程序正常运行,并使程序输出的结果为

  Maxis7

  提示:max函数用于找出两个数中的最大值,并作为函

  数值返回。

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

  试题程序:

  #include

  usingnamespacestd;

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

  intmax(inta,intb)

  {

  if(a  {

  intt=a;

  a=b:

  b=t;

  }

  returnb;

  }

  intmain()

  {

  intm=-3:

  intn=7:

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

  max(-3,n);

  cout<<"Maxis"<  return0;

  }

  二、简单应用题

  使用VC++6.0打开考生文件夹下的源程序文件2.cpp。阅读下列函数说明和代码,完成空出部分的程序。实现函数sort(intA[],intn),用冒泡法对数组数据进行排序。所谓冒泡法,就是每次把相邻的两个数交换,较大的数交换到后面。这样下标从0到n-1的数与其后面相邻的数交换,可以把最大的数交换到数组的末端。进行n次下标从0到n-1的交换,则数组变成有序的,并且按由大到小排序。

  注意:不能修改和删除程序的其他部分,也不能修改程序的结构。

  试题程序:

  #include

  #defineN10

  voidsort(intA[N],intn)

  {

  }

  intmain()

  {

  intA[N]={1,50,17,69,87,42,90,-6,O,-11};

  sort(A,10);

  for(inti=0;i  {

  cout<  }

  cout<  return0;

  }

 

  三、综合应用题

  使用VC++6.0打开考生文件夹下的源程序文件3.cpp。其中定义的类不完整,按要求完成下列撮作,将类的定义补充完整。

  (1)利用define定义常量TRUE为1,定义常量FALSE为0,请在注释1后添加适当的语句。

  (2)在类A2前增加A1的声明,请在注释2后添加适当的语句。

  (3)在类Cl中声明友元函数boolrune(A2&a,A1&b),请在注释3后添加适当的语句。

  (4)实现函数boolfunc(A2&obj1,Al&obj2)的功能,检查两个类的值都为TRUE,则返回TRUE,请在注释4后添加适当的语句。

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

  试题程序:

  #include(iostream.h>

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

  #

  defineFALSE0

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

  classA2

  {

  private:

  boolm_A2;

  friendboolfunc(A2&objl,A1&obj2);

  public:

  A2()

  {

  m_A2=FALSE。

  }

  public:

  voidsetA2(booln)

  {

  m_A2=n;

  }

  };

  elaSSA1

  {

  private:

  boolm_A1;

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

  public:

  A1()

  {

  m_A1=TRUE;

  }

  public:

  voidsetAl(booln)

  {

  m_A1=n;

  }

  };

  boolfunc(A2&objl,A1&obj2)

  {

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

  return

  }

  intmain()

  {

  A20bj0;

  A10bj1;

  cout<  obj0.setA2(TRUE);

  objl.setAl(TRUE);

  cout<  return0;

  }

  一、程序改错题

  (1)应改为“intmax(int&a,int&b)”。

  (2)应改为“max(m,n);”。

  【解析】

  由题分析可知,max函数采用传送引用的方式来传递参数,因此第1处的语句应该为“intmax(int&a,int&b)”。调用max时,传递引用时直接使用变量名即可,第2处的语句应改为“max(m,n)”。

  二、简单应用题

  inti,j,k,t;

  for(i=0;i(n-1;i++)

  {

  for(k=i,j=i+1;j  if(A[k]  交换

  k=j;

  if(k!=i)//交换

  {

  t=AEi3;

  A[i]=A[k];

  A[k]=t;

  }

  【解析】以数组“A[]={3,8,7,6,5,0,1,2,9,4},,为例来说明具体的排序过程,第一次选择:第一步,从A[0]-A[9]中找最大值max及下标k,max=9,k=8;第二步,交换a[0]与最大值a[8]的值;第一次结束后a[0]已存放了最大值,下一次比较就不必再经过它了,而从a[1]开始,如此循环。从例中可以看出10个元素要进行9次比较,n个元素要进行n-1次比较。设置两层循环,外层循环变量i从0到n-1,内层循环变量从i开始到n-1,在内层循环中找最大值,如果最大值的下标k和i不同,则交换,实现选择法排序。在内层循环体内,如果最大值的下标k和i不同,则用一个临时变量记录第i个元素,然后将第k个元素赋值给第i个元素,临时变量值赋给第k个元素,如此完成两个元素的交换。

  三、综合应用题

  (1)应添加“#defineTRUE1”。

  (2)应添加“classA1;”。

  (3)应添加“friendboolfunc(A2&objl,Al&obj2);”。

  (4)将“retllin”补充完整为“returnobjl.m_A2==TRUE&&obj2.m_A1==TRUE;”。

  【解析】#define命令一般用一个指定的标识符(即宏

  名)来代表一个字符串,其定义形式一般为“#define宏名(参数表)字符串”,因此第1处应添加“#defineTRUEl”。类声明格式为“class<类名>;”,故第2处应添加“class

  A1;”。友元不是本类的成员函数,在它的函数体内可以通过对象名来访问类的私有成员和保护成员。友元函数是在类声明中由关键字friend修饰的非成员函数,第3处应添加“friendboolfune(A2&objl,Al&obj2);”。函数func返回变量m_A2和m_A1的逻辑与运算结果,因此第4处的语句应改为“returnobj1.m_A2==TRUE&&obj2.m_A1==TRUE;”。

 

 

责编:曾珂

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

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

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

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

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

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

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

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

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

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

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