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;