1、-1,2,7,28,,126請問28和126中間那個數(shù)是什么?為什么?
2、用兩個棧實現(xiàn)一個隊列的功能?要求給出算法和思路!
3、在c語言庫函數(shù)中將一個字符轉換成整型的函數(shù)是atool()嗎,這個函數(shù)的原型是什么?
4、二維字符數(shù)組與一維字符指針數(shù)組的差異
5、操作系統(tǒng)的內(nèi)存分配一般有哪幾種方式,各有什么優(yōu)缺點?
6、操作系統(tǒng)的致命錯誤有哪些?
7、有結構AA,中間有cc域,比較這兩種對cc引用的不同:pp,qq各應如何定義?
pp->cc, qq.cc
答案區(qū):
1、第一題的答案應該是4^3-1=63
規(guī)律是: n^3-1(當n為偶數(shù)0,2,4) n^3+ 1(當n為奇數(shù)1,3,5)
2、設2個棧為A,B, 一開始均為空.
入隊: 將新元素push入棧A; 出隊: (1)判斷棧B是否為空; (2)如果不為空,則將棧A中所有元素依次pop出并push到棧B; (3)將棧B的棧頂元素pop出; 這樣實現(xiàn)的隊列入隊和出隊的平攤復雜度都還是O(1)。
3、函數(shù)名: atol
功 能: 把字符串轉換成長整型數(shù) 用 法: 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、二維字符數(shù)組:char a[][] = { "abcde"; "a"; "tpp"; "poipqqewr" };
一維字符指針數(shù)組:char *b[] = {"abcde"; "a"; "tpp"; "poipqqewr"};
前者在定義空間是固定分配的,后者如果在定義時未初始化則在使用時要注意。如果按照以上的初始化a與b,占用的系統(tǒng)空間(不考慮優(yōu)化):前者為40B的數(shù)據(jù)空間和一個32位的地址數(shù);后者為22B的數(shù)據(jù)空間和四個32位的地址數(shù)。在使用時后者如果賦值就一定要注意長度問題。
5、定長和變長。
變長:內(nèi)存時比較靈活,但是易產(chǎn)生內(nèi)存碎片。 定長:靈活性差,但分配效率較高,不會產(chǎn)生內(nèi)存碎片。
6、致命錯誤主要包括啟動配置錯、內(nèi)部資源耗盡和各種其它類型的不可恢復性錯誤。
7、pp是指向結構AA的指針,定義為struct AA *pp;
qq是結構AA類型的變量,定義為 struct AA qq;