1、-1,2,7,28,,126请问28和126中间那个数是什么?为什么?
2、用两个栈实现一个队列的功能?要求给出算法和思路!
3、在c语言库函数中将一个字符转换成整型的函数是atool()吗,这个函数的原型是什么?
4、二维字符数组与一维字符指针数组的差异
5、操作系统的内存分配一般有哪几种方式,各有什么优缺点?
6、操作系统的致命错误有哪些?
7、有结构AA,中间有cc域,比较这两种对cc引用的不同:pp,qq各应如何定义?
pp->cc, qq.cc
答案区:
1、第一题的答案应该是4^3-1=63
规律是: n^3-1(当n为偶数0,2,4) n^3+ 1(当n为奇数1,3,5)
2、设2个栈为A,B, 一开始均为空.
入队: 将新元素push入栈A; 出队: (1)判断栈B是否为空; (2)如果不为空,则将栈A中所有元素依次pop出并push到栈B; (3)将栈B的栈顶元素pop出; 这样实现的队列入队和出队的平摊复杂度都还是O(1)。
3、函数名: atol
功 能: 把字符串转换成长整型数 用 法: long atol(const char *nptr); 程序例: #include <stdlib.h>#include <stdio.h>int main(void) { long l; char *str = "98765432"; l = atol(lstr); printf("string = %s integer = %ld\n", str, l); return(0); }
4、二维字符数组:char a[][] = { "abcde"; "a"; "tpp"; "poipqqewr" };
一维字符指针数组:char *b[] = {"abcde"; "a"; "tpp"; "poipqqewr"};
前者在定义空间是固定分配的,后者如果在定义时未初始化则在使用时要注意。如果按照以上的初始化a与b,占用的系统空间(不考虑优化):前者为40B的数据空间和一个32位的地址数;后者为22B的数据空间和四个32位的地址数。在使用时后者如果赋值就一定要注意长度问题。
5、定长和变长。
变长:内存时比较灵活,但是易产生内存碎片。 定长:灵活性差,但分配效率较高,不会产生内存碎片。
6、致命错误主要包括启动配置错、内部资源耗尽和各种其它类型的不可恢复性错误。
7、pp是指向结构AA的指针,定义为struct AA *pp;
qq是结构AA类型的变量,定义为 struct AA qq;