二級C語言2套選擇題的副本_第1頁
二級C語言2套選擇題的副本_第2頁
二級C語言2套選擇題的副本_第3頁
二級C語言2套選擇題的副本_第4頁
二級C語言2套選擇題的副本_第5頁
免費預覽已結束,剩余15頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、(1)算法空間復雜度的度量方法是A)算法程序的長度B)算法所處理的數據量C)執行算法所需要的工作單元D)執行算法所需要的存儲空間答案:D【解析】算法的空間復雜度是指執行這個算法所需要的內存空間,。算法執行期間所需的存儲空間包括3個部分:輸入數據所占的存儲空間;程序本身所占的存儲空間;算法執行過程中所需要的額外空間。D選項正確。(2)下列敘述中正確的是A)循環隊列屬于隊列的鏈式存儲結構B)雙向鏈表是二叉樹的鏈式存儲結構C)非線性結構只能采用鏈式存儲結構D)有的非線性結構也可以采用順序存儲結構答案:D【解析】循環隊列是隊列的一種順序存儲結構,A 選項錯誤。雙向鏈表為順序存儲結構,二叉樹通常采用鏈式

2、存儲結構,B 選項錯誤。完全二叉樹是屬于非線性結構,但其最佳存儲方式是順序存儲方式,C 選項錯誤,D 選項正確。(3)下列敘述中正確的是()。A) 順序存儲結構的存儲一定是連續的, 鏈式存儲結構的存儲空間不一定是連續的B)順序存儲結構只針對線性結構,鏈式存儲結構只針對非線性結構C)順序存儲結構能存儲有序表,鏈式存儲結構不能存儲有序表D)鏈式存儲結構比順序存儲結構節省存儲空間答案:A【解析】 鏈式存儲結構既可以針對線性結構也可以針對非線性結構, 所以 B)與 C)錯誤。鏈式存儲結構中每個結點都由數據域與指針域兩部分組成, 增加了存儲空間,所以 D)錯誤。(4)下列關于棧的敘述中,正確的是A)棧底

3、元素一定是最后入棧的元素B)棧頂元素一定是最先入棧的元素C)棧操作遵循先進后出的原則D)以上說法均錯誤答案:C【解析】棧頂元素總是后被插入的元素,從而也是最先被刪除的元素;棧底元素總是最先被插入的元素,從而也是最后才能被刪除的元素。棧的修改是按后進先出的原則進行的。因此,棧稱為先進后出表,或“后進先出表,所以選擇 G(5)在軟件設計中不使用的工具是()。A)系統結構圖B)PAD圖C)數據流圖(DFD圖)D)程序流程圖答案:C【解析】系統結構圖是對軟件系統結構的總體設計的圖形顯示。在需求分析階段,已經從系統開發的角度出發,把系統按功能逐次分割成層次結構,是在概要設計階段用到的。PAt是在詳細設計

4、階段用到的。程序流程圖是對程序流程的圖形表示,在詳細設計過程中用到。數據流圖是結構化分析方法中使用的工具,它以圖形的方式描繪數據在系統中流動和處理的過程,由于它只反映系統必須完成的邏輯功能,所以它是一種功能模型,是在可行性研究階段用到的而非軟件設計時用到,所以選擇 C)。(6)下面對類-對象主要特征描述正確的是()。A)對象唯一性 B)對象無關性 C)類的單一性 D)類的依賴性答案:A【解析】對象的基本特點是:標識唯一性、分類性、多態性、封裝性、模塊獨立性好。類是具有共同屬性、共同方法的對象的集合,是關于對象的抽象描述,反映屬于該對象類型的所有對象的性質。對象具有的性質,類也具有。故 A 選項

5、正確(7)在軟件開發中,需求分析階段產生的主要文檔是()。A)可行性分析報告B)軟件需求規格說明書C)概要設計說明書D)集成測試計劃答案:B【解析】A)錯誤,可行性分析階段產生可行性分析報告。體設計階段產生的文檔。D)錯誤,集成測試計劃是在概要設計階段編寫的文檔。B)正確,需求規格說明書是后續工作如設計、編碼等需要的重要參考文檔。(8)下面對軟件測試描述錯誤的是()A)嚴格執行測試計劃,排除測試的隨意性B)隨機地選取測試數據C)測試根本目的是盡可能多地發現并排除軟件中隱藏的錯誤D)軟件測試是保證軟件質量的重要手段答案:B【解析】在測試之前制定測試計劃,并嚴格執行,測試用例的選擇不可隨意,應選擇

6、有代表性的,盡可能發現迄今為止尚未發現的錯誤,A 選項敘述正確,E 選項敘述錯誤。測試根本目的是盡可能多地發現并排除軟件中隱藏的錯誤,C 選項敘述正確。軟件測試是保證軟件質量、可靠性的關鍵步驟,D 選項敘述正確。故正確答案為斑項。(9)在數據庫系統中,用于對客觀世界中復雜事物的結構及它們之間的聯系進行描述的是A)概念數據模型B)邏輯數據模型C)物理數據模型D)關系數據模型答案:A【解析】數據模型按照不同的應用層次分為以下 3 種類型:概念數據模型,C)錯誤,概要設計說明書是總著重于對客觀世界復雜事物的描述及對它們內在聯系的刻畫; 邏輯數據模型,是面向數據庫系統的模型, 著重于在數據庫系統一級的

7、實現; 物理數據模型,是面向計算機物理實現的模型,此模型給出了數據模型在計算機上物理結構的表示。A 選項正確。(10)公司中有多個部門和多名職員,每個職員只能屬于一個部門,一個部門可以有多名職員。則實體部門和職員間的聯系是A)1:1聯系B)m:1聯系C)1:mK系D)m:n聯系答案:C【解析】兩個實體集間的聯系實際上是實體集間的函數關系,主要有一對一聯系(1:1)、一對多聯系(1:m)、多對一聯系(m:1)、多對多聯系(m:n)。對于每一個實體部門,都有多名職員,則其對應的聯系為一對多聯系(1:m),答案選 C。(11)關于程序中的注釋,以下敘述正確的是()OA)注釋的內容必須放在一對/*和*

8、/之間B)注釋必須置于所說明的語句前或語句后C)注釋中間可以嵌套另一個注釋D)注釋內容錯誤會導致編譯出錯答案:A【解析】程序中,注釋可以出現在程序的任何位置,B 選項錯誤;注釋中間不能嵌套另一個注釋,C 選項錯誤;注釋內容不影響程序編譯,D 選項錯誤,答案為 A項。(12)有以下程序#includemain()intk=-17;printf(%d,%o,%xn”,k,1-k,1-k);程序的運行結果是()oA)-17,22,12B)-17,12,22C)-17,-22,-12D)17,22,12答案:A【解析】整型常量有 3 種表示方法,分別是十進制數表示法、八進制數表示法和十六進制數表示法。

9、十進制整常量沒有前綴,輸出格式控制符為d八進制整常量以 0 作為前綴,輸出格式控制符為O 十六進制整常量以 0X 或 0 x 作為前綴,輸出格式控制符為%1-k=18,整型常量 18 用八進制表示為 22,十六進制表示為 12,A 選項正確。(13)以下定義語句中正確的是()。A)inta=b=0;B)charA=65+1,b=b;C)floata=1,*b=&a,*c=&b;D)doublea=0.0;b=1.1;答案:B【解析】 A 選項語句中 b 變量還沒有定義不能直接用于給 a 變量賦值?佻項語句中*b?*c 表示的是一個實型變量的地址,不能再將&b 武值給指針

10、型變量c?D4 項語句中 a=0.0 后面應該為逗號,不能是分號?(14)有以下程序:#includemain()ints,t,A=10;doubleB=6;s=sizeof(A);t=sizeof(B);printf(%d,%dn,s,t);)在VC6.0平臺上編譯運行,程序運行后的輸出結果是()。A)10,6B)4,4C)2,4D)4,8答案:D【解析】C 語言中利用 sizeof()函數判斷數據類型長度,在 VC6.0 平臺中,整型 int 占有 4 個字節,double 型數據占有 8 個字節。(15)表達式:(int)(double)9/2)-9%2的值是()。A)0B)3C)4D)

11、5答案:B【解析】先將整型數據 9 強制轉換成 double 型,然后除以 2 得到的結果與double 型保持一致,即為 4.5,然后將 4.5 強制轉換成整型數據 4,然后計算9%的值為 1,最后計算 4-1 的值為 3,所以選擇 E 選項?(16)設有定義:intx=11,y=12,z=0;,以下表達式值不等于12的是()。A)(z,x,y)B)(z=x,y)C)z=(x,y)D)z=(x=y)答案:D【解析】逗號表達式的計算過程是從左到右逐個求每個表達式的值,取最右邊一個表達式的值作為該逗號表達式的值。賦值運算結合性為由右向左結合,賦值運算符左值為變量,右值為變量或常量,且左右兩邊數據

12、類型相同才能實現賦值。成功實現賦值后以左值為返回值。 邏輯表達式成立則返回 1,不成立返回0oA 選項邏輯表達式 x=y 不成立,則 z=0,表達式值為0oB 選項中逗號表達式 x,y 取 y 值為表達式值, 然后賦值給 z=12,表達式值為 12。C 選項逗號表達式(x,y)取 y 值為表達式值,然后賦值給 z=12,表達式值為12。D 選項逗號表達式(z,x,y)取 y 值為表達式值 12。選擇 D 選項。(17)若有定義:inta=0,b=0,c=0,d=0;,有麗言表達式(a+&b+)?c+:d+,以下關于其執行順序的敘述正確是()oA)先執行a+,表達式a+的值為0,由此即可

13、確定(a+&b+)的值為0,因此執行d+B)先執行a+,表達式a+的值為0;再執行b+,表達式b+的值為0,由此可確定(a+&b+)值為0,因此執行d+C)先執行a+,表確定(a+&b+)值為1,因此執行C+達式a+的值為1;再執行b+,表達式b+的值為1,由此可D)先執行b+,表達式b+的值為1;再執行a+,表達式a+的值為1,由此可確定(a+&b+)值為1,因此執行C+答案:A【解析】表達式 1?表達式 2:表達式 3,若表達式 1 為真,則執行表達式 2,否則執行表達式 3。邏輯與運算符遵循短路求值”策略,即只有在僅靠左操作數的值無法確定該邏輯表達式的結果

14、時,才會求解右操作數,表達式(a+&b+)中,左操作數 a+的值為 0,已經可以確定整個邏輯表達式的結果為 0,因此右操作數 b+不再求解,直接執行表達式3,即 d+,答案為 A 選項(18)有以下程序:#includemain()unsignedchara=2,b=4,c=5,d;d=a|b;d&=c;printf(%dn,d);程序運行后的輸出結果是()。A)3B)4C)5D)6答案:B【解析】&按位與,如果兩個相應的二進制位都為 1,則該位的結果值為 1,否則為 0。|按位或,兩個相應的二進制位中只要有一個為 1,該位的結果值為 1。2 的二進制為00000010

15、,4 的二進制為 00000100,所以做或運算結果為 00000110,該數與 5即 00000101 做與操作結果為 00000100,即 4(19)有以下程序#includemain()charc;c=getchar();doputchar(c+);while(c=getchar()!=#);程序運行時從第一列開始輸入:abcdefg#,則輸出結果是()。A)bcdefgh$B)bcdefghC)abcdefg#D)abcdefg答案:D【解析】運算符+”放在變量后面時,先參與其他操作,再對變量+1。putchar(c+)表示先輸出當前c值, 再對c值+1,當輸入abcdef#時, 在w

16、hile語句中,程序輸入#,循環退出。因此輸出為 abcdefg,答案為 D1 項。(20)若有定義:charc;intd;,程序運行時輸入:1,2回車,能把值1輸入給變量c、值2輸入給變量d的輸入語句是A)scanf(%c,%d,&c,&d);B)scanf(%c%d,&c,&d);C)scanf(%d,%f,&c,&d);D)scanf(%d%d,&c,&d);答案:A【解析】scanf 函數的調用格式為:scanf(格式控制串,地址列表);,格式控制串,由%開頭,后跟格式字符,如 c 對應字符型變量,d 對應整型變量。地址表

17、列需要讀入的是所有變量的地址或字符串的首地址。如果除了格式說明字符和附加格式字符外,如果還有其他字符,則在輸入數據時要求按一一對應的位置原樣輸入這些字符,比如兩個格式說明之間有一個逗號,則從鍵盤輸入時輸入量之間也應照原樣輸入逗號。A 選項正確。(21)有以下程序#includemain()inta=1,b=2,c=3,d=0;if(a=1&b+=2)if(b!=2|c-!=3)printf(%d,%d,%dn,a,b,c);elseprintf(%d,%d,%dn,a,b,c);elseprintf(%d,%d,%dn,a,b,c);程序運行后的輸出結果是()。A)1,3,2B)1,3

18、,3C)1,2,3D)3,2,1答案:B【解析】else 總是和最近的 if 配對,所以進入第一個 if 語句中條件判斷時,因為是邏輯與操作需要兩邊運算對象的值均為非零值,才為真,所以需要逐個執行判斷的結果為 1,不再執行第二個 case 語句中的操作?而是進入第二個 if 語句條件判斷,因為b!=2 條件成立所以整個條件表達式的值為真, 所以不再執行邏輯或的第二個運算對象(c-!=3)c 的值不變,也不再執行第一個 else 語句?打印 a 的值 1,b 的值 3,c 的值 3?(22)有以下程序#includemain()ints;scanf(%d,&s);while(s0)swi

19、tch(s)case1:printf(%d,s+5);case 2:printf(%d,s+4);break;case 3:printf(%d,s+3);default:printf(%d,s+1);break;scanf(%d,&s);運行時,若輸入123450,則輸出結果是()。A)66656B)6566456C)66666D)6666656答案:B【解析】switch 語句的執行流程是:首先計算 sw 讓 ch 后面圓括號中表達式的值, 然后用此值依次與各個 case 的常量表達式比較, 若圓括號中表達式的值與某個 case 后面的常量表達式的值相等,就執行此 case 后面的語

20、句,執行后遇 break 語句就退出switch 語句; 若圓括號中表達式的值與所有 case 后面的常量表達式都不等,則執行 default 后面的語句?然后退出?所以輸入 1 時打印 65,輸入 2 時打印 6,輸入 3 時打印 64,輸入 4 時打印 5,輸入 5 時打印 6?(23)設有以下代碼dowhile(條件表達式1)循環體A;while(條件表達式2);while(條件表達式1)do循環體B;while(條件表達式2);其中,循環體A與循環體濟目同,以下敘述正確的是()。A)循環體A與循環體B的執行次數相同B)循環體A比循環體B的執行次數多一次C)循環體A比循環體B的執行次數少

21、一次D)循環體A與循環體B的執行次數不確定答案:A【解析】while 循環語句一般形式為:while(表達式)循環體,執行過程為:首先判斷表達式,成立(非 0)則執行循環體,不成立(0)則退出循環。do-while 循環語句一般形式為:do循環體while(表達式),執行過程為:首先執行循環體,之后判斷表達式,成立(非 0)則再一次執行循環體,不成立 (0) 則退出循環。 假設表達式1與表達式2成立次數為n1與n2。 若 n1n2,則循環體儆行次數為 n2+1,瞅行次數 n2+1;若 n1n2,則循環體 A 執行次數為n1,B 執行次數 n1,A 選項正確。(24)有以下程序#includem

22、ain()inta=0,b=0;for(;a5;a+)if(a%2=0)continue;b+=a;break;printf(%dn,b);程序運行后的輸出結果是()OA)1B)4C)0D)10答案:A【解析】for 語句中,當 a=0 時,滿足 for 循環中 if 語句的條件,執行continue 繼續下一次循環,a+1 后再進入 for 語句循環,此時 a=1 不滿足 if語句,執行 b=b+a 為 1,接著執行 break 語句,終止循環,最后輸出 b=1,故答案為 Ai4 項。(25)有以下程序#includemain()inti=5;doif(i%3=1)if(i%5=2)prin

23、tf(*%d,i);break;i+;while(i!=0);printf(n);程序的運行結果是A)*2*6B)*3*5C)*5D)*7答案:D【解析】do.while 語句是先執行后判斷,所以第一次先執行循環體,判斷 i%3=1 的條件,由于 i 為 5 所以余數為 2,條件不成立,執行 i+,i 的值為 6,判斷 while條件為真,第二次執行循環體,同第一次循環體的執行過程一樣,i 的值變為7,判斷 while 條件為真,第三次執行循環體,此時 i%3=1 條件成立,判斷 i%5=2 也成立,打印*與 i 的值,即*7,然后執行 break 語句,跳出循環?所以選擇 C項?(26)有以

24、下程序#includemain()intc6=10,20,30,40,50,60,*p,*s;p=c;s=&c5;printf(%dn,s-p);程序運行后的輸出結果是()。A)5B)50C)6D)60答案:A【解析】首先初始化一維數組 c6,語句 p=c;指將 c0元素的地址賦給指針變量 p;語句 s=&c5;指將 c5元素的地址賦給指針變量 s。程序最后輸出 s-p,即結果為 5 因此 A 選項正確。(27)有以下程序#includevoidfun(inta,intn,intflag)inti=0,j,t;for(i=0;in-1;i+)for(j=i+1;jn;j+)if

25、(flag)if(aiaj)t=ai;ai=aj;aj=t;main()intc10=7,9,10,8,3,5,1,6,2,4,i;fun(c,4,1);fun(c+4,6,0);for(i=0;i10;i+)printf(%d,ci);printf(n);程序運行后的輸出結果是()。A)7,8,9,10,6,5,4,3,2,1B)10,9,8,7,6,5,4,3,2,1C)10,9,8,7,1,2,3,4,5,6,D)1,2,3,4,5,6,7,8,9,10,答案:C【解析】fun()函數作用冒泡法排序,flag 控制升序(0)或者降序(1)。n 為參與排序的個數。a 為數組的起始地址。因此

26、,fun(a,4,1),數組的前四個降序排序,fun(a+4,6,0)從數組的第四項,后六個升序排序。故結果為 10,9,8,7,1,2,3,4,5,6。答案為 C 選項(28)下列選項中,能正確定義數組的語句是()。A)intnum0.2008;B)intnum;C)intN=2008;intnumN;D)#defineN2008intnumN;答案:D【解析】C 語言不允許定義動態數組,定義數組的大小必須為常量表達式。A 選項錯誤,C 語言中數組沒有此類型的定義方法; B 選項錯誤, 定義數組應指明數組大小,如果不指明數組大小,需要給定初值的個數;C 選項錯誤,N 為變量,不能用來定義數組

27、大小。因此 D 選項正確。(29)有以下程序#includemain()inta44=1,4,3,2,8,6,5,7,3,7,2,5,4,8,6,1;inti,j,k,t;for(i=0;i4;i+)for(j=0;j3;j+)for(k=j+1;kaki)t=aji;aji=aki;aki=t;/*按列排序*/for(i=0;i4;i+)printf(%d,aii);程序運行后的輸出結果是()。A)1,6,2,1,B)8,7,3,1,C)4,7,5,2,D)1,6,5,7,答案:D【解析】首先對二維數組進行賦值操作,a00、a01、a32、a33的值為 1、4、6、1。通過 for 語句和

28、if 語句,對二維數組各列元素進行由小到大的排序操作, 程序最后通過 for 語句輸出二維數組對角線上的元素。因此 Cte 項正確。(30)有以下程序#includemain()charw20,a510=abcdef,ghijkl,mnopq,rstuv,wxyz;inti,j;for(i=0;i5;i+)j=0;while(aij!=0)j+;wi=aij/2+1;)w5=0;puts(w);)程序運行后的輸出結果是()oA)ekpuzB)agmrwC)flqvzD)djoty答案:A【解析】在 for 循環中,執行完 while 語句,j 值為字符串數組 a 的每行字符串的長度, 因止匕

29、wi=aij/2+1,數組 a 的元素 aij/2+1的值賦給一維數組 wi。比如i=0;j=6;aij/2+1=a04=e,將此值賦給 w0。循環依次給數組 V1賦值最后輸出w,答案為 A4 項。(31)有以下程序(strcpy為字符串復制函數,strcat為字符串連接函數)#include#includemain()chara10=abc,b10=012,c10=xyz;strcpy(a+1,b+2);puts(strcat(a,c+1);)程序運行后的輸出結果是()。A)a12xyzB)bc2yzC)a2yzD)12yz答案:C【解析】本題考查字符串處理函數 strcpy 和 strca

30、t,執行完strcpy(a+1,b+2);后,a變為 a2,執行完 strcat(a,c+1)后,a 變為 a2yz,所以答案為 C 選項。(32)有以下程序#includeintf(intn)intt=0,a=5;if(n/2)inta=6;t+=a+;elseinta=7;t+=a+;returnt+a+;main()ints=0,i=0;for(;i2;i+)s+=f(i);printf(%dn,s);程序運行后的輸出結果是A)28B)24C)32D)36答案:B【解析】 在主函數 main()中定義了兩個變量 s 和 i,同時給 s 和 i 賦初值 0。當 i=0 時。執行s+=f(i

31、);語句,調用 f()并將 i 的初值 0 傳遞給形參 n0首先執行if語句中內條件: n/2,條件為假。 則執行else下的語句, a=7,t=7+0=7,使用 return 返回 t,t=7+(a+)=7+5=12,此時 a 運算完后自增 1,變為 6;返回主函數中,s=0+12=12o 當 i=1 時,執行s+=f(i);語句,調用 f()并將 i 的初值 1 傳遞給形參 n0首先執行 if 語句中的條件:n/2,條件為真,執行 if 下面的語句,t=0,a=6t=0+6=6,使用 return 返回 t,t=6+6=12,返回主函數中,s=12+12=24。最后輸出的結果為 24。因此

32、 B 選項正確。(33)有以下程序#includevoidfun(int*a,int*b) int*c;c=a;a=b;b=c;main() intx=3,y=5,*p=&x,*q=&y;fun(p,q);printf(%d,%d,*p,*q);fun(&x,&y);printf(%d,%dn,*p,*q);程序運行后的輸出結果是()。A)3,5,3,5B)3,5,5,3C)5,3,3,5D)5,3,5,3答案:A【解析】 fun 函數的功能是交換形式參數的值, 即交換指針變量 a 和 b 的值,但是 fun 函數并不能夠交換實參的值,因此 fun(p,q)不能

33、交換 p 和 q 的值,所以第一個printf 語句的輸出為 3,5。第二個 fun 函數對 x 和 y 的地址進行了操作,同樣不能交換 x 和 y 的值,并不能影響 p 和 q 指針指向的數據,因此第二個printf 語句的輸出也是 3,5。因此 A 選項正確。(34)有以下程序:#includeintf(intx);main() intn=1,m;m=f(f(f(n);printf(%dn,m);intf(intx) returnx*2;程序運行后的輸出結果是()。A)8B)2C)4D)1答案:A【解析】第一次調用 Ff(f(f(1),第二次為詐 f(f(2),第三次為洋 f(4),即返回值為 8。(35)設有如下函數定義:#includeintfun(intk)if(k1)return0;elseif(k=1)return1;elsereturnfun(k1)+1;若執行調用語句:n=fun(3);,則函數fun總共被調用的次數是()。A)2B)3C)4D)5答案:B【解析】首先 n=fun(3),3 被當作參數傳遞進去,這就進行了一次調用,3被當做參數傳進去后,程序會執行這句 elsereturnfun(k-1)+1;這就調用了第二次,而參數是 31 也就是 2。2 被當做參數傳進

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論