计算机等级 百分网手机站

计算机二级《C++》模拟试题及答案

时间:2017-08-10 19:21:56 计算机等级 我要投稿

2016年计算机二级《C++》模拟试题及答案

  (1)以下都是C++语言标识符的是

  A)dsfa,df4,f$

  B)huhj,a^,k2

  C)3k,h,j_9

  D)_ok,jk,k8

  (2)C++语言中用于定义类的关键字是

  A)class

  B)struct

  C)default

  D)sizeof

  (3)设以下变量均为int类型,则值不等于7的表达式是

  A)(x=y=6,x+y,x+1)

  B)(x=y=6,x+y,y+1)

  C)(x=6,x+1,y=6,x+y)

  D)(y=6,y+1,x=y,x+1)

  (4)以下程序的输出结果是

  #include

  void main()

  { int a=21,b=11;

  cout << --a+b;}

  A)30

  B)31

  C)32

  D)33

  (5)while 和do-while循环的主要区别是

  A)do-while的循环体至少无条件执行一次

  B)while的循环控制条件比do-while的循环控制条件更严格

  C)do-while允许从外部转到循环体内

  D)do-while 的循环体不能是复合语句

  (6)与 y=(x>0?1:x<0?-1:0);的功能相同的`if语句是

  A)if (x>0)y=1;

  else if(x<0)y=-1;

  else y=0;

  B)if(x)

  if(x>0)y=1;

  else if(x<0)y=-1;

  C)y=-1;

  if(x)

  if(x>0)y=1;

  else if(x==0)y=0;

  else y=-1;

  D)y=0;

  if(x>=0)

  if(x>0)y=1;

  else y=-1;

  (7)若二维数组a有m列,则计算任一元素a[i][j]在数组中相对位置的公式为 (假设a[0][0]位于数组的第一个位置上)

  A)i*m+j

  B)j*m+i

  C)i*m+j-1

  D)i*m+j+1

  (8)下面程序段的运行结果是

  #include

  void main()

  { char *s="abcde";

  s+=2;

  cout << &s;}

  A)cde

  B)字符′c′

  C)字符′c′的地址

  D)无确定的输出结果

  (9)下面叙述不正确的是

  A)派生类一般都用公有派生

  B)对基类成员的访问必须是无两义性的

  C)赋值兼容规则也适用于多重继承的组合

  D)基类的公有成员在派生类中仍然是公有的

  (10)下面程序应能对两个整型变量的值进行交换。以下正确的说法是

  #include

  void swap(int p,int q)

  { int t;

  t=p;

  p=q;

  q=t;}

  void main()

  { int a=10,b=20;

  cout << a << " " << b;

  swap(&a,&b);

  cout << a << " " << b;}

  A)该程序完全正确

  B)该程序有错,只要将语句swap(&a,&b);中的参数改为a,b即可

  C)该程序有错,只要将swap()函数中的形参p和q以及t均定义为指针(执行语句不变)即可

  D)以上说法都不对

  答案与解析:

  (1)D

  解析: C++语言标识符只能由数字,字母和下划线组成,并且只能以字母和下划线为开头。

  (2)A

  解析: C++中类定义的关键字是class。class不能大写。

  (3)C

  解析: C++语言中逗号","也是一种运算符,称为逗号运算符。其功能是把两个表达式连接起来组成一个表达式,称为逗号表达式。其一般形式为:表达式1, 表达式2,其求值过程是分别求两个表达式的值,并以表达式2的值作为整个逗号表达式的值。逗号表达式的一般形式可以扩展为:表达式1,表达式2,表达式3,…,表达式n,它的值为表达式n的值。

  (4)B

  解析: 自减运算符位于变量之前时,先使变量的值减1,再进行运算。

  (5)A

  解析: while是先判断条件再执行语句;do-while则是先执行一次语句再判断条件,从而决定是否继续再执行循环体中的语句,这正是二者主要区别。

  (6)A

  解析: 条件运算符要求有三个操作对象,它是C++语言中惟一的一个三目运算符。条件表达式的一般形式为:表达式1?表达式2:表达式3,先求解表达式1,若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值。若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值。本题中用了两次三目运算符。

  (7)A

  解析: a[i][j]元素之前有i行元素(每行有m个元素),在a[i][j]的前面还有j个元素,因此a[i][j]之前共有i*m+j个元素。

  (8)C

  解析: 对于字符串指针,其保留的是整个串的首地址,即为第一个字符的起始地址,当该指针做算术运算时,就是该指针根据其类型向后移动相应的存储空间。

  (9)D

  解析: C++语言中如果基类的成员是公有的,它被继承后在子类中该成员可能是公有的,也可能不是,主要看继承的权限。

  (10)D

  解析: 本题应该把swap()函数改成这样:swap(int *p,int *q){int t; t=*p;*p=*q;*q=t;}执行程序时,先将a的地址传递给指针变量p,b的地址传递给指针变量q,然后将*p(a的值)的值传递给t,将*q(b的值)传递给*p,将t的值传递给*q,从而将a值和b值互换。

【2016年计算机二级《C++》模拟试题及答案】相关文章:

1.2016年计算机二级C++模拟试题及答案

2.2016计算机二级C++模拟试题及答案

3.2016年计算机二级考试C++试题及答案

4.2016年计算机二级考试C++试题及答案

5.2016年计算机二级冲刺模拟试题及答案

6.2016年计算机二级VFP模拟试题及答案

7.2016年计算机二级VB模拟试题及答案

8.2016年计算机二级office模拟试题及答案