1.以 下 for 循 环 的 执 行 次 数 是()。
for(x=0,y=0;(y=123)&&(x<4);x++);
A.是无限循环
B.循环次数不定
C.4次
D.3次
正确答案: C 你的答案: A (错误)
注意y=123是赋值语句
2.以下程序
main()
{char
str[][10]={"China","Beijing"},*p=str;
printf("%s\n",p+10);
}
程序运行后的输出结果是( )。
A.China
B.Bejing
C.ng
D.ing
正确答案: B 你的答案: A (错误)
str定义为一个二维字符数组,即为str[2][10],p指向这个数组的首指针,那么p+10指向这个数组第二维的首指针,所以输出字符串为Beijng。
3.有以下程序
#include<iostream>
using namespace std;
class Point
{public:
Point(float xx=0, float yy=0)
{X=xx;Y=yy;}
float GetX() {return X;}
private:
float X,Y;};
class Rectangle: private Point
{public:
Rectangle(float x, float y, float w, float h):Point(x,y)
{W=w;H=h;}
float GetX() {return ___________;}
float GetH() {return H;}
float GetW() {return W;}
private:
float W,H;};
int main()
{ Rectangle r(1,2,3,4);
cout<<r.GetX();
return 0;}
请为横线处选择合适的程序使得程序的运行结果是1( )
A.Y
B.Point::GetX()
C.GetX()
D.X
正确答案: B 你的答案: C (错误)
私有成员调用,需要加上该私有成员的的归属类
注意X是Point的私有成员变量
struct Date
{
char a;
int b;
int64_t c;
char d;
};
Date data[2][10];
在64位系统上,如果Data的地址是x,那么data[1][5].c的地址是()
A.X+195
B.X+365
C.X+368
D.X+215
正确答案: C 你的答案: A (错误)
结构体成员地址对齐
a b c d
1+(3)+4+8+1+(7)= 24,()内表示为了满足对齐填充的大小。
&data[1][5].c = x+1024+525+1+(3)+4=368。
5.未初始化的全局变量放在下面哪个段中()
A.text
B.data
C.variable
D.bss
正确答案: D 你的答案: C (错误)
text段在内存中被映射为只读;
variable:优化器在用到这个变量时必须每次都小心地重新读 取这个变量的值;
data包含静态初始化的数据,所以有初值的全局变量和static变量在data区’
bss是英文Block Started by Symbol的简称,通常是指用来存放程序中未初始化的全局变量的一块内存区域,在程序载入时由内核清0。BSS段属于静态内存分配。
6.当不同的类具有相同的间接基类时,()。
A.各派生类无法按继承路线产生自己的基类版本
B.为了建立唯一的间接基类版本,应该声明间接基类为虚基类
C.为了建立唯一的间接基类版本,应该声明派生类虚继承基类
D.一旦声明虚继承,基类的性质就改变了,不能再定义新的派生类
正确答案: C 你的答案: B (错误)
在派生列表中,同一基类只能出现一次,但实际上派生类可以多次继承同一个类。派生类可以通过两个直接基类分别继承自同一间接基类,也可以直接继承某个基类,再通过另一个基类再次继承该类。但是,如果某个类派生过程中出现多次,则派生类中将包含该类的多个子对象,这种默认情况在很多有特殊要求的类中是行不通的。虚继承就是为了应对这一情况而产生,虚继承的目的是令某个类做出声明,承诺愿意共享其基类。这样不论虚基类在继承体系中出现多少次,派生类中都只包含唯一一个共享的虚基类子对象。
为了建立唯一的间接基类版本,就是要保证间接基类为虚基类,所以选项B对,而选项C说的很拗口,不知道具体怎么理解,像下面的情形,类B/类C虚继承类A,而派生类D,不需要虚继承就可以保证只有一份A,所以感觉选项C说的不太好。