做题笔记
C语言笔试题总结
1. 三个私有IP地址范围:10.0.0.0-10.255.255.255,172.16.0.0-172.31.255.255,和192.168.0.0-192.168.255.255。末尾全0的表示一个网段,不用于单独的主机IP使用,x.x.0.1一般是路由器的IP地址(大多路由器产品IP地址为192.168.0.1或192.168.1.1)。末尾全1的(255)是广播地址,也不用于单独主机IP。
2. 物理地址(即实际存储地址)=基址+偏移。逻辑地址=偏移
3. UML设计关系:
依赖:用到了别人的方法或变量;关联:对称的,好比你是我的朋友,我也是你的朋友;聚合:非对称的,员工与公司就是聚合关系,还有一个重要特点就是生命周期可以不同,员工离开了公司还是可以活的;组合:生命周期一致,好比人与心脏,一个没了另一个也没了。强度:依赖<关联<聚合<组合。
4. 注意字符串常量后面有隐含的’\0’,指针的sizeof永远是4字节(32位系统)或8字节(64位系统),而不管指针是什么类型的,指针的类型只是决定了它指向的数据的类型。
5. 数据库是的记录可以重复,主键要求既是唯一的,也是非空的,数据库为每个主键默认建立索引,但用户可以通过CREATE INDEX另建其他索引,所以索引个数不唯一,非主键亦可有索引.
6. 循环队列的front和rear必有一个不指向实质元素,不然无法判断队列满或空。
7. 序列9.2.5.7的哈夫曼编码,最上面根结点权值为23,它的某个孩子权值为14,另一个权值为9(实质结点),权值为14的又分出两个孩子,一个权值为7,另一个权值也为7,有一个是实质结点,另一个分出两个孩子,一个权值为5,另一个权值为2,这两个都是实质结点。所谓实质结点就是题目中的叶结点,非实质结点起辅助作用。带权路径长度即为长度的乘权求和。9的长度(距根结点的边的个数)为1,2的长度为3,5的长度为3,7的长度为2,这样结果为9*1+2*3+5*3+7*2=44。
8. 请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句.
#define max(a,b) ((a-b)&(1<<31))?b:a (判断相减后的符号位)
9. a[3][4]哪个能表示 a[1][1]: *(&a[0][0]+5)*(*(a+1)+1) *(&a[1]+1) *(&a[0][0]+4)
答案: *(&a[0][0]+5) *(&a[1]+1)
分析: (&a[0][0]+5)相当于数组地址后移5个单位到达a[1][1],*(a+1)相当得到第二个数组,也就是a[1]的地址,*a[1]+1,相当于a[1][1], 因此*(*(a+1)+1)为a[1][1],&a[1]是数组a[1]的指针,那么&a[1]+1会移动到a[2]的地址,*(&a[1]+1)会得到a[2]数组的首地址,所以它是错误的,*(&a[0][0]+4)与 *(&a[0][0]+5)对比也是错误的.
10. 有个表tableQQ,有整型的ID项和字符类型的Nickname项,这两个项都不允许为空
(1)写出建立该表的SQL语句
(2)找出Nickname为QQ的用户,按ID降序排列的SQL语句
(3)写出删除ID为1234用户记录的SQL语句
(4)写出添加ID为5555,Nickname为'1234'的SQL语句
答案:
(1) CREATE TABLE tableQQ
(
ID NUMBER(12) NOT NULL,
Nickname Varchar2(30) NOT NULL
);
(2) select * from tableQQ where Nickname = 'QQ' order by ID desc;
(3) delete from tableQQ where ID='1234';
(4) insertinto tableQQ values(5555,'1234');
//删除表
(5)drop table tableQQ;
11.有关系 s(sno,sname) c(cno,cname) sc(sno,cno,grade)
1 问上课程 "db"的学生
2 成绩最高的学生号
3 每科大于90分的人数
答案:
(1)select a.sno, a.cno,b.cno, b.cname from sc a, c b where a.cno = b.cno and b.cname = 'db';
(2)select sno, max(grade)fromsc group by sno;
(3)select cno, count(sno)from sc where grade > 90 group by cno;
12.Internet采用哪种网络协议?该协议的主要层次结构?
答案:TCP/IP协议。应用层、传输层、网络层、数据链路层和物理层。
13. Internet物理地址和IP地址转换采用什么协议?
答案:地址解析协议ARP address resolution protocol
14. IP地址的编码分为哪俩部分?
答案:网络号和主机号。不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。
15、如下关于编译链接的说法错误的是(B)
A、编译优化会使得编译速度变慢 B、预编译头文件可以优化程序的性能
C、静态链接会使得可执行文件偏大 D、动态链接库会使进程启动速度偏慢
分析:预编译头文件仅仅能提高编译的效率,但其本身不涉及代码的优化级别,更不会修改代码,故同样的内容不可能产生程序性能的优化.
16、如下关于链接的说法错误的是(C)
A、一个静态库中不能包含两个同名全局函数的定义
B、一个动态库中不能包含两个同名全局函数的定义
C、如果两个静态库都包含一个同名全局函数,他们不能同时被链接
D、如果两个动态库都包含一个同名全局函数,他们不能同时被链接
分析:对于AB,编译器保证没有同名函数,对于C,静态函数在编译完成之后会在不同的类库,同名函数上加上一些参数或者一些特别的信息,从而在调用时区别.对于D,全局函数是定义在类外的,故它们不能同时被调用.
17.常见的排序算法中,属于稳定排序的有:冒泡排序,插入排序和归并排序,不稳定排序有:快速排序,堆排序,选择排序和希尔排序.
18、在程序设计中,要对两个16K×16K的多精度浮点数二维数组进行矩阵求和时,行优先读取和列优先读取的区别是(B)
A、没区别 B、行优先快
C、列优先快 D、2种读取方式速度为随机值,无法判断
分析:若在内存中,则数据可以”随机存取”,但内存数据被读取或写入时,所需要的时间与这段信息所在的位置无关.但是在读取和写入磁盘时,其所需要的时间与位置就会有关系.因为在BASIC,PASCAL和C/C++语言中,数组的存放是按照行优先来存放的,按行号第一行第二行…以此类推.本体关键是考察内存抖动的问题,如果按列访问则需要跳过一大串内存地址,这样可能需求的内存地址不在当前页中则需要进行页置换,这样便需要硬盘IO,减低速度.
19、TCP的关闭过程,说易做图确的是(D)
A、TIME_WAIT状态称为MSL(Maximum Segment Lifetime)等待状态
B、对一个established状态的TCP连接,在调用shutdown函数之前调用close接口,可以让主动调用的一方进入半关闭状态
C、主动发送FIN消息的连接端,收到对方回应ack之前不能发只能收,在收到对方回复ack之后不能发也不能收,进入CLOSING状态
D、在已经成功建立连接的TCP连接上,如果一端收到RST消息可以让TCP的连接端绕过半关闭状态并允许丢失数据。//TIME_WAIT 是TCP链接断开时必定出现的状态.
分析,对于A,TCP下每条连接都有一个属性叫做maxsegment lifetime,就是说该连接关闭后,要经过2*max segment lifetime的时间,才算是真正的被关闭,才能被重新建立,以防止这条链路上还有东西在传输,停留在TIME_WAIT状态的持续时间是最长分节生命周期(MSL)的两倍,有时候称之为2MSL,但是TIME_WAIT并不是MSL.对于B,在调用closesocket之前先调用shutdown函数关闭发送数据通道,从而进入半关闭状态.对于C,在收到ack之后可以收不能发.
补充:综合编程 , 其他综合 ,