答案如有错误,请大家留言指教。
自己亲身经历的部分笔试题目如下:
1.C2为字符型,执行语句C2=’A’+’6’-‘3’后,C2的值为 (D)
分析:ASCII:65+54-51=68->D
ASCII值 048 对应 字符0
2.c=5,a=2+(c+=c++,c+8,c++);a应该为多少?
答案:a=13;分析:c=5,c+=c++得c=11;c+8,得c=11,c++,得c=12; (c+=c++,c+8,c++)整个逗号表达式的值为11;最后推出a=13;
3. int a=5,b=3,c;
c=!a&b++; 推出:a=5,b=4,c=0;
c=!a&&b++; 推出:a=5,b=3,c=0;
4.const char* ptr; 指向向量字符串的指针(对);指向向量字符的指针(错)。
5.已知f(int)是类A的公有成员函数,P是指向成员函数的f1()的指针,下列正确的使用方法是(B)
A: P=f1 B: P=A::f1 C: A::f1 () D: P=f1()
6.创建派生类对象时,构造函数的执行顺序是:基类、对象成员、派生类本身(构造函数)
7.
union { int i; 4个字节 char x[2]; 2个字节 }a; int main() { a.x[0]=10; a.x[1]=1; printf("%d\n",a.i); }
答案:266(低位低地址,高位高地址,内存占用情况是0x010A)
分析:a的第一个字节是10,第二个字节是1,我们目前的系统大多是小模式序,低地址存高位数据,所以a.i成为0x010A ,得到:16的平方+10*16的0次方=266
8.常成员函数: 数据类型 函数名(参数表) const;
9.x=x+1;x+=1;x++哪一个效率最高?
x=x+1;最低,执行过程:(1).读取右x的地址(2). x+1 (3). 读取左x的地址(4).将右值传给左值
x+=1;其次,执行过程:(1).读取右x的地址 (2). x+1 (3). 将得到的值传给x(因为x的地址已读出)
x++;最高,执行过程:(1) .读取右x的地址 (2). X自增1
10.写string的4个函数
11.求一个数是否为素数
12.vector与map的特点,什么时候用map?
13.写一个单例模式