自练题20170727

1.Linux 文件名的长度不能超过 _ 个字符

答案:256个字符,windows上的文件名长度和文件路径有关
具体关系为:从根目录计算,文件路径长度最长为259个bytes。

linux下的文件名长度和路径长度无关,这和windows还是有区别
linux下的文件名长度最长为255 bytes 即小于等于255 bytes
linux下的最长文件路径长度为4096字节

2.(3,2,1,0) 可作为C++合法表达式是否正确

答案:正确,这是一个逗号表达式,其值是最后一个元素0。即int a=(3,2,1,0);赋值后a=0

3.设一个有序的单链表中有n个结点,现要求插入一个新结点后使得单链表仍然保持有序,则该操作的时间复杂度为()

答案为:O(n),首先要找到插入位置,
由于单链表不能像顺序表那样二分查找,因此只能顺序查找,查找的时间复杂度为O(n)
其次是插入,链表的插入操作时间复杂度是O(1)
因此总的操作时间复杂度为O(n)

4.一个关系数据库文件中的各条记录
前后顺序不能任意颠倒,一定要按照输入的顺序排列
前后顺序可以任意颠倒,不影响库中的数据关系
前后顺序可以任意颠倒,但排列顺序不同,统计处理的结果就可能不同
前后顺序不能任意颠倒,一定要按照关键字段值的顺序排列

答:选第二个

5.在32位操作系统中,我们定义如下变量 int (*n)[10]; 请问调用函数sizeof(n),返回值为

答:4,int(*n)[10]; 是数组指针 ,只要是指针就4个字节。
int* n[10]; 是指针数组

6.对静态成员的不正确描述是
静态成员不属于对象,是类的共享成员
静态数据成员要在类外定义和初始化
调用静态成员函数时要通过类或对象激活,所以静态成员函数拥有this指针
非静态成员函数也可以操作静态数据成员

答:选第三个选项,一、静态成员的特点:
(1)static数据成员在类的内部声明,但只能在类的外部定义,在类的外部不能指定static,在类的定义时候进行初始化;
(2)static数据成员只能在类的外部进行初始化(特例:当整型const static数据成员被常量表达式初始化时,就可以在类的内部进行初始化,但还需要在外部进行定义)。
(3) static数据成员可以是该成员所属的类类型,而非static数据成员只能自身类的引用或者指针。
(4)static数据成员可以用作类成员函数的默认实参。
(5)static数据成员的值可以改变。
二、静态成员和非静态成员的区别:
(1) 静态变量使用 static 修饰符进行声明,在类被实例化时创建,通过类和对象都可以进行访问;
(2)不带有 static 修饰符声明的变量称做非静态变量,在对象被实例化时创建,通过对象访问;
(3) 一个类的所有实例的同一静态变量都是同一个值,同一个类的不同实例的同一非静态变量可以是不同的值。
(4) 静态函数的实现里不能使用非静态成员,如非静态变量、非静态函数等。
三、静态成员函数的特点:
(1) static 成员函数没有 this 形参,它可以访问所属类的 static 成员,但不能访问非 static 成员。
(2)static成员函数既可以在类的内部定义,也可以在类的外部定义,在外部定义时,不能重复指定static保留字。
(3)static成员函数不能声明为虚函数,不能实现动态绑定
(4)static 成员函数不能声明为const,因为const是针对this是不是const而言的
(5)构造函数、析构函数不能为静态函数。

7.以下关于STL的描述中,__是错的。
STL容器是线程不安全的
当容量不够时,vector内部内存扩展方式是翻倍
std::sort是稳定排序
std::bitset不是一个STL容器
std::stack默认是用deque实现的
std::string中可以存储多个’\0’字符

答:A:“很多程序员希望STL实现是完全线程安全的“。所以不安全。
B:vector的存在可以使开发者不必关心内存的申请和释放。但是,vector的一个缺点就是它的内存分配是按照2的倍数分配内存的。
C:错误。要知道 std::sort 不是稳定的排序算法,它不保证“相等”元素的相对位置,使用 std::stable_sort 来保证这一点
D:STL的容器可以分为以下几个大类:
一:序列容器, 有vector, list, deque, string.
二 : 关联容器, 有set, multiset, map, mulmap, hash_set, hash_map, hash_multiset, hash_multimap
三: 其他的杂项: stack, queue, valarray, bitset
E:正确。堆栈是一个线性表,插入删除操作都在一端进行,deque是先进先出的,操作原理和stack是一样的

8.函数fun的声明为int fun(int *p[4]),以下哪个变量可以作为fun的合法参数
int a[4][4];
int **a;
int **a[4]
int (*a)[4];

答:可以看出fun函数的形参是一个指针数组,也就是指针指向一个地址,地址中存放的内容也是指针。

A,二维数组,不符合
B,二级指针,也就是指针指向的内容也还是存放指针的,符合
C,二级指针数组,数组的内容是二级指针,不符合
D,数组指针,不符合

9.有函数定义:

void test(int a){} 
void test(float a){} 

则以下调用错误的是:
test(1);
test(‘c’);
test(2+’d’);
test(0.5);

答:选第四个,0.5是double类型 ,应该写成0.5f

10.在32位cpu上选择缺省对齐的情况下,有如下结构体定义:
struct A{
unsigned a : 19;
unsigned b : 11;
unsigned c : 4;
unsigned d : 29;
char index;
};
则sizeof(struct A)的值为()

答:16,首先 :19表示该成员占19bit,所以内存里应该是这样的,每一行代表32bit。 

19+11
4
29
8
总共4行,结果是4*32/8=16
8是八个字节

11.
关于数据结构,下面叙述中正确的是()
直接选择排序是一种稳定的排序方法
哈弗曼树带权路径长度最短的树,路径上权值较大的结点离根较近
拓扑排序是指结点值得有序排序
当从一个最小堆中删除一个元素时,需要把堆尾元素填补到堆顶位置,然后再按条件把它逐层向下调整到合适位置

答案:选BD
A:直接选择排序中存在着不相邻元素之间的互换,因此,直接选择排序是一种不稳定的排序方法。 A错
B:哈夫曼树定义 给定n个权值作为n个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。B对
C:我查找资料说有序指的是 不是结点的值有序,是结点的逻辑先后关系保持有序 C错
D:属于堆排序过程 D对

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值