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;