天天看點

c語言選擇題題及答案,C語言選擇題及答案

C語言選擇題及答案

選擇題答案與解析:

1.C。【解析】根據二叉樹的性質及定義,一棵深度為k 且有2k-1個結點的二叉樹為滿二叉樹。滿二叉樹的葉子結點為最後一層的結點數,又根據滿二叉樹的性質,在滿二叉樹的第i層上至多有2i-1個結點。是以深度為5的滿二叉樹的葉子結點數為25-1=16個。

2.D。【解析】本題考查對軟體生命周期的了解,軟體生命周期整體上可分為定義階段、開發階段和維護階段。其中定義階段包括可行性研究與計劃制訂和需求分析;開發階段包括概要設計、詳細設計、開發和測試;維護階段是一個單獨階段,不包含在開發階段内,它是所花費用最多的一個階段。

3.C。【解析】視圖設計的設計次序分3種:自頂向下、自底向上和由内向外。它們為視圖設計提供了具體的操作方法,設計者可根據實際情況靈活掌握。

4.A。【解析】二分法查找隻用于順序存儲的有序線性表,而順序查找用在順序存儲的非有序線性表和線性連結清單。

5.C。【解析】數組下标從0開始,當數組元素的下标超出了定義的範圍時,系統不會出“下标越界”的資訊,運作會出錯,是以在程式設計時務必檢查下标是否越界。

6.B。【解析】在用靜态static與外部extern定義變量時,系統立刻給其配置設定記憶體,而定義自動類auto與強制放入寄存器register類型變量時,隻有當使用時才配置設定記憶體。

7.C。【解析】本題考查指派語句,而選項A、B是表達式,不合題意,選項D中強制類型轉換,應把類型名用括号括起來,選項C中i--也可寫成i=i-1,故選擇c選項。

8.C。【解析】本題考查三目運算符a  9.C。【解析】線性表可以是空表,線上性表中,第一個結點沒有前驅結點(前件),最後一個結點沒有後繼結點,其他結點有且隻有一個前驅點(後繼點)。

10.C。【解析】sum+=i等價于sun+i,在本題中sum 沒有賦初值,而題中隻輸出sum的值,是以整個結果為不确定值。

11.B。【解析】當j=10時,for循環成立,j%3為1,if條件也為真,當執行完j--後,j為9,再執行“--j;--J;”後,j的值為7,是以輸出7,繼續循環執行j--後j為6,當j

=6時for循環成立,j%3為0,if條件為假,此時執行“-- j;--j;”後,j為4,輸出4,再繼續循環執行j--後j為3,當j=3時,for循環不成立,退出循環,故選擇8選項。

12.A。【解析】題中X<=Y<=Z的意思為X<=Y 并且Y<=Z,在c語言中,要表示“且”的關系,應用“與”邏輯運算符,即“&&”,故選擇A選項。

13.D。【解析】程式中ptr指針指向數組art的首位址,*ptr=arr[0]=6,*(ptr2)=2,故選D。

14.D。【解析】本題要求輸出每個元素的值,D選項中(*p)++等價于*p=*p+1,其僅僅是對*p加1,并沒有達到輸出其每個值的作用。

15.C。【解析】b++是先用表達式的值然後自增l,是以表達式值為’2 ’,b為’3 ’;b-a=’3 ’-’1’=2,是以最後輸出的結果為2,2,前一個為字元2,後一個為數字2。

16.C。【解析】本題中int(*ptr)()的含義是指向函數

的指針變量,其為指向函數的指針變量,該函數傳回一個int 型資料,故選擇C選項。

17.A。【解析】當值相同時按位異或,則為0,按位或與按位與時仍不變,負數也為非0。

18.C。【解析】本題用了函數調用,fun中if語句成立則進行i,j的交換,用到主函勢中則為把下标為0、3,1、2互換,是以,當執行完後X的數組為8,1,6,2,故選擇C選項。

19.B。【解析】本題考多循環的使用,當j=10,i=9時, 循環成立,第一個if條件為假,第二個if條件i==j-1成立,則輸出j的值為10,接者執行i++後,i為10;當i為10,for循環不成立,退出内層循環,此時執行j++後,j為11,循環不成立,退出循環。

20.D。【解析】scanf函數讀取的是char型資料,是以回車時輸入的換行符也是有效字元。于是cl,c2,c3,c4的内容分别是1,2,3,’\n’。

21.D。【解析】本題考查continue的用法,continue語句的作用是結束本次循環,直接進行下次循環。是以在程式中,隻有當a=10時,才退出循環,故選擇D選項。

22.A。【解析】用E—R圖可以描述實體及其互相之間的聯系,還可以描述多個實體集之間的聯系和一個實體集内部實體之間的聯系。用E—R圖表示的概念資料模型不僅能轉換為關系資料模型,還可以轉換為其他資料模型,如網狀模型和層次模型等。是以A的說法正确。

23.D。【解析】主要考查運算符的優先級。sizeof的優先級最高,其次是%<<>.優先級最低的是“=”。

24.B。【解析】在C語名中規定進行強制類型轉換的格式是:(類型名)變量名;并且給表達式指派。

25.C。【解析】本題考查逗号表達式。程式輸出時輸出一個%d,是以輸出第一個a的值與後續無關。

26.D。【解析】本題考查if語句。第1個if語句,如果

a  27.C。【解析】本題考查while,while循環表達式k=1是個指派表達式而不是邏輯表達式,k的初值為12不符合循環條件,是以循環體一次也不執行。

28.B。【解析】本題考查3個知識點:将一個字元賦給一個字元變量時,是将該字元對應的ASCIl碼存儲到記憶體單元中;常見ASCII碼的值如A和a;隻要邏輯與運算符&&的兩個運算對象都為真時,傳回值就是1。

29.A。【解析】本題考查函數值的類型,在函數定義時, 由于函數沒有說明其類型,系統預設一律自動按整型(int)

處理。

30.D。【解析】本題主要考查do—while循環,因為變量t的初始值等于1,經過第一次do-while循環後,執行t= t-1這條語句一次,是以變量t的值為-1,判斷關系表達式t!=n是否成立,如果關系表達式成立,則執行第二次循環,如果關系表達式不成立,退出循環。由此可見,隻要輸入變量n的值為負奇數,則一定會使t==n成立,故退出do-while循環。

31.D。【解析】double*p,a定義了一個指向雙精度型的指針變量P和雙精度型變量a,p=&a表示将變量a的位址賦給指針變量p;scanf("%If",p)表示用鍵盤輸入的數賦給指針變量P所指向的位址單元中,scanf()函數要求在輸入double型資料,格式控制符必須用%1f。否則,資料不能正确輸入。是以選項D正确。

32.B。【解析】本題考查for循環及if…else語句嵌套,第1次執行for循環,p[1][0]=p[1][0]=p[1][0]-1=3;第2 次執行for循環,p[1][1]=p[1][1]-1=4;第3次執行for 循環,p[1][2]=l,最後輸出的是a[0][1]+a[1][1]+a[1] [2]=2+4+1=7。

33.D。【解析】本題主要考查帶參數的宏定義,過程如下:由于定義為define(x) x*x沒有括号優先級,是以:a= a/(S(k+m)/S(k+m))=a/(k+m*k+m/k+m*k+m) =9/(3+2*3+2/3+2*3+2)=0。

34.C。【解析】本題考查按位異或運算,異或就是相同為0,不同為1(化為二進制00001101),017的二進制為000001111,兩者異或結果為00000010。

35.D。【解析】本題考查leon(tp)函數,其功能是:測試所指的檔案的位置指針是否已達到檔案尾,如果已達到檔案尾,則函數傳回非0值;否則傳回0,表示檔案未結束。

36.C。【解析】語句“if(c==d)y=0;else y=1;”是if(a   37.B。【解析】運作程式,當k=7時switch(7)執行case:7,s++後s=1,break跳出。k--,k=7繼續循環switch(6),執行case 6;直接跳出循環,k--變成5,繼續循環switch(5),執行case 5後面的語句s+=2,也相當于s= s+2,此時s為3,break跳出,k變為4,繼續循環,執行case 4為空,繼續執行case 7;s++為4跳出循環,k--變為3,繼續循環,執行case 3,空語句往下執行case 6,跳出,k -- 為2,繼續循環,執行case 2;空語句往下執行case 3,空語句再執行case 7,跳出循環,k--為1不符合循環,退出,此時S=4。

38.B。【解析】本題考查for循環的使用。對于第1個for循環,任何一個i,内層j的循環都要使j~0到3,j=4時不符合,是以退出j循環;然後i減1,J仍然要從0~3,j=4 時退出J循環直到i變成0,退出i循環。第一條for語句執行6次,第二條for語句執行4次,是以内循環體執行6*4 =24次。

39.A。【解析】本題考查循環跳出的知識點:①break語句可以出現在switch循環體内及語句體内,它的作用是跳出循環體,不能用于其他的語句;②continue語句的作用是結束本次循環,即跳過循環體中下面尚未執行的語句,而接着判定循環條件是否成立,确定下一次循環是否繼續執行,執行contiune語句不會使整介循環終止;③循環體内使用break語句會使循環提前終止;④從多層循環嵌套中退出時,可以使用90t0語句或者break語句。

40.B。【解析】用"w"方式打開檔案,意思是如果檔案名相同則覆寫原來的檔案,是以當再次輸入時覆寫了第一次的内容,B選項正确。