就业数据资源平台
当前位置:首页 > C++语言程序设计
2013年计算机等级考试二级C++笔试模拟题及答案4

单项选择题


(16)与 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;


(17)若二维数组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外语学习


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


#include


void main()


{ char *s="abcde";


s+=2;


cout << &s;}


A)cde


B)字符′c′


C)字符′c′的地址


D)无确定的输出结果


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


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


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


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


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


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


#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)以上说法都不对


(16)A


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


(17)A


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


(18)C


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


(19)D


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


(20)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值互换。

就业数据资源平台