试题

全国计算机二级《C++》上机试题及答案

时间:2024-08-15 05:08:10 松涛 试题 我要投稿
  • 相关推荐

全国计算机二级《C++》上机试题及答案

  在各领域中,我们或多或少都会接触到试题,借助试题可以更好地考查参试者所掌握的知识和技能。一份好的试题都是什么样子的呢?以下是小编精心整理的全国计算机二级《C++》上机试题及答案,欢迎阅读,希望大家能够喜欢。

全国计算机二级《C++》上机试题及答案

  一、程序改错题

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

  Constructor,i=0,

  Destructor

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

  试题程序:

  #include(iostream.h)

  classTC

  {

  inti;

  public:

  TC();

  voiddisplay();

  ~TC();

  };

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

  TC:TC()

  {

  cout<<"Constructor"<<",";

  i=0;

  )

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

  TC:display()

  {

  tout<<"i="<  }

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

  TC:TC()

  {

  COUI<<"Destructor"<  }

  voidmain()

  {

  TCa;

  a.display();

  }

  二、简单应用题

  使用VC++6.0打开考生文件夹下的源程序文件2.cpp。阅读下列函数说明和代码,实现函数sort(intA[],intn),用选择排序法将数组从大到小排序。

  提示:选择排序法的思想是

  (1)反复从还未排好序的那部分线性表中选出关键字最小的结点。

  (2)按照从线性表中选出的顺序排列结点,重新组成线性表。

  (3)直到未排序的那部分为空,使得重新形成的线性表是一个有序的线性表。

  补充函数sort(intA[],intn),实现选择排序。

  注意:请勿改动主函数。

  试题程序:

  #include

  #defineN10

  voidsort(intA[N],intn)

  {

  }

  intmain()

  intA[N]={-72,54,-6,7,18,102,0,4,-11,1};

  sort(A,10);

  for(inti=0;i(sizeof(A)/sizeof(int);i++)

  {

  cout<  }

  cout<  return0;

  }

  三、综合应用题

  使用VC++6.0打开考生文件夹下的源程序文件3.cpp。其中定义的类不完整,按要求完成下列操作,将类的定义补充完整。每卖出一个水果,则计算水果的重量,还要计算所有卖出水果的总重量以及总个数,同时允许退货,请按照以下的操作,把类补充完整。

  (1)定义类TCFruit的私有静态数据成员float型变量AllWeight和int型变量AllN0,请在注释1后添加适当的语句。

  (2)完成类TCFruit的带一个float型变量w的构造函数,并把这个w加到AllWeight中,并且AllNo自加。请在注释2后添加适当的语句。

  (3)在析构函数中,在AllWeight中减去weight,然后AllNo自减,请在注释3后添加适当的语句。

  (4)完成静态成员变量的初始化为0,请在注释4后添加适当的语句。

  注意:增加或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。

  试题程序:

  #include(iostream.h>

  classTCFruit

  {

  private:

  floatWeight;

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

  staticintAllNo;

  public:

  TCFruit(floatw)

  {

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

  AllWeight+=w:

  AllNo++:

  }

  ~TCFruit()

  {

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

  AllWeight-=Weight:

  }

  voiddisplay()

  {

  cout<<"SellaFruitwith"<  endl;

  cout<<”Allsellnumber:"<  cout<<"Allsellweight:"<  endl<  }

  };

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

  floatTCFruit::AllWeight=0.0;

  intmain()

  {

  TCFruitFruitl(1.2);

  Fruitl.display();

  TCFruitFruit2(2.3);

  Fruit2.display();

  return0;

  }

  全国计算机二级《C++》上机试题及答案 篇1

  一、程序改错题

  (1)应改为“TC::TC()”。

  (2)应改为“voidTC::display()”。

  (3)应改为“TC::~TC()”。

  【解析】在类的外部定义成员函数时,必须在成员函数前面加上类名和作用域运算符“::”,作用域运算符用采表示某个成员属于哪个类,使用格式为“(类名)::<成员函数>((参数函数)),因此第1处应改为“TC::TC()”,默认构造函数没有参数。由第2处“TC::display()”后的语句看,这是在类外实现TC函数,因此也有作用域运算符使用错误问题,display函数返回值为void,因此第2处的语句应改为“voidTC::display()”。由第3处的语句“TC::TC()”可知,显然这里是在类外实现析构函数,析构函数是一个特殊的函数,它的名称和类名相同,并在前面加“~”字符,用采与构造函数加以区别,因此第3处的语句应改为“TC::~TC()”。

  二、简单应用题

  inti,j;

  for(i=O;i  {

  for(j=0;j  {

  if(A[j]>A[j+1])//如果前面的数比后面的大则

  进行交换

  {

  intt=A[j];//进行交换

  A[j]=A[j+1];

  A[j+1]=t;

  }

  }

  }

  【解析】数组A[N]中有n个数,进行n-1次比较,在每一次比较中两两比较的次数逐渐减少,比如若有6个数9,

  8,5,4,2,0。第一次将8和9对调,第二次将第2个数9和第3个数5对调,如此共进行5次,得到8-5-4-2-0-9的顺序,可以看到:最大的数9已“沉底”,成为最下面一个数,而小的数“上升”。最小的数0已向上“浮起”一个位置。经第一趟(共5次)后,已得到最大的数,然后进行第二趟比较,对余下的前面5个数按上面的方法进行比较,经过4次比较,得到次大的数8。如此进行下去。可以推知,6个数要比较5趟。在第一趟中要进行两两比较5次,在第二趟中比较4次,……第5趟比较1次。因此设置两层循环,外层循环变量i从O变化大到n-1,内层循环变量j从0到n-j,在内层循环体内,比较相邻两数,如果前面比后面的大则交换。在内层循环体内,如果前面的元素比后面的元素大,则用一个临时变量记录前面的第j个元素,然后将第j+1个元素赋值给第j个元素,临时变量值赋给第j+1个元素,如此完成两个元素的.交换。

  三、综合应用题

  (1)应添加“staticfloatAllWeight;”。

  (2)应添加“Weight=w;”。

  (3)应添加“AllNo--;”。

  (4)应添加“intTCFruit::AllNo=0;”。

  【解析】静态数据成员声明时需使用关键字static,因此第1处应添加“staticfloatAllWeight;”。构造函数用来对类成员进行初始化,在TCFruit类的构造函数TCFruit(floatw)中,完成weight的初始化,并把这个w加到AllWeight中,并且AllNo自加,因此第2处应添加“weight=w;”。调用析构函数相当于退出,这时AllWeight中减去weight,然后AllNo自减,因此第3处应添加“AllNo--;”。静态数据成员的初始化格式为“<数据类型><类名>::(静态数据成员>=(初始值)”,因此第4处应添加“intTCFruit::AllNo=0;”。

  C语言基本算法

  1.交换(两量交换借助第三者)

  例1、任意读入两个整数,将二者的值交换后输出。

  main()

  {int a,b,t;

  scanf("%d%d",&a,&b);

  printf("%d,%d ",a,b);

  t=a; a=b; b=t;

  printf("%d,%d ",a,b);}

  【解析】程序中加粗部分为算法的核心,如同交换两个杯子里的饮料,必须借助第三个空杯子。

  假设输入的值分别为3、7,则第一行输出为3,7;第二行输出为7,3。

  其中t为中间变量,起到“空杯子”的作用。

  注意:三句赋值语句赋值号左右的各量之间的关系!

  【应用】

  例2、任意读入三个整数,然后按从小到大的顺序输出。

  main()

  {int a,b,c,t;

  scanf("%d%d%d",&a,&b,&c);

  if(a>b){ t=a; a=b; b=t; }

  if(a>c){ t=a; a=c; c=t; }

  if(b>c) { t=b; b=c; c=t; }

  printf("%d,%d,%d ",a,b,c);}

  2.累加

  累加算法的要领是形如“s=s+A”的累加式,此式必须出现在循环中才能被反复执行,从而实现累加功能。“A”通常是有规律变化的表达式,s在进入循环前必须获得合适的初值,通常为0。

  例1、求1+2+3+……+100的和。

  main()

  {int i,s;

  s=0; i=1;

  while(i<=100)

  {s=s+i;

  i=i+1;

  }

  printf("1+2+3+...+100=%d ",s);}

  【解析】程序中加粗部分为累加式的典型形式,赋值号左右都出现的变量称为累加器,其中“i = i + 1”为特殊的累加式,每次累加的值为1,这样的累加器又称为计数器。

  3.累乘

  累乘算法的要领是形如“s=s*A”的累乘式,此式必须出现在循环中才能被反复执行,从而实现累乘功能。“A”通常是有规律变化的表达式,s在进入循环前必须获得合适的初值,通常为1。

  例1、求10!

  [分析]10!=1×2×3×……×10

  main()

  {int i; long c;

  c=1; i=1;

  while(i<=10)

  {c=c*i;

  i=i+1;

  }

  printf("1*2*3*...*10=%ld ",c);}

【全国计算机二级《C++》上机试题及答案】相关文章:

全国计算机二级考试C++巩固试题与答案03-01

计算机二级C++模拟试题及答案02-06

计算机二级《Java》上机试题及答案201603-09

计算机二级考试VF上机试题及答案03-21

2015年计算机二级Access上机试题及答案12-02

2016年9月计算机二级《C++》上机题库及答案03-10

2024计算机二级C上机考试试题及答案10-23

2016计算机二级《C++》上机练习题03-27

计算机二级考试C++语言程序设计上机考试试题12-03