點擊查看:2018年3月全國計算機二級C語言考試強化模擬題匯總
1、結構化程序的三種基本結構是( )。
A.遞歸、迭代和回溯
B.過程、函數和子程序
C.順序、選擇和循環
D.調用、返回和選擇
參考答案:C
參考解析: 僅使用順序、選擇、循環三種基本控制結構就足以表達出各種其他形式結構的程序設計方法。故本題答案為C選項。
2、若有以下定義和語句:
則輸出結果是( )。
A.10 7
B.10 5
C.5 5
D.5 8
參考答案:C
參考解析: strlen函數返回字符串的長度,求字符串1長度時,遇到結束標志‘\0’為止,但是長度不包括結束標識。1字符數組sl的后5個元素沒有賦值,都為‘\0’,即“abcd!”后1為‘\0’。所以strlen(s1)的值為5。字符指針s2所指向的字1符串中,\n為轉義字符換行符,表示1個字符,\\也為轉義字1符,代表\,也是l個字符,其后為字符串結束標識‘0’;所以strlen(s2)的值也為5。因此C選項正確。
3、以下敘述中正確的是( )。
A.C語句必須在一行內寫完
B.C程序中的每一行只能寫一條語句
C.C語言程序中的注釋必須與語句寫在同一行
D.簡單C語句必須以分號結束
參考答案:D
參考解析: C語句可以跨行來寫,但是必須以分號結束,所以A選項錯誤。C程序中的一行可以有多條語句,所以B選項錯誤。C語言中的注釋語句可以與原語句放在一行也可以不放在一行,所以C選項錯誤。
4、以下不合法的數值常量是( )。
A.8.0E0.5
B.1e1
C.011
D.0xabed
參考答案:A
參考解析: A選項中E后面的指數必須為整型數據,所以A錯誤。C選項中011表示的是八進制常量.Oxabcd表示的是十六進制常量。
5、有以下程序:
程序運行后的輸出結果是( )。
A.3
B.4
C.1
D.9
參考答案:B
參考解析: 分析程序可以發現,內層for循環每次只執行一次:即當j=i時。所以可以使用i替換j,去掉for循環,對應外層for循環的i,執行t+=b[i][b[i][i]],所以當i取值0、1、2時,t的值累加b[0][b[0][0]]、b[1][b[I][I]]、b[2][b[2][2]],即b[0][0]、b[1][1]、b[2][2],對應的值為:O、1、2,t取值為4(t初始值為1)。故答案選B。
6、若有定義:
int a,b;
通過語句:
seanf("%d;%d",&a,&b);
能把整數3賦給變量a,5賦給變量b的輸入數據是( )。
A.3 5
B.3,5
C.3;5
D.35
參考答案:C
參考解析: 輸人數據的格式必須與scanf()的格式控制串完全匹配,所以輸入時必須在3和5之間輸入“;”。
7、有以下程序:
程序運行后的輸出結果是( )。
A.0
B.1
C.2
D.3
參考答案:B
參考解析: 第一次執行外循環i的值為1,滿足條件,判斷第一次內循環,j的值為3,不滿足條件,跳出內循環。第二次執行外循環i的值為2,同理也不滿足內循環條件,跳出內循環。第三次執行外循環i的值為3,此時進入內循環判斷條件時,條件成立,執行m=m%j,m的值為1,跳出內循環,跳出外循環打印m的值。
8、在軟件設計中不使用的丁具是( )。
A.系統結構圖
B.PAD圖
C.數據流圖(DFD圖)
D.程序流程圖
參考答案:C
參考解析: 系統結構圖是對軟件系統結構的總體設計的圖形顯示。在需求分析階段,已經從系統開發的角度出發,把系統按功能逐次分割成層次結構,是在概要設計階段用到的。PAD圖是在詳細設計階段用到的。程序流程圖是對程序流程的圖形表示,在詳細設計過程中用到。數據流圖是結構化分析方法中使用的工具,它以圖形的方式描繪數據在系統中流動和處理的過程,由于它只反映系統必須完成的邏輯功能,所以它是一種功能模型,是在可行性研究階段用到的而非軟件設計時用到,所以選擇C。
9、在滿足實體完整性約束的條件下( )。
A.一個關系中應該有一個或多個候選關鍵字
B.一個關系中只能有一個候選關鍵字
C.一個關系中必須有多個候選關鍵字
D.一個關系中可以沒有候選關鍵字
參考答案:A
參考解析: 實體完整性約束要求關系的主鍵中屬性值不能為空值,所以選擇A。
10、某系統總體結構圖如下圖所示:
該系統總體結構圖的深度是( )。
A.7
B.6
C.3
D.2
參考答案:C
參考解析: 根據總體結構圖可以看出該樹的深度為3,比如:XY系統—功能2—功能2.1,就是最深的度數的一個表現。
1、按照C語言規定的用戶標識符命名規則,不能出現在標識符中的是( )。
A.大寫字母
B.下劃線
C.數字字符
D.連接符
參考答案:D
參考解析: c語言中標識符由字母、下劃線、數字組成,且開頭必須是字母或下劃線。所以D選項中的連接符不合法。
2、以下不能將s所指字符串正確復制到t所指存儲空間的是( )。
A.do{*t++=*s++;}while(*s);
B.for(i=0;t[i]=s[i];i++);
C.while(*t=*s){t++;s++;}
D.for(i=0,j=0;t [i++]=s[j++];);
參考解析:
不能因為當*s='\0'時,while(* s)跳出循環,這樣字符串結束標志'\0'沒有復制給*t,造成*t不完整。注意,*t++=*s++是先執行t=*s,然后才進行t=t+1,s=s+1。B、C、D都能將'\0復制過去。
3、在面向對象方法中,不屬于“對象”基本特點的是( )。
A.一致性
B.分類性
C.多態性
D.標識唯一性
參考答案:A
參考解析: 對象有如下一些基本特點:標識唯一性、分類性、多態性、封裝性、模塊獨立性好。所以選擇A。
4、以下程序段中的變量已正確定義:
程序段的輸出結果是( )。
A.**
B.****
C.*
D.********
參考答案:C
參考解析: 由于內層循環for(k=1;k<3;k++)后面直接跟了空語句“;”所以在循環內部什么操作也不做,跳出外層循環后執行打印語句,所以打印了一個“*”,選擇C。
5、以下程序:
則以下函數調用語句錯誤的是( )。
A.k=f(a,b);
B.k=add(a,b);
C.k=(*f)(a,b);
D.k=*f(a,b);
參考答案:D
參考解析:D選項中*f(a,b)表示調用后返回一個指向整型數據的地址指針,即該函數的返回值為指針類型,所以不能將其賦值給整形變量k。
6、有以下程序:
程序運行后的輸出結果是( )。
A.a=2,b=2
B.a=2,b=1
C.a=1 ,b=1
D.a=-1,b=0
參考答案:B
參考解析: case常量表達式只是起語句標號作用,并不是該處進行條件判斷。在執行switch語句時,根據switch的表達式,找到與之匹配的case語句,就從此case子句執行下去,不在進行判斷,直到碰到break或函數結束為止。所以執行內層switch(y)時只執行了a++,此時a的值為1。然后執行外層case 2語句的a++;b++;a為2,b為1。所以結果為B。
7、以下語句中存在語法錯誤的是( )。
A.char ss[6][20];ss[1]= "right? ";
B.char ss()[20]={"right?"};
C.char*ss[6];88[1]= "right? ";
D.char*ss()={"right? "};
參考答案:A
參考解析: 數組定義后,不可以對數組整體賦值,s是二維數組,因ss[1]是一維字符數組,即字符串,字符串賦值可以使用strcpy(ss[1],”right”);這樣的形式,而選項A中對二維數組中的第“l”維(相當于一個一維數組)賦值,是不可以的。選項B和D是定義時對數組初始化,這是可以的。選項C中,將字符串在內存中的首地址賦給指針數組的一個元素,這是可以的。
微信搜索"考試吧"了解更多考試資訊、下載備考資料
相關推薦: