c++每日十题10.18

1.将两个字符串连接起来组成一个字符串时,选用( )函数。
正确答案: C 你的答案: C (正确)
A strlen()
B strcap()
C strcat()
D strcmp()

strlen 测字符串长度 strcap复制 strcat连接字符串 strcmp字符串比较

2.某32位系统下, C++程序void *p = malloc( 100 ); sizeof § = ?
正确答案: B 你的答案: B (正确)
A 1
B 4
C 100
D 400

32位系统下指针占4字节,64位下占8字节。

3."My salary was increased by 15%!"
下列哪个选项可以准确的显示出上述语句?
正确答案: D 你的答案: A (错误)
A printf("“My salary was increased by 15/%!”\n");
B printf(“My salary was increased by 15%!\n”);
C printf(“My salary was increased by 15’%’!\n”);
D printf("“My salary was increased by 15%%!”\n");

%控制格式输出,%%输出%,“输出”,!不需要转义。

4.下面有关析构函数和虚函数的说法,错误的是?
正确答案: B 你的答案: B (正确)
A 析构函数的作用是当对象生命期结束时释放对象所占用的资源
B 析构函数是特殊的类成员函数,它的名字和类名相同,没有返回值,没有参数不能随意调用,但是可以重载
C使用虚函数,我们可以灵活的进行动态绑定
D 如果一个类可能做为基类使用的话,将其析构函数虚拟化, 这样当其子类的对象退出时,也会一并调用子类的析构函数释放内存

解析:
A. c++中不释放空间会造成内存泄漏,析构函数就是用来执行这一任务的
B. 析构函数是不能重载的,因为析构函数没有返回值,没有参数。析构函数的类名比构造函数的类名多了一个~
C. D. 因为子类的析构需求不一致,用统一的父类析构函数可能造成析构不完全,因此一般设置父类析构函数为虚函数,然后在子类中具体实现。在父类指针下,根据对象所属子类动态地加载子类析构函数

构造函数与析构函数详解:https://blog.csdn.net/zm1_1zm/article/details/77221919

5.有关类的说法不正确的是( )
正确答案: D 你的答案: D (正确)
A 类是一种用户自定义的数据类型
B 类中的成员函数可以存取类中的私有数据
C 在类中,如果不作特别说明,所有的数据均为私有类型
D 在类中,如果不作特别说明,所有的成员函数均为公有类型

class和struct有争议。

6.请阅读以下程序:


main() 
{ 
int a=5,b=0,c=0; 
if (a=b+c) printf ("***\n"); 
else  printf("$$$\n"); 
} 

以上程序()。
正确答案: D 你的答案: C (错误)
A 有语法错不能通过编译
B 可以通过编译但不能通过连接
C 输出***
D 输出$$$

解析:if(a=b+c) 把b+c赋值a, a为0,假,执行else。

7.若二维数组a有m列,则在a[i][j]前的元素个数为()。

正确答案: B 你的答案: B (正确)
A jm+i
B i
m+j
C im+j-1
D i
m+j+1

8.已知int a[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }, *p = a;,不能表示数组a中元素的式子是( )。

正确答案: C 你的答案: C (正确)
A *a
B *p
C a
D a[ p-a ]

解析:p指向a数组首地址,AB都是a[0],C是a数组的首地址,D中p与a相等,p-a=0,即a[0]。

对于下面的说法,正确的是____。
正确答案: F 你的答案: A (错误)
A对于 struct X { short s; int i; char c; },sizeof(X) 的值等于 sizeof(s) + sizeof(i) + sizeof©
B对于某个double变量 a,可以使用 a == 0.0 来判断其是否为零
C初始化方式 char a[14] = “Hello, world!”; 和初始化方式 char a[14]; a = “Hello, world!”; 的效果相同
D在gcc编译器下,对于 int i = 3; printf("%d %d", ++i, ++i),运行输出为:4 5
E选项A、B、C、D中至少有两个是正确的
F以上选项均不正确

解析
A int4字节,short2,char4,size为最大值4*3=12。
B 由于双精度丢失,所以只能够采用比较两个差绝对值是否小于一个很小的数字来确定。if( abs(f) <= 1e-15 )
C 赋值方法不对
D 5 5 从右往左压栈

10.在小端序的机器中,如果


union X{
    int x;
    char y[4];
};

如果:
X a;
a.x=0x11223344;//16 进制
则:______
正确答案: D 你的答案: 空 (错误)
A a.y[0]=0x11
B a.y[1]=0x11
C a.y[2]=0x11
D a.y[3]=0x11
E a.y[0]=0x22
F a.y[3]=0x22

猜你喜欢

转载自blog.csdn.net/qq_41002048/article/details/83148117