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