【练习2】

1、以下程序的输出结果是?

#include <stdio.h> main()
{
char a[10]={ '1','2','3','4','5','6','7','8','9',0},*p; int i;
i=8;
p=a+i;
printf("%s\n",p-3);
}

A 6
B 6789
C ‘6’
D 789

答:B

p指向9的位置以%s打印,会遇到\0结束

2、以下能对二维数组a进行正确初始化的语句是()

A int ta[2][]={{0,1,2},{3,4,5}};
B int ta[][3]={{0,1,2},{3,4,5}};
C int ta[2][4]={{0,1,2},{3,4},{5}};
D int ta[][3]={{0,2},{},{3,4,5}};

答:B

二维数组必须指定的数量,行的数量可以不指定,二维数组的初始化方式有以下几种:
⑴ 分行进行初始化 int a[2][3]={{1,2,3},{4,5,6}};
⑵ 不分行的初始化 int a[2][3]={ 1,2,3,4,5,6}; 把{ }中的数据依次赋给a数组各元素(按行赋值)。
⑶ 为部分数组元素初始化 static int a[2][3]={{1,2},{4}};其它数组元素的初值为0。
⑷可以省略第一维的定义,但不能省略第二维的定义。 int a[ ][3]={1,2,3,4,5,6}; a数组的第一维的定义被省略,初始化数据共6个,第二维的长度为3,即每行3个数,所以a数组的第一维是2。

3、下列main()函数执行后的结果为()

int func()
{
int i,j,k=0;
for(i=0,j=-1;j=0;i++,j++)
{
k++;
}
return k;
} i
nt main()
{
cout<<(func());
}

A -1
B 0
C 1
D 2
答:B

逗号表达式,判断j=0为假,所以不执行循环体

4、当一个类对象的生命周期结束后,关于调用析构函数的描述正确的是:()

A如果派生类没有定义析构函数,则只调用基类的析构函数
B 如果基类没有定义析构函数,则只调用派生类的析构函数
C先调用派生类的析构函数,后调用基类的析构函数
D 先调用基类的析构函数,后调用派生类的析构函数

答:C
构造先父后子,析构先子后父
5、下面3段程序代码的效果一样吗?

      int b;
(1)const int *a = &b;
(2)int const *a = &b;
(3)int *const a = &b;

A (2)=(3)
B (1)=(3)
C (1)=(2)
D 都不一样
E 都一样

答:C

const在**的左边,则指针指向的变量的值不可直接通过指针改变(可以通过其他途径改变);在*的右边,则指针的指向不可变。简记为"左定值,右定向"。

6、下面关于一个类的静态成员描述中,不正确的是()

A 静态成员变量可被该类的所有方法访问
B 该类的静态方法只能访问该类的静态成员函数
C 该类的静态数据成员变量的值不可修改
D 子类可以访问父类的静态成员
E 静态成员无多态特性

答:C

多态的概念:通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。
比如Student继承了Person。
Person对象买票全价,Student对象买票半价。
那么在继承中要构成多态还有两个条件:

  1. 必须通过基类的指针或者引用调用虚函数
  2. 被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写

7、在具有 2n 个结点的完全二叉树中,叶子结点个数为( )

A n
B n+1
C n-1
D n/2

答:A

完全二叉树是指除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干结点。根据完全二叉树性质,如果共 2n个结点,从根结点开始按层序用自然数 1 , 2 ,…, 2n 给结点编号,则编号为 n 的结点左子结点编号为 2n ,因此叶子结点编号为n+1,n+2, … ,2n 。故叶子结点个数为 n ,本题答案为 A 选项。

8、 有权值分别为11,8,6,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为()

A 24
B 71
C 48
D 53

答:B
在这里插入图片描述

(2+5)*3+(6+8+11)*2=71

9、下述二叉树中,哪一种满足性质:从任一结点出发到根的路径上所经过的结点序列按其关键字有序()

A 二叉排序树
B 哈夫曼树
C AVL树
D 堆

答:D

哈夫曼树非叶结点上并没有关键字值,显然不正确。二叉排序树就是AVL树,左结点根节点值大,右结点比根节点值小,例如:3,2,5,显然不符合题意

10、将整数数组(7-6-3-5-4-1-2)按照堆排序的方式原地进行升序排列,请问在第一轮排序结束之后,数组的
顺序是_____。

A 2-6-3-5-4-1-7
B 6-2-3-5-4-1-7
C 6-5-3-2-4-1-7
D 1-5-3-2-4-6-7
E 5-4-3-2-1-6-7
F 5-1-3-2-4-6-7

答:C

在这里插入图片描述11、要连通具有 n 个顶点的有向图,最少需要()条边

A n+l
B n-l
C 2n
D n

答:D

1、在无向图中, 若从顶点v1到顶点v2有路径, 则称顶点v1与v2是连通的。如果图中任意一对顶点都是连通的,则称此图是连通图。连通和弱连通的概念只在有向图中存在。
2、即有向图G=(V,E) 中,若对于V中任意两个不同的顶点x和y,都存在从x到y以及从y到x的路径,则称G是强连通图
3、将有向图的所有的有向边替换为无向边,所得到的图称为原图的基图。如果一个有向图的基图是连通图,则有向图是弱连通图。

题目来源:牛客网

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值