第 1 部分:選擇題 第 2 部分:程序填空題 第 3 部分:程序修改題 第 4 部分:程序設(shè)計題
一、選擇題
1有以下程序:
程序運行后的輸出結(jié)果是( )。 A.IB.JC.KD.H 參考答案:B 參考解析:(”%e\n”,’A’+x),x=oxg(16)轉(zhuǎn)為十進(jìn)制x=9,因此prinff(”%e\n”,7A’+9),打印格式要求是%c,因此需要從字符A,按字母順序向后偏移9個位置,可得結(jié)果為J。故答案為B選項。 2以下敘述中正確的是 A.兩個字符串可以用關(guān)系運算符進(jìn)行大小比較 B.函數(shù)調(diào)用strlen(s);會返回字符串S實際占用內(nèi)存的大小(以字節(jié)為單位) C.C語言本身沒有提供對字符串進(jìn)行整體操作的運算符 D.當(dāng)拼接兩個字符串時,結(jié)果字符串占用的內(nèi)存空間是兩個原串占用空間的和 參考答案:C 參考解析:本題考查字符串處理函數(shù)strien、strcat、strcmp。B選項中strlen返回的是字符串s實際占用內(nèi)存大小加上結(jié)尾符,A選項中不能用關(guān)系運算符進(jìn)行大小比較,可以使用strcmp。D選項當(dāng)使用連接函數(shù)strcat時,內(nèi)存空間會減少一個字符位置。 3. 在C語言中,以 D 作為字符串結(jié)束標(biāo)志 A、’\n’ B、’ ’ C、 ’0’ D、’\0’ 4.下列數(shù)據(jù)中屬于“字符串常量”的是( A )。 A、“a” B、{ABC} C、‘a(chǎn)bc\0’ D、‘a(chǎn)’ 若干個字符構(gòu)成字符串 在C語言中,用單引號標(biāo)識字符;用雙引號標(biāo)識字符串 選項B,C,分別用{}和’’標(biāo)識字符串 選項D,標(biāo)識字符。 5.已知char x[]='hello', y[]={'h','e','a','b','e'};, 則關(guān)于兩個數(shù)組長度的正確描述是 B . A、相同 B、x大于y C、x小于y D、以上答案都不對 C語言中,字符串后面需要一個結(jié)束標(biāo)志位'\0',通常系統(tǒng)會自動添加。 對一維數(shù)組初始化時可采用字符串的形式(例如本題數(shù)組x),也可采用字符集合的形式(例如本題數(shù)組y)。在以字符串形式初始化時,數(shù)組x不盡要存儲字符串中的字符,還要存儲字符串后的結(jié)束標(biāo)志位,因此數(shù)組x的長度為6;在以字符集合形式初始化時,數(shù)組y,僅存儲集合中的元素,因此數(shù)組y長度為5 6若有定義語句:char a='\82';則變量a( ) A.說明不合法B.包含1個字符C.包含2個字符D.包含3個字符 參考答案:B 參考解析:char a='\82',定義字符量a,char型變量值為1個字節(jié)長度,并從右側(cè)開始運算,所以a的值應(yīng)為'2'。因此B選項正確。 7有以下程序
程序運行后的輸出結(jié)果是 A.to Beijing!B.you to Beijing!C.Welcome you to Beijing!D.Beijing! 參考答案:A 參考解析:while函數(shù)判斷P指針指向地址的內(nèi)容是否和a指針指向地址的內(nèi)容相等,如果不是,則移動指針p+1,當(dāng)p指向*b字符串中的′y′時,和*a首地址元素相等,退出while語句后,P再向右移動a字符串長度+1個單位地址,此時P指向′t′,輸出′t′及剩余的字符串,答案為A選項。 8若fp已定義為指向某文件的指針,且沒有讀到該文件的末尾,則C語言函數(shù)feof(fp)的函數(shù)返回值是 A.EOFB.非0C.-1D.0 參考答案:D 參考解析:本題考查文件的定位,feof函數(shù)的用法是從輸入流讀取數(shù)據(jù),如果到達(dá)文件末尾(遇文件結(jié)束符),eof函數(shù)值為非零值,否則為0,所以選項D正確。 8以下敘述中正確的是 A.只要適當(dāng)?shù)匦薷拇a,就可以將do-while與while相互轉(zhuǎn)換 B.對于“for(表達(dá)式1;表達(dá)式2;表達(dá)式3)循環(huán)體”首先要計算表達(dá)式2的值,以便決定是否開始循環(huán) C.對于“for(表達(dá)式1;表達(dá)式2;表達(dá)式3)循環(huán)體”,只在個別情況下才能轉(zhuǎn)換成while語句 D.如果根據(jù)算法需要使用無限循環(huán)(即通常所稱的“死循環(huán)”),則只能使用while語句 參考答案:A 參考解析:B選項中,for語句中需要先求解先求解表達(dá)式1;C選項中,for語句使用最為靈活,它完全可以取代while語句;D選項中,對于死循環(huán),也可以使用for語句。因此A選項正確。 9設(shè)有表示學(xué)生選課的三張表,學(xué)生s(學(xué)號,姓名,性別,年齡,身份證號),課程c(課號,課名),選課SC(學(xué)號,課號,成績),則表sc的關(guān)鍵字(鍵或碼)為( )。 A.課號,成績B.學(xué)號,成績C.學(xué)號,課號D.學(xué)號,姓名,成績 參考答案:C 參考解析:學(xué)號是學(xué)生表s的主鍵,課號是課程表c的主鍵,所以選課表SC的關(guān)鍵字就應(yīng)該是與前兩個表能夠直接聯(lián)系且能唯一定義的學(xué)號和課號,所以選擇C。 10下列敘述中正確的是( )。 A.軟件是程序、數(shù)據(jù)和文檔 B.軟件是程序和數(shù)據(jù) C.軟件是算法和數(shù)據(jù)結(jié)構(gòu) D.軟件是算法和程序 參考答案:A 參考解析:計算機(jī)軟件由兩部分組成:一是機(jī)器可執(zhí)行的程序和數(shù)據(jù);二是機(jī)器不可執(zhí)行的,與軟件開發(fā)、運行、維護(hù)、使用等有關(guān)的文檔。故選A選項。 11在以下給出的表達(dá)式中,與while(E)中的(E)不等價的表達(dá)式是( )。
參考答案:B 參考解析:while語句中條件表達(dá)式E的值不為0即為真,認(rèn)為滿足條件,所以與B選項中表達(dá)式的含義正好相反,選擇B選項。 12下面關(guān)于位運算符的敘述,正確的是 A.||表示“按位或”的運算 B.#表示“按位異或”的運算 C.&表示“接位與”的運算 D.~表示“按位異或”的運算 參考答案:C 參考解析:本題考查位運算。^為按位異或,|為按位或,~表示按位取反。所以C選項正確。 13有以下程序:
程序運行后的輸出結(jié)果是( )。
參考答案:D 參考解析:在函數(shù)fun(char}a,char}b)中,wKle(·a==’·’)a++的功能是:如果}a的內(nèi)容為‘}’,則a指針向后移動,直到遇到非‘+’字符為止,退出循環(huán)進(jìn)入下一個while循環(huán),在wlIile({b=}a){b++;a++;}中,把字符數(shù) 組a中的字符逐個賦給字符數(shù)組b。所以在主函數(shù)中,執(zhí)行fun(s,t)語句后,字符數(shù)組t中的內(nèi)容為“at b}}}★”。因此D選項正確。 14以下針對全局變量的敘述錯誤的是 A.用extern說明符可以限制全局變量的作用域 B.全局變量是在函數(shù)外部任意位置上定義的變量 C.全局變量的作用域是從定義位置開始至源文件結(jié)束 D.全局變量的生存期貫穿于整個程序的運行期間 參考答案:A 參考解析:在不同編譯單位內(nèi)用extern說明符來擴(kuò)展全局變量的作用域,extem可以將全局變量作用域擴(kuò)展到其他文件,而不是限制全局變量的作用域,答案為A選項。 15以下選項中錯誤的 A.a!=b與a=a!b等價 B.a^=b與a=a^b等價 C.a|=b與a=a|b等價 D.a&=b與a=a&b等價 參考答案:A 參考解析:A選項中,a!=b表示a不等于b時,運算結(jié)果為1,或者為0;而a=a!b是一種語法錯誤,!是非運算,且是單目運算符,只要求有一個操作數(shù),故兩者不等價,答案為A選項。
二、程序填空題
程序通過定義學(xué)生結(jié)構(gòu)體數(shù)組,存儲若干名學(xué)生的學(xué)號、姓名和三門課的成績。函 數(shù)fun的功能是:將存放學(xué)生數(shù)據(jù)的結(jié)構(gòu)體數(shù)組,按姓名的字典序(從小到大)排序。 請在程序的下畫線處填入正確的內(nèi)容并將下畫線刪除,使程序得出正確的結(jié)果。 注意:部分源程序給出如下。 不得增行或刪行,也不得更改程序的結(jié)構(gòu)! 試題程序:
三、程序修改題
下列給定程序中,函數(shù)fun的功能是:從p所指字符串中找出ASCII碼值最大的字符,將其放在第一個位置上,并將該字符前的原字符向后順序移動。 例如,調(diào)用fun函數(shù)之前給字符串輸入“ABC—DeFGH”,調(diào)用后字符串中的內(nèi)容應(yīng)為“eABCDF—GH”。 請改正程序中的錯誤,使它能得出正確的結(jié)果。 注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)! 試題程序:
四、程序設(shè)計題
學(xué)生的記錄由學(xué)號和成績組成,N名學(xué)生的數(shù)據(jù)已放入主函數(shù)中的結(jié)構(gòu)體數(shù)組s中。請編寫函數(shù)fun,其功能是:把指定分?jǐn)?shù)范圍內(nèi)的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,分?jǐn)?shù)范圍內(nèi)的學(xué)生人數(shù)由函數(shù)值返回。 例如,輸入的分?jǐn)?shù)是60、69,則應(yīng)當(dāng)把分?jǐn)?shù)在60~69的學(xué)生數(shù)據(jù)輸出,包含60分和69分的學(xué)生數(shù)據(jù)。主函數(shù)中把60放在low中,把69放在heigh中。 注意:部分源程序給出如下。 請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。 試題程序:
|