國家二級C語言機試(選擇題)模擬試卷4(共240題)_第1頁
國家二級C語言機試(選擇題)模擬試卷4(共240題)_第2頁
國家二級C語言機試(選擇題)模擬試卷4(共240題)_第3頁
國家二級C語言機試(選擇題)模擬試卷4(共240題)_第4頁
國家二級C語言機試(選擇題)模擬試卷4(共240題)_第5頁
已閱讀5頁,還剩62頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

國家二級C語言機試(選擇題)模擬試卷4(共9套)(共240題)國家二級C語言機試(選擇題)模擬試卷第1套一、選擇題(本題共25題,每題1.0分,共25分。)1、設棧的存儲空間為S(1:m),初始狀態(tài)為top=m+1。經(jīng)過一系列入棧與退棧操作后,top=m?,F(xiàn)又在棧中退出一個元素后,棧頂指針top值為()。A、0B、m-1C、m+1D、產(chǎn)生??斟e誤標準答案:C知識點解析:棧的順序存儲空間為S(1:m),初始狀態(tài)top=m+1,所以這個棧是m在棧底(也可理解為開口向下的棧)。經(jīng)過一系列入棧與退棧操作后top=m,則棧中有1個元素,若現(xiàn)在又退出一個元素,那么棧頂指針下移一位,回到m+1的位置。2、C語言程序的模塊化通過以下哪個選項來實現(xiàn)A、變量B、程序行C、函數(shù)D、語句標準答案:C知識點解析:用函數(shù)作為程序模塊以實現(xiàn)C程序的模塊化,程序有多個函數(shù)構成,每個函數(shù)可以實現(xiàn)一個具體的功能,實現(xiàn)程序的模塊化設計。3、有以下程序:#includevoidfun(char(*P)[6]){int1;for(i=0;i<4;i++)printf(“%c”,P[i][i]);prinff(“\n”);}main(){charS[6][6]={.“ABCD”,“abcde”,“12345”,“FGHIJ”,“fghij”,“54321”};fun(s);}程序的運行結(jié)果是()。A、AalFB、Ab3IC、ABCDD、fghij標準答案:B知識點解析:函數(shù)fun的功能是輸出s[i][i],所以結(jié)果會輸出s[0][0]、s[1][1]、s[2][2],即Ab31。4、耦合性和內(nèi)聚性是對模塊獨立性度量的兩個標準。下列敘述中正確的是()。A、提高耦合性降低內(nèi)聚性有利于提高模塊的獨立性B、降低耦合性提高內(nèi)聚性有利于提高模塊的獨立性C、耦合性是指一個模塊內(nèi)部各個元素間彼此結(jié)合的緊密程度D、內(nèi)聚性是指模塊間互相連接的緊密程度標準答案:B知識點解析:耦合性是反映模塊間互相連接的緊密程度,內(nèi)聚性是指一個模塊內(nèi)部各個元素間彼此接合的緊密程序。提高模塊的內(nèi)聚性,降低模塊的耦合性是有利于提高模塊的獨立性。5、以下選項中能用作數(shù)據(jù)常量的是()。A、115LB、0118C、1.5e1.5D、0115標準答案:A知識點解析:A選項中115L表示115是長整型數(shù)據(jù),合法。B選項是八進制常量的表示方法,但是在八進制中不能含有數(shù)字8,所以B選項錯誤。C選項中e后面應該是整數(shù),而不能是小數(shù)1.5,所以C選項錯誤。D選項中八進制常量應該是數(shù)字“O”開始,而不是字母“0”開始。6、結(jié)構化程序設計中,下面對goto語句使用描述正確的是A、禁止使用goto語句B、使用goto語句程序效率高C、應避免濫用goto語句D、goto語句確實一無是處標準答案:C知識點解析:濫用goto語句確實有害,應盡量避免:完全避免使用goto語句并非是明智的方法,有些地方使用goto語句會使程序流程更清楚、效率更高;爭論的焦點不應該放在是否取消goto語句,而應該放在用在什么程序結(jié)構上。7、以下選項中不合法的標識符是()。A、&aB、FORC、printD、_00標準答案:A知識點解析:C語言中標識符南字母、下劃線、數(shù)寧組成,且開頭必須是寧母或下劃線。另外,關鍵字不能作為標識符。因為C語言中區(qū)分大小寫,所以B選項中的“FOR”可以作為標識符來用。A選項中含有非法字符&,所以其不合法。8、設一棵樹的度為3,其中沒有度為2的結(jié)點,且葉子結(jié)點數(shù)為5。該樹中度為3的結(jié)點數(shù)為A、1B、2C、3D、不可能有這樣的樹標準答案:B知識點解析:樹的度是指一棵樹中,最大的結(jié)點的度稱為樹的度。本題中樹的度為3,那么樹中最少有一個結(jié)點的度為3。而樹中沒有度為2的結(jié)點,葉子結(jié)點數(shù)為5,度為1的結(jié)點下面只有一個葉子結(jié)點。因此,該樹中含2個度為3的結(jié)點滿足題目要求。9、當變量c的值不為2、4.6時,值為“真”的表達式是()。A、(c>=2&&c<=6)&&(c%21=1)B、(c==2)||(c==4)||(c==6)C、(c>=2&&c<=6)&&!(c%2)D、(c>=2&&c<=6)||(c!=3)||(c!=5)標準答案:D知識點解析:邏輯或運算符中只要有一個運算量為真,結(jié)果就是真,當c>=2&&c<=6條件不成立時,c的值肯定不是2、3、4、5、6,所以c!=3與c!=5均成立,所以D選項的結(jié)果一定為真。10、下列條件語句中,輸出結(jié)果與其他語句不同的是()。A、if(a!=0)pfintf("%d\n",x);elsepfintf("%d\n",y);B、if(a==0)pfintf("%d\n",y);elseprintf("%d\n",x);C、if(a==0)pfintf("%d\n",x);elsepnnff("%d\n",y);D、if(a)pfintf("%d\n",x);elseprintf("%d\n",y);標準答案:C知識點解析:A、B、D選項的含義均為:a的值如果為0,打印y的值,否則打印x的值。而C選項的含義是:a的值為0時打印x的值,不為0時打印y的值,與其他選項正好相反。11、正確的結(jié)構體類型說明和變量定義是()。A、typedefstructf{intn;charc;}STR;STRt1,t2;B、structSTR;{intn;charC;};STRt1,t2;C、typedefstmctSTR;{intn=0;charc=’A’;}t1,t2;D、struct{intn;charc;}STR;STRt1,t2;標準答案:A知識點解析:定義結(jié)構體類型的一般形式為:struct結(jié)構體名{成員列表};struct結(jié)構體名后不能加“:”號。但定義完之后要在句末加分號,所以選項B、C有誤,選項D中定義無名稱的結(jié)構體類型同時定義結(jié)構體變量形式應為“stmctt1,t2;”。選項A為用戶自定義類型,其為正確的定義形式。12、若有以下程序,則程序的輸出結(jié)果是#includemain(){charc1,c2;el=’C’+’8’-’3’;c2=’9’-’0’;printf("%c%d\n",c1,c2);}A、H9B、H’9’C、F’9’D、表達式不合法輸出無定值標準答案:A知識點解析:字符常量允許進行簡單盼算術運算,則’C’+5表示H,而’9’-’0’則表示數(shù)值9。13、學生選修課程的關系模式為SC(S#,Sn,Sd,Sa,C#,G)(其屬性分別為學號、姓名、所在系、年齡、課程號和成績);C(C#,Cn,P#)(其屬性分別為課程號、課程名、先選課)。關系模式中包含對主屬性部分依賴的是A、S#→SdB、(S#,C#)→GC、C#→CnD、C#→P#標準答案:A知識點解析:在關系模式SC(S#,Sn,Sd,Sa,C#,G)(其屬性分別為學號、姓名、所在系、年齡、課程號和成績)中,主鍵為(S#,C#)。則存在S#Sd,即學號就可以決定非主屬性Sd。所以非主屬性Sd部分依賴主鍵(S#,C#)中S#。所以選項A正確。14、下列敘述中正確的是A、數(shù)據(jù)庫系統(tǒng)減少了數(shù)據(jù)冗余B、經(jīng)規(guī)范化后的數(shù)據(jù)庫系統(tǒng)避免了一切冗余C、數(shù)據(jù)庫系統(tǒng)比文件系統(tǒng)能管理更多的數(shù)據(jù)D、數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的一致性是指數(shù)據(jù)類型一致標準答案:A知識點解析:暫無解析15、若有定義語句:chars[10]="1234567\0\0";則strlen(s)的值是A、8B、7C、9D、10標準答案:B知識點解析:字符串長度函數(shù)strlen(s)表示計算出以s為起始地址的字符串的長度,并作為函數(shù)值返回。這個長度值不包括串尾的結(jié)束標志,’\0’。16、對于一個正常運行的C程序,以下敘述中正確的是A、程序的執(zhí)行總是從程序的第一個函數(shù)開始,在main函數(shù)結(jié)束B、程序的執(zhí)行總是從main函數(shù)開始,在程序的最后一個函數(shù)中結(jié)束C、程序的執(zhí)行總是從程序的第一個函數(shù)開始,在程序的最后一個函數(shù)中結(jié)束D、程序的執(zhí)行總是從main函數(shù)開始標準答案:D知識點解析:一個C語言源程序無論包括了多少函數(shù),在正常情況下總是從main函數(shù)開始執(zhí)行,從main函數(shù)結(jié)束。17、有以下程序#include<stdio.h>voidmain(){charb,c;inti;b=’a’;c=’A’;for(i=0;i<6;i++){if(i%2)putchar(i+b);elseputchar(i+c);}printf("\n");}程序運行后的輸出結(jié)果是A、ABCDEFB、aBcDeFC、abcdefD、AbCdEf標準答案:D知識點解析:循環(huán)變量i從0依次遞增到5,依次輸出字母A,b,C,d,E,f。18、若函數(shù)調(diào)用時的實參為變量時,以下關于函數(shù)形參和實參的敘述中正確的是()。A、函數(shù)的形參和實參分別占用不同的存儲單元B、形參只是形式上的存在,不占用具體存儲單元C、同名的實參和形參占同一存儲單元D、函數(shù)的實參和其對應的形參共占同一存儲單元標準答案:A知識點解析:函數(shù)傳參過程中,其實是把實參的數(shù)據(jù)復制一份傳給形參,實參和形參都是局部變量,在程序運行到相應的定義語句的時候才分配存儲空間,所以兩者占用不同的存儲單元,所以答案選A。19、設有定義:inta;floatb;執(zhí)行scanf("%2d%f",&a,&b);語句時,若從鍵盤輸入876543.0則a和b的值分別是A、876和543.0B、87和6.0C、87和543.0D、76和543.0標準答案:B知識點解析:在輸入函數(shù)scanf的輸入格式符%2d%f中,2d表示輸入的數(shù)據(jù)的寬度為2,所以當從鍵盤輸入876543.0<CR>時,這時把輸入數(shù)字串的前兩位87賦給變量a,然后將緊接著將6按照格式控制符%f的形式賦給變量b,所以b的值為6.000000。20、若有定義語句:doublea,*p=&a;以下敘述中錯誤的是A、定義語句中的*號是一個說明符B、定義語句中的P只能存放double類型變量的地址C、定義語句中*p=&a把變量a的地址作為初值賦給指針變量PD、定義語句中的*號是一個間址運算符標準答案:D知識點解析:在指針定義語句doublea,*p=&a中,指針變量p前面的*號,只是一個說明符,說明變量p是指針類型的變量。21、下面結(jié)構體的定義語句中,錯誤的是A、structord{intx;inty;intz;);structorda;B、structord{intx;inty;intz;)structorda;C、structord{intx;inty;intz;}a;D、stmct{intx;inty;intz;)a;標準答案:B知識點解析:在選項B中,由于在定義完結(jié)構體后缺少分號“;”,所以這是一條不完整的語句,因而是錯誤的。22、下列函數(shù)的功能是voidfun(char*a,char*b){while((*b=*a)!=’\0’){a++;b++;}}A、使指針b指向a所指字符串B、將a所指字符串和b所指字符串進行比較C、將a所指字符串賦給b所指空間D、檢查a和b所指字符串中是否有’\0’標準答案:C知識點解析:在while語句的條件中是把字符*a的值賦給字符*b,然后再判斷字符*b的值是否等于字符串的結(jié)束字符(’\0’),當不等于結(jié)束字符(’\0’)時,把字符指針變量a,b分別加1,指它們的下一個字符,直到字符串a(chǎn)的結(jié)束。這樣程序執(zhí)行的結(jié)果就是把字符串a(chǎn)賦給了b所指的存儲空間。23、下列敘述中正確的是A、兩個連續(xù)的單引號(’’)是合法的字符常量B、可以對字符串進行關系運算C、兩個連續(xù)的雙引號("")是合法的字符串常量D、空字符串不占用內(nèi)存,其內(nèi)存空間大小是0標準答案:A知識點解析:兩個連續(xù)的雙引號:"",是一個字符串常量,稱為“空串”。24、若有以下定義intx[10],*pt=x;則對x數(shù)組元素的正確引用是A、*(x+3)B、*&x[10]C、*(pt+10)D、pt+3標準答案:A知識點解析:本題考查指針的調(diào)用。x代表x[10]數(shù)組的首地址指針,pt是指向x[10]數(shù)組的首地址的指針,即兩者指向同一內(nèi)存單元。*(x+3)等同于x[3]。25、下面關于位運算符的敘述,正確的是()。A、&表示"按位與"的運算B、#表示"按位異或"的運算C、||表示"按位或"的運算D、~表示"按位異或"的運算標準答案:A知識點解析:以#開頭的語句為編譯預處理命令行,||為邏輯或運算符,~表示按位取反運算符,答案選A。國家二級C語言機試(選擇題)模擬試卷第2套一、選擇題(本題共40題,每題1.0分,共40分。)1、數(shù)據(jù)的存儲結(jié)構是指A、存儲在外存中的數(shù)據(jù)B、數(shù)據(jù)所占的存儲空間量C、數(shù)據(jù)在計算機中的順序存儲方式D、數(shù)據(jù)的邏輯結(jié)構在計算機中的表示標準答案:D知識點解析:在對數(shù)據(jù)進行處理時,各數(shù)據(jù)元素在計算機中的存儲關系,即為數(shù)據(jù)的存儲結(jié)構。2、若有以下程序段doublex=5.16894;printf("%f\n",(int)(x*1000+0.5)/(double)1000);則程序段的輸出結(jié)果是A、5.175000B、5.169000C、5.170000D、5.168000標準答案:B知識點解析:(int)(x*1000+0.5)/(double)1000表達式功能,保存數(shù)據(jù)x的后三何小數(shù),把第四四舍五入。3、sizeof(double)是A、一個雙精度型表達式B、一個整型表達式C、一個不合法的表達式D、一種函數(shù)調(diào)用標準答案:B知識點解析:sizeof關鍵字為C語言的運算符,用于測試()內(nèi)類型其變量所占內(nèi)存,表達式結(jié)果返回卜進制整數(shù),因此為整型表達式,表明變量所占的內(nèi)存字節(jié)數(shù)。4、對長度為n的線性表作快速排序,在最壞情況下,比較次數(shù)為A、nB、n-1C、n(n-1)D、n(n-1)/2標準答案:D知識點解析:假設線性表的長度為n,則在最壞情況下,冒泡排序需要經(jīng)過n/2遍的從前往后的掃描和n/2遍的從后往前的掃描,需要的比較次數(shù)為n(n-1)/2??焖倥判蚍ㄒ彩且环N互換類的排序方法,但由于它比冒泡排序法的速度快,因此,稱為快速排序法。5、設二叉樹的前序序列與中序序列均為ABCDEFGH,則該二叉樹的后序序列為A、HGFEDCBAB、ABCDEFGHC、ABCDHGFED、DCBAHGFE標準答案:A知識點解析:前序遍歷(DLR)是二叉樹遍歷的一種,也叫做先根遍歷、先序遍歷、前序周游,可記做根芹右;中序遍歷(LDR)是二叉樹遍歷的一種,也叫做中根遍歷、中序周游,可記做左根右;后序遍歷(LRD)是二叉樹遍歷的一種,也叫做后根遍歷、后序周游,可記做左右根。根據(jù)題中前序和中序序列均為ABCDEFGH,可畫出二義樹,該二叉樹是一個子結(jié)點全部在右側(cè)二義樹,然后根據(jù)后序遍歷方法,可得出后序遍歷為HGFEDCBA。6、若有如下說明,且int類型占兩個字節(jié),則正確的敘述為()。structstfinta;intb[2];}a;A、結(jié)構體變量a與結(jié)構體成員a同名,定義是合法的B、程序只在執(zhí)行到該結(jié)構體時才為結(jié)構體st分配存儲單元C、程序運行時為結(jié)構體st分配8字節(jié)存儲單元D、類型名structst可以通過extern關鍵字提前引用標準答案:A知識點解析:本題主要考查結(jié)構體的用法:①結(jié)構體變量a與結(jié)構體成員a同名,定義合法;②在程序編譯的時候結(jié)構的定義并不會使系統(tǒng)為該結(jié)構分配內(nèi)存空間,只有在說明結(jié)構變量時才分配內(nèi)存空間;③inta占2個字節(jié),intb[2]占4個字節(jié),共6個:④類型名“structst”不可以通過extern關鍵字提前引用。7、在數(shù)據(jù)庫管理系統(tǒng)提供的數(shù)據(jù)語言中,負責數(shù)據(jù)模式定義的是()。A、數(shù)據(jù)定義語言B、數(shù)據(jù)管理語言C、數(shù)據(jù)操縱語言D、數(shù)據(jù)控制語言標準答案:A知識點解析:在數(shù)據(jù)庫管理系統(tǒng)提供的數(shù)據(jù)語言中,數(shù)據(jù)定義語言負責數(shù)據(jù)模式定義的功能,答案選A。8、軟件系統(tǒng)總體結(jié)構圖的作用是A、描述軟件系統(tǒng)結(jié)構的圖形工具B、描述軟件系統(tǒng)的控制流C、描述軟件系統(tǒng)的數(shù)據(jù)流D、描述軟件系統(tǒng)的數(shù)據(jù)結(jié)構標準答案:A知識點解析:軟件系統(tǒng)總體結(jié)構圖的作用是描述軟件系統(tǒng)結(jié)構的圖形工具。9、下列敘述中錯誤的是()。A、一個C語言程序只能實現(xiàn)一種算法B、C程序可以由多個程序文件組成C、C程序可以由一個或多個函數(shù)組成D、一個C函數(shù)可以單獨作為一個C程序文件存在標準答案:A知識點解析:一個C程序可以有一個或多個程序文件,也可以有一個或多個函數(shù),所以一個C語言程序可以實現(xiàn)多種算法。答案選A。10、已定義以下函數(shù)intfun(int*P){return*P;}fun函數(shù)的返回值是()。A、一個整數(shù)B、不確定的值C、形參P中存放的值D、形參P的地址值標準答案:A知識點解析:返回值為指針變量指向的數(shù)據(jù),該數(shù)據(jù)已被定義為整型,因此A選項正確。11、以下選項中,能用作用戶標識符的是()。A、_0_B、8_8C、voidD、unsigned標準答案:A知識點解析:考查用戶標識符。C語言規(guī)定,標識符由字母(A~Z,a~z)、數(shù)字(0~9)或者下劃線(_)組成,并且第一個字符必須為字母或者下劃線。用戶自定義的標識符不能與關鍵字相同,而且盡量避免與預定義標識符相同。選項B)不能以數(shù)字開始;選項C)、D)為C語言關鍵字,不能作為用戶標識符。答案選A)。12、以下選項中合法的標識符是A、1-1B、1_1C、_11D、1__標準答案:C知識點解析:本題考查標識符定義。合法標識符的要求是由下劃線、英文大小寫字母和數(shù)字組成的字符串,且第一個字符必須是字母或下劃線。13、以下敘述中正確的是A、標識符的長度不能任意長,最多只能包含16個字符B、語言中的關鍵字不能作變量名,但可以作為函數(shù)名C、用戶自定義的標識符必須“見名知義”,如果隨意定義,則會出編譯錯誤D、標識符總是由字母、數(shù)字和下劃線組成,且第一個字符不得為數(shù)字標準答案:D知識點解析:標識符就是C語言中的變量名、函數(shù)名、數(shù)組名、文件名、類型名等。C語言合法標識符的命名規(guī)則是:①標識符由字母、數(shù)字和下劃線組成;②第一個字符必須為字母或下劃線;⑨大寫字母與小寫字母被認為是兩個不同的字符;④C語言規(guī)定了一個標識符允許的字符個數(shù),為32,超過的字符將不被識別。C語言的標識符可分為以下3類:①關鍵字,不能用于為自定義標識符命名。②預定義標識符。③用戶標識符。由用戶根據(jù)需要定義的標識符稱為用戶標識符,又稱自定義標識符,一般用來給變量、函數(shù)、數(shù)組等命名,一般做到見名知義,但是沒有特殊規(guī)定。14、已知大寫字母A的ASCII碼是65,小寫字母a的ASCII碼是97。以下不能將變量c中的大寫字母轉(zhuǎn)換為對應小寫字母的語句是A、c=(’A’+C)26-’a’B、c=C+32C、c=C-’A’+’a’D、c=(C一’A’)%26+’a’標準答案:A知識點解析:由題意可知,小寫字符a和大寫字符A的ASCII代碼相差為32,所以選項C能將大寫字符C的ASCII代碼轉(zhuǎn)換為小寫字符c的ASCII代碼;選項D和C左側(cè)的表達式都是大寫字符C與大寫字符A的差與’a’的ASCII代碼的和就是小寫字符c的ASCII代碼。而選項A中應該是加上’a’,而不是減去’a’。15、設文件指針fp已定義,執(zhí)行語句fp=fopen("file","w");后,下列針對文本文件file操作敘述的選項中正確的是()。A、只能寫不能讀B、寫操作結(jié)束后可以從頭開始讀C、可以在原有內(nèi)容后追加寫D、可以隨意讀和寫標準答案:A知識點解析:考查文件操作函數(shù)fopen的基礎知識。以w方式打開文件時只能寫不能讀。16、讀取二進制文件的函數(shù)調(diào)用形式為:fread(buffer,size,count,fp);,其中buffer代表的是()。A、一個內(nèi)存塊的字節(jié)數(shù)B、一個整型變量,代表待讀取的數(shù)據(jù)的字節(jié)數(shù)C、一個文件指針,指向待讀取的文件D、一個內(nèi)存塊的首地址,代表讀入數(shù)據(jù)存放的地址標準答案:D知識點解析:fread(void*buffer,sizetsize,sizetcount,F(xiàn)ILE*stream)的功能是從一個文件流中讀數(shù)據(jù),讀取count個元素,每個元素size字節(jié),如果調(diào)用成功,返回count。buffer用于接收數(shù)據(jù)的內(nèi)存地址,大小至少是size*count字節(jié);size是單個元素的大小,單位是字節(jié);count是元素的個數(shù),每個元素是size字節(jié);stream是輸入流。17、以下能正確定義字符串的語句是A、charstr="\x43":B、charstr[]="\0";C、charstr=";D、charstr[]={’\064’};標準答案:B知識點解析:字符串常量是用一對雙括號括起來的一串字符。它用字符數(shù)組來存放,不用一對大括號對括起來。18、設有表示學生選課的三張表,學生S(學號,姓名,性別,年齡,身份證號),課程C(課號,課名),選課SC(學號,課號,成績),則表SC的關鍵字(鍵或碼)為A、課號,成績B、學號,成績C、學號,課號D、學號,姓名,成績標準答案:C知識點解析:關鍵字是指屬性或?qū)傩缘慕M合,其值能夠唯一地標識一個元組,而在SC中學號和課號的組合可以對元組進行唯一的標識。19、C語言中double類型數(shù)據(jù)占字節(jié)數(shù)為A、4B、12C、8D、16標準答案:C知識點解析:double類型所占字節(jié)為8。20、以下函數(shù)按每行8個輸出數(shù)組中的數(shù)據(jù):voidfun(int*w,intn){inti;for(i=0;iA、if(i%8==0)printf("\n");B、if(i/8==0)continue;C、if(i/8==0)printf("\n");D、if(i%8==0)continue;標準答案:A知識點解析:本題考查判斷語句與循環(huán)語句。欲使每行輸出8個數(shù)據(jù),則必然使用取余運算,當i%8==0時先輸出一個換行符再輸出字符。選項D中,continue語句的作用是停止執(zhí)行本次循環(huán)位于continue后面的語句,而進入下一次循環(huán)。21、有以下程序#includevoidmain(){intc=0,k;for(k=1;k<3;k++)switch(k){default:c+=k;case2:c++;break;case4:c+=2;break;}printf("%d\n",c);}A、9B、7C、5D、3標準答案:D知識點解析:在這段程序中,整型變量c的初始值賦為0,在第一次執(zhí)行for循環(huán)語句時,因為此時變量k的值等于1,所以在switch語句中首先執(zhí)行default語句,給變量c的值加1,因為在default語句后面沒有break語句,所以就會接著執(zhí)行case2這條語句,再給變量c的值加1,其值變?yōu)?,這時退出switch語句塊,進入第二次for循環(huán),此時k的值等于2,就會執(zhí)行switch語句塊中的case2這條語句,再給變量c的值加1,這時變量c的值就是3,此時退出switch語句塊,循環(huán)變量k的值加1,成為3,此時已不再滿足循環(huán)條件,執(zhí)行程序中的最后一條語句,把變量c的值在屏幕上輸出。22、有以下程序#include#includevoidfun(chars[][10],intn){chart;inti,j;for(i=0;is[j][0]){t=s[i][0];s[i][0]=s[j][0];s[j][0]=t;}}main(){charss[5][10]={"bcc","bbcc","xy","aaaacc","aabcc");fun(ss,5);printf("%s,%s\n",ss[0],ss[4]};}程序的運行結(jié)果是A、aaaacc,xyB、bcc,aabccC、xy,aaaaccD、aabcc,bcc標準答案:C知識點解析:函數(shù)fun(chars[][10],intn)通過兩重for循環(huán)語句,比較二維字符數(shù)組s[][10]的每個字符串的首字符大小,如果前一個字符串首字符大于后一個字符串的首字符,則交換這兩個字符串的首字符。在豐函數(shù)中,語句fun(ss,5)的作用是對二維字符數(shù)組ss[5][10]的5個字符串的首字符進行從小到大的排序,不影響各個字符串另外的字符。所以排序結(jié)束后,5個字符串的第一個字符依次變?yōu)閍、a、b、b和x;最后輸出第1個和第4個字符串。23、若有以下程序,則程序的輸出結(jié)果是#ineludemain(){inta=0,b=0,c=0;c=(a-=++a),(a+=b,b+=4);printf("%d,%d,%d\n",a,b,c);)A、0,4,4B、1,4,1C、0,4,0D、1,4,4標準答案:C知識點解析:表達式c=(a-=++a),(a+=b,b+=4)相當于逗號表達式,首先計算c=(a-=++a),其中(a-=++a)等價于a=a-(++a),得到a的值0,c的值為0,在計算(a+=b,b+=4)時,a和b的初值為0,計算以后,a為0,b為4。24、有以下程序#includeintfun(){staticintx=1;x*=2:returnx;)main(){inti,s=1;for(i=1;i<=3;i++)s*=fun();pfintf("%d\n",s);}程序運行后的輸出結(jié)果是A、0B、10C、30D、64標準答案:D知識點解析:本題考查了靜態(tài)局部變量,該局部變量的值在函數(shù)調(diào)用結(jié)束后如果不消失而保留原值。函數(shù)fun的功能返回2的乘方,主函數(shù)fun函數(shù)調(diào)用3次,因此第一次s累乘2,第二次累乘4,第三次累乘8,即為2*4*8,值為64。25、有以下程序fun(intx)main(){intp;{if(x==0||x==1)return(3);printf("%d\n",fun(7));p=x-fun(x-2);}returnp;}執(zhí)行后的輸出結(jié)果是A、3B、7C、0D、2標準答案:D知識點解析:因為在函數(shù)fun(intx)中,如果參數(shù)x等于0或等于1時,返回值為“3”。否則“p=x-fun(x-2)”這是一個遞歸函數(shù)t所以在主函數(shù)調(diào)用fun(7)的時候,其過程為:“fun(7)=7-fun(5)=7-(5-fun(3))=7-(5-(3-fun(1)))=7-(5-(3-3))=7.5=2”,所以最后的輸出結(jié)果為2。26、以下敘述中正確的是A、對于變量而言,“定義”和“說明”這兩個詞實際上是同一個意思B、在復合語句中不能定義變量C、全局變量的存儲類別可以是靜態(tài)類D、函數(shù)的形式參數(shù)不屬于局部變量標準答案:C知識點解析:用static說明符說明全局變量時,此變量可稱作靜態(tài)全局變量。靜態(tài)全局變量只限于本編譯單位使用,不能被其他編譯單位所引用。在一個函數(shù)內(nèi)部定義的變量(包括形參)是局部變量,它只在本函數(shù)范圍內(nèi)有效。不同函數(shù)中可以使用相同名字的局部變量,它們代表不同的對象,互不影響。在函數(shù)內(nèi)部復合語句中也可以定義變量,這些變量都是局部變量,只在本復合語句中有效。27、以下數(shù)組定義中錯誤的是A、intx[][3]={0};B、intx[2][3]={{1,2},{3,4},{5,6}};C、intx[][3]={{1,2,3},{4,5,6}};D、intx[2][3]={1,2,3,4,5,6};標準答案:B知識點解析:二維數(shù)組的初始化有以下幾種形式:①分行進行初始化;②不分行的初始化;③部分數(shù)組元素初始化;④省略第一維的定義,不省略第二維的定義。在選項A中賦值號左邊定義了一個3行2列的二維數(shù)組,而右邊用2行3列的數(shù)字進行賦初值。所以出現(xiàn)了邊界的越界溢出而出錯。28、有以下程序#include<stdio.h>#defineN4voidfun(inta[][N],intb[]){inti;for(i=0;i<N;i++)b[i]=a[i][i]-a[i][N-1-i];}voidmain(){intx[N][N]={{1,2,3,4),{5,6,7,8),{9,10,11,12),{13,14,15,16}},y[N],i;fun(x,y);for(i=0;i<N;i++)printf("%d,",y[i]);printf("\n")A、-12,-3,0,0,B、-3,-1,1,3,C、0,1,2,3,D、-3,-3,-3,-3,標準答案:B知識點解析:fun函數(shù)的功能足求出二維數(shù)組a中第i行第i個元素與第N-1-i元素的差,賦給b[i]。在主函數(shù)中,把實參二維數(shù)組x和一維數(shù)組y傳遞給形參a和b,最后輸出一維數(shù)組y中元素的值。29、若有走義語句:doublex[5]={1.0,2.0,3.o,4.0,5.0),*p=x;則錯誤引用x數(shù)組元素的是A、*pB、x[5]C、*(p+1)D、*x標準答案:B知識點解析:本題考查數(shù)組和指向數(shù)組的指針。x是一個一維double類型的數(shù)組,長度為5,下標范圍是0-4,指針p指向數(shù)組x。選項A)中*p是取數(shù)組首元素x[0]的值;選項B)下標超出范圍;選項C),p+1表示x[1]的地址,因此*(p+1)是取x[1]元素值;選項D)中,數(shù)組名x本身代表數(shù)組的首地址,因此*x表示取元素x[0]的值。30、有以下程序#includeinta=1,b=2;voidfun1(inta,intb){printf("%d%d",a,b);}voidfun2(){a=3;b=4;}main(){fun1(5,6);fun2();printf("%d%d\n",a,b);}程序運行后的輸出結(jié)果是()。A、5634B、3456C、1256D、5612標準答案:A知識點解析:在一個源文件中如果外部變量和局部變量同名,則在該局部變量的作用域內(nèi),該外部變量會被"屏蔽",所以函數(shù)fun1()輸出的為局部變量a、b的值:56;fun2()改變的是全局變量a、b的值,輸出結(jié)果為34,答案選A。31、有如下程序#includevoidconvert(charch){if(ch<’D’)convert(ch+1);printf("%c",ch);}main(){convert(’A’);printf("\n");}程序運行后的輸出結(jié)果是()。A、DCBAB、ABCDC、AD、ABCDDCBA標準答案:A知識點解析:函數(shù)conver()的作用是輸出ASCII碼在字母′D′到字母ch之間的字符,答案選A)。32、有以下程序#include#includestructA{inta;charb[10];doublec;};voidf(structAt);main(){structAa={1001,"ZhangDa",1098.0};f(a);printf("%d,%s,%6.1f\n",a.a(chǎn),a.b,a.c);}voidf(structAt){t.a(chǎn)=1002;strcpy(t.b,"ChangRong");t.c=1202.0;}程序運行后的輸出結(jié)果是A、1002,ChangRong,1202.0B、1001,ChangRong,1098.0C、1001,ZhangDa,1098.0D、1002,ZhangDa,1202.0標準答案:C知識點解析:本題主要考查是的函數(shù)調(diào)用時參數(shù)之間的傳遞問題。在C語言中參數(shù)之間的傳遞是傳值,也就是把實參的值復制一份傳遞給形參,而實參的值不發(fā)生變化。所以對于本題來說,在主函數(shù)中執(zhí)行f(a),把結(jié)構體變量a的值復制一份傳遞給形參變量t,而實參變量a的值保持不變。33、若有以下程序#includeint*f(int*s,int*t){intk;if(*s<*t){k=*s;*s=*t;*t=k;}returns;}main(){inti=3,j=5,*p=&i,*q=&j,*r;r=f(p,q);printf("%d,%d,%d,%d,%d\n",i,j,*p,*q,*r);}則程序的輸出結(jié)果是()。A、5,3,5,3,5B、3,5,5,3,5C、3,5,3,5,5D、5,3,3,5,5標準答案:A知識點解析:考查指針與函數(shù)。該函數(shù)進行的是地址傳參,形參和實參指向的變量的值保持一致。函數(shù)f()中,如果(*s<*t)則將指針s、t中指向的變量的數(shù)據(jù)進行交換,s指向的地址中存放的是值較大的數(shù)據(jù)。函數(shù)調(diào)用結(jié)束后,p、q指向的值發(fā)生了改變,r和p的指向保持一致,所以答案選A。34、有以下程序#include<stdio.h>main()voidfun(char*c,intd){charb=’a’,a=’A’;{*c=*c+1;d=d+1;fun(&b,a);printf("%c,%c\n",b,a);printf("%c,%c,",*c,d);}}程序運行后的輸出結(jié)果是A、b,B,b,AB、b,B,B,AC、a,B,B,aD、a,B,a,B標準答案:A知識點解析:本題中fun函數(shù)的參數(shù)傳遞方式,形參c是傳地址,形參d是傳值,所以在主函數(shù)中,執(zhí)行脅時,把變量b的地址傳給了c,把a的值傳遞給了d,經(jīng)過運算,輸出的值為b.B。在主函數(shù)的輸出語句中,輸出變量b的值為b,變量a的值為A。35、有以下程序段TypedefstructNODE{inthum;structNODE*next;}OLD;以下敘述中正確的是A、以上的說明形式非法B、NODE是一個結(jié)構體類型C、OLD是一個結(jié)構型類型D、OLD是一個結(jié)構變量標準答案:C知識點解析:本題考查結(jié)構體和typedf類型定義。本題的聲明代碼相當于兩部分,首先定義structNODE,然后是一typedef定義OLD類型,因此OLD是結(jié)構體類型。選項C正確,其他選項錯誤。36、以下敘述中錯誤的是A、函數(shù)的返回值類型不能是結(jié)構體類型,只能是簡單類型B、只要類型相同,結(jié)構體變量之間可以整體賦值C、可以通過指針變量來訪問結(jié)構體變量的任何成員D、函數(shù)可以返回指向結(jié)構體變量的指針標準答案:A知識點解析:函數(shù)的返回值類型可以是結(jié)構體類型。結(jié)構體變量之間可以相互復制。37、在關系模型中,每一個二維表稱為一個A、關系B、屬性C、元組D、主碼(鍵)標準答案:A知識點解析:關系模型采用二維表來表示,即每個二維表稱為一個關系。38、有三個關系R,S和T如下:則由關系R和S得到關系T的操作是A、選擇B、差C、交D、并標準答案:D知識點解析:關系T中的元素與關系R和關系S中不同元素的總和,因此為并操作。39、下列與隊列結(jié)構有關聯(lián)的是A、函數(shù)的遞歸調(diào)用B、數(shù)組元素的引用C、多重循環(huán)的執(zhí)行D、先到先服務的作業(yè)調(diào)度標準答案:D知識點解析:隊列的修改是依先進先出的原則進行的,D正確。40、以下敘述中正確的是A、復合語句在語法上包含多條語句,其中不能定義局部變量B、花括號對{}只能用來表示函數(shù)的開頭和結(jié)尾,不能用于其他目的C、空語句就是指程序中的空行D、當用scanf從鍵盤輸入數(shù)據(jù)時,每行數(shù)據(jù)在沒按下回車鍵(Enter鍵)前,可以任意修改標準答案:D知識點解析:復合語句可以包含多條語句,在其中可以定義局部變量,所以A錯誤。花括號對{}不僅用來表示函數(shù)的開頭和結(jié)尾,也可以用于表示復合語句,所以B錯誤。C語言中的語句必須以分號";"結(jié)束,所以空語句表示為";",不是空行,所以C錯誤。國家二級C語言機試(選擇題)模擬試卷第3套一、選擇題(本題共25題,每題1.0分,共25分。)1、深度為5的完全二叉樹的結(jié)點數(shù)不可能是()。A、15B、16C、17D、18標準答案:A知識點解析:對于滿二叉樹,葉子結(jié)點的數(shù)目等于2n-1,n為深度,這里就是24=16。2、下列敘述中正確的是()。A、二分查找法只適用于順序存儲的有序線性表B、二分查找法適用于任何存儲結(jié)構的有序線性表C、二分查找法適用于有序循環(huán)鏈表D、二分查找法適用于有序雙向鏈表標準答案:A知識點解析:二分查找法(又稱對分查找法)只適用于順序存儲的有序表。在此所說的有序表是指線性表的中元素按值非遞減排列(即從小到大,但允許相鄰元素值相等)。3、以下程序運行后的輸出結(jié)果是()。#include<stdio.h>main(){inti=0,j=0,k=0,x=35;if(i)x--;elseif(j);if(k)x=3;elsex=4;prinff("%d\n",x);}A、4B、34C、3D、35標準答案:A知識點解析:本題是兩個并列的if語句。當inti=0;j=0,k=0,x=35時,i的邏輯值為0,故第一個if語句的條件為假,執(zhí)行else操作。又因j=0,故第二條if語句if(j)的條件仍為假,不執(zhí)行任何操作。接著順序執(zhí)行至if(k)語句,由于k=0,此if語句的條件仍為假,執(zhí)行其后的else語句,x=4,故最后x的值為4。4、設某棵樹的度為3,其中度為3、2、1的結(jié)點個數(shù)分別為3、0、4。則該樹中的葉子結(jié)點數(shù)為A、7B、8C、6D、不可能有這樣的樹標準答案:A知識點解析:樹的度是指一棵樹中,最大的結(jié)點的度稱為“樹的度”。根據(jù)題目可知本樹中沒有度為2的結(jié)點。樹的總結(jié)點=(度1*個數(shù)+度2*個數(shù)…)+1,這里我們設總結(jié)點數(shù)為n,那么n=3*3+2*0+1*4+1=14。樹的葉子結(jié)點數(shù)等于總結(jié)點減去所有度不為0的結(jié)點,也就是14.3-4=7。5、下列排序方法中,最壞情況下比較次數(shù)最少的是A、冒泡排序B、簡單選擇排序C、直接插入排序D、堆排序標準答案:D知識點解析:冒泡排序、簡單選擇排序和直接插入排序法在最壞的情況下比較次數(shù)為:n(n-1)/2。而堆排序法在最壞的情況下需要比較的次數(shù)為O(nlog2n)。其中堆排序的比較次數(shù)最少。6、表達式3.6-5/2+1.2+5%2的值是A、4.8B、3.3C、3.8D、4.3標準答案:C知識點解析:表達式的計算過程為:3.6-5/2+1.2+5%2=3.6.2+1.2+1=3.8。此題要注意5/2的結(jié)果是2,而不2.5,因為除法運算符兩邊的數(shù)值類型均為整型,故運算結(jié)果的數(shù)值類型也被認定為整型。7、下列選項中不符合良好程序設計風格的是A、源程序要文檔化B、數(shù)據(jù)說明的次序要規(guī)范化C、避免濫用goto語句D、模塊設計要保證高耦合、高內(nèi)聚標準答案:D知識點解析:一般來講,程序設計風格是指編寫程序時所表現(xiàn)出的特點、習慣和邏輯思路。程序設計風格總體而言應該強調(diào)簡單和清晰,程序必須是可以理解的??梢哉J為,著名的“清晰第一、效率第二”的論點已成為當今主導的程序設計風格。良好的程序設計風格主要應注重和考慮下列幾個因素:①源程序文檔化,包括下列三個方面:A)符號的命名應具有一定的含義;B)正確的注釋能夠幫助讀者理解程序;C)視覺組織,可以在程序中利用空格、空行、縮進等技巧使程序?qū)哟吻逦?。②?shù)據(jù)說明的方法,包括下列三個方面:A)數(shù)據(jù)說明的次序規(guī)范化;B)說明語句中變量安排有序化;C)使用注釋來說明復雜數(shù)據(jù)的結(jié)構。③語句的結(jié)構應該簡單直接,不應該為提高效率而把語句復雜化。④輸入和輸出方式和風格應盡可能方便用戶的使用。8、以下關于邏輯運算符兩側(cè)運算對象的敘述中正確的是A、只能是整數(shù)0或非0整數(shù)B、可以是結(jié)構體類型的數(shù)據(jù)C、可以是任意合法的表達式D、只能是整數(shù)0或1標準答案:C知識點解析:邏輯運算符兩側(cè)的運算對象叮以是任意合法的表達式。邏輯表達式的運算結(jié)果或者為1(“真”),或者為0(“假”)。9、有以下程序main(){chara,b,c,d;Scanf("%C%c",&a,&b);c=getchar();d=getchar();printf("%c%c%c%c\n",a,b,c,d);}當執(zhí)行程序時,按下列方式輸入數(shù)據(jù)(從第1列開始,代表回車,注意:回車也是一個字符)1234則輸出結(jié)果是A、12B、1234C、123D、1234標準答案:C知識點解析:scanf和getchar函數(shù)分別從鍵盤上讀入一個字符,因此輸入12空格34,則變量a中存放的為1,b中存放2,c中存放空格,d中存放3。10、不合法的C語言常量是()。A、3,141B、’314’C、314D、’\x7G’’標準答案:A知識點解析:選項A錯誤,多了逗號;選項B是字符常量;選項C是整型常量;選項D是字符常量。11、有以下函數(shù):intaaa(char*s){char*t=s:while(*t++);t一一:return(t—s);}以下關于aalt函數(shù)功能敘述正確的是()。A、將串s復制到串tB、比較兩個串的大小C、求字符串s的長度D、求字符串s所占字節(jié)數(shù)標準答案:C知識點解析:本題重點考查的知識點是while循環(huán)語句的應用。aaa.()函數(shù)中,首先定義了一個字符指針t指向形參s,然后通過一個while循環(huán)讓指針t不斷遞增,直到t指向字符串結(jié)束標識處。當t指向結(jié)束標識處時,由了后綴++運算符的原因,它還會被再遞增1,所以接下來的t一語句讓它回到束標識處。最后返回t—s,s還是指向字符串第一個字符處,而t指向了字符串結(jié)尾,故返回值為字符串的長度值,因此C選項正確。12、若有以下程序:#include<stdio.h>voidfun(inta[],intn){inti,j,t;for(i=1;i<n;i+=2)for(j=i+2;j<n;j+=2)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main(){intc[10]={10,9,8,7,6,5,4,3,2,1},i;fun(c,10);for(i=0;i<10;i++)printf(″%d,″,c[i]);printf(″\n″);}則程序的輸出結(jié)果是()。A、1,10,3,8,5,6,7,4,9,2,B、10,9,8,7,6,5,4,3,2,1,C、2,9,4,7,6,5,8,3,10,1,D、10,1,8,3,6,5,4,7,2,9,標準答案:D知識點解析:該題首先對一維數(shù)組進行初始化,c[0]到c[9]依次賦值為10到1。fun(c,10);語句調(diào)用fun函數(shù),fun函數(shù)的功能是將一維數(shù)組偶數(shù)位元素的數(shù)值由小到大排序,最后將排好序的新的一維數(shù)組進行輸出、故D選項正確。13、若有代數(shù)式(其中e僅代表自然對數(shù)的底數(shù),不是變量),則以下能夠正確表示該代數(shù)式的C語言表達式是()。A、sqrt(fabs(pow(n,x)+exp(X)))B、sqrt(fabs(pow(n,x)+pow(x,e)))C、sqrt(abs(n^x+e^x))D、sqrt(fabs(pow(x,n)+exp(x)))標準答案:A知識點解析:B選項中函數(shù)pow(x,e)錯誤,應該直接使用exp(x)函數(shù)。C選項中函數(shù)abs(n^x+e^x)錯誤,應該使用fabs()返回浮點數(shù)的絕對值。D選項中pow(x,n)參數(shù)順序錯誤。14、下面選項中合法的字符常量是A、XB、’abc’C、’X’D、’\’標準答案:C知識點解析:在程序中用單引號把一個字符括起來作為字符常量。但是為了表示字符“\”要用兩個“\\”表示一個反斜杠。15、有以下函數(shù):intfun(char*x,char*y){intn=0;while((*x==*y)&&*x!=’\0’){x++;y++;n++:}returnn:}函數(shù)的功能是()。A、將y所指字符串賦給x所指存儲空間B、查找x和y所指字符串中是否有’\0’C、統(tǒng)計x和y所指字符串中最前面連續(xù)相同的字符個數(shù)D、統(tǒng)計x和y所指字符串中相同的字符個數(shù)標準答案:C知識點解析:本題中由循環(huán)條件可知,遇到’\0’或x與y所指的字符的值不等中的一個條件時就結(jié)束,所以功能是統(tǒng)計x和y所指字符串中最前面連續(xù)相同的字符個數(shù)。16、設有定義:intk=1,m=2;floatf=7;,則以下選項中錯誤的表達式是A、k=k>=kB、-k++C、k%int(0D、k>=f=m標準答案:C知識點解析:本題考查了賦值表達式,在賦值表達式中,等號的左邊必須是變量,等號右邊可以是變量、表達式或者常量。選項A)是一個賦值表達式;選項B)是一個表達式:選項C)是計算余數(shù)表達式;選項D)錯誤,等號的左邊不是變量。17、以下選項中不能作為c語言合法常量的是A、’cd’B、0.1e+6C、\aD、’\011’標準答案:A知識點解析:常量指的是在程序的運行過程中,其值不能被改變的量。在C語言中,包括整型常量、實型常量、字符常量和字符串常量等類型。選項B)0.1e+6是用指數(shù)形式表示的實型常量。在C語言中,用以“e”或“E”后一個整數(shù)來表示以10為底的冪數(shù)。以用這種形式表示實型常量時要注意C語言的語法規(guī)定,字母e或E之前必須要有數(shù)字,且e或E后面的指數(shù)必須為整數(shù),并且在字母e或E的前后以及數(shù)字之間不得插入空格。選項C)中用雙引號括起來表示的字符串“\a”。選項D)中’\011’表示用單引號括起來的轉(zhuǎn)義字符八制進數(shù)011。選項A)表示的字符常量是非法的,在用單引號表示的字符常量中,只能包含一個字符,而選項A)中包含兩個字符。18、以下敘述中正確的是A、由&&構成的邏輯表達式與由||構成的邏輯表達式都有“短路”現(xiàn)象B、C語言的關系表達式:0<xC、邏輯“非”(即運算符!)的運算級別是最低的D、邏輯“或”(即運算符||)的運算級別比算術運算要高標準答案:A知識點解析:邏輯表達式的運算比較復雜,有短路現(xiàn)象,也就是首先計算“邏輯與”或者“邏輯或”運算的第一個運算量的值,根據(jù)表達式的值決定是否進行第二個量的值的計算?!斑壿嬇c”和“邏輯或”運算低于關系運算和算術運算。但是“邏輯非”運算卻高于算術運算。19、有以下程序#includemain(){inta=0,b=0;/*給a賦值a=10;b=20;給b賦值*/printf("a+b=%d\n",a+b);/*輸出計算結(jié)果*/}程序運行后的輸出結(jié)果是A、出錯B、a+b=30C、a+b=10D、a+b=0標準答案:D知識點解析:注釋語句可以在一行也可以在多行,用/*……*/或//表示,。它不參與程序的運行,所以a與b的值仍然為0,所以打印的結(jié)果為a+b=0。20、有以下程序#includemain(){inti=1,k=0;for(;i<6;){switch(i%3){case0:k++;case1:k++;break;case2:k++;continue;}i+=1;}printf("%d\n",k);}程序的運行情況是()。A、形成無限循環(huán)B、輸出6C、輸出5D、輸出4標準答案:A知識點解析:break語句用于循環(huán)體,可以跳出當前層循環(huán),continue語句的作用則是跳過當前循環(huán)層余下未執(zhí)行的語句,繼續(xù)執(zhí)行下一次循環(huán)。在該程序中當i為2的時候執(zhí)行語句"case2:k++;continue;"跳過了i自加語句"i+=1;",所以i值不再變化,程序陷入死循環(huán),答案選A。21、有下列程序:inta=4;intf(intn){intt=0;staticinta=5;if(n%2){inta=6;t+=a++;}else{inta=7;t+=a++;}returnt+a++;}main(){ints=a,i=0;for(;i<2;i++)s+=f(i);printf("%d\n",s);}程序運行后的輸出結(jié)果是A、28B、24C、32D、36標準答案:A知識點解析:程序中定義了全局整型變量a=4。在intf(intn)函數(shù)中定義了局部靜態(tài)整型變量并進行了初始化即staticinta=5。在intf(intn)函數(shù)中對n是否是偶數(shù)進行判斷,如果n是奇數(shù),則函數(shù)的返回值為11,局部靜態(tài)整型變量a=6;如果n是偶數(shù),則函數(shù)的返回值為12,局部靜態(tài)整型變量a=6。所以在main()函數(shù)中循環(huán)首先執(zhí)行s+=f(0)語句,而f(0)返回值12,所以第一次循環(huán)結(jié)束s的值等于4+12=16:第二次開始執(zhí)行f(1)時,在f(1)中執(zhí)行if(n%2){inta=6;t+=a++;}和returnt+a++;這兩條語句,這時t=6,a=6(靜態(tài)局部變量第一次循環(huán)后其值加1值不釋放,執(zhí)行第二次循環(huán)量,其值仍有效),所以f(1)的返回值等于12。再在主函數(shù)中執(zhí)行s+=f(1)語句,即16+12=28。22、有以下程序#includeintfun1(doublea){return(int)(a*=a);}intfun2(doublex,doubley){doublea=0,b=0;a=fun1(x);b=fun1(y);return(int)(a+b);}main(){doublew;w=fun2(1.1,2.0);printf("%4.2f",w);}程序執(zhí)行后輸出結(jié)果是()。A、5.00B、5C、5.21D、0.0標準答案:A知識點解析:考查函數(shù)的嵌套調(diào)用。w=fun2(1.1,2.0)=(int)(a+b)=(int)(fun1(1.1)+fun1(2.0))=(int)(1.1*1.1+2.0*2.0)=5,所以答案選A。23、若變量已正確定義,有以下程序段i=0;doprintf("%d,",i);while(i++);printf("%d\n",i);其輸出結(jié)果是A、0,0B、1,1C、0,1D、程序進入無限循環(huán)標準答案:C知識點解析:do…while循環(huán)的執(zhí)行過程如下:①執(zhí)行do后面的循環(huán)體中的語句。②計算while后一對圓括號中表達式的值。當值為非0時,轉(zhuǎn)去執(zhí)行步驟①;當值為0時,執(zhí)行步驟③。③退出do…while循環(huán)。對于本題變量i的初始值等于“0”,接著執(zhí)行do后面的循環(huán)體中的語句,輸出變量i的值0。再判斷while后面括號中表達式i++的值,其值為0,所以循環(huán)結(jié)束。此時變量i的值經(jīng)過自加已經(jīng)變?yōu)?,所以再次輸出i的值“1”。24、有以下程序voidfun(char*s){chara[10];main(){char*p="PROGRAM";strcpy(a,"STRING");fun(p);s=a;}printf("%s\n",p);}程序運行后的輸出結(jié)果是(此處□代表空格)A、STRING□□□□B、PROGRAMC、STRING□□□D、STRING標準答案:B知識點解析:函數(shù)fun的主要功能是把字符串"STRING",存放到字符數(shù)組a中,s指向該字符串,函數(shù)調(diào)用結(jié)束以后,釋放s和a指向的空間。主函數(shù)調(diào)用fun(p),并不能更改D的值,因此p的指向沒有改變。25、C語言主要是借助以下哪種手段來實現(xiàn)程序模塊化A、定義函數(shù)B、定義常量和外部變量C、使用豐富的數(shù)據(jù)類型D、使用三種基本結(jié)構語句標準答案:A知識點解析:C語言程序的模塊化通過函數(shù)來體現(xiàn),所以選擇A。國家二級C語言機試(選擇題)模擬試卷第4套一、選擇題(本題共25題,每題1.0分,共25分。)1、下列敘述中正確的是A、循環(huán)隊列是隊列的一種鏈式存儲結(jié)構B、循環(huán)隊列是隊列的一種順序存儲結(jié)構C、循環(huán)隊列是非線性結(jié)構D、循環(huán)隊列是一種邏輯結(jié)構標準答案:B知識點解析:本題主要考查循環(huán)隊列的概念,循環(huán)隊列作為隊列的一種也應該是線性結(jié)構。隊列是一種邏輯結(jié)構,而循環(huán)隊列是一種順序存儲結(jié)構的隊列。2、下列敘述中正確的是A、線性表的鏈式存儲結(jié)構與順序存儲結(jié)構所需要的存儲空間是相同的B、線性表的鏈式存儲結(jié)構所需要的存儲空間一般要多于順序存儲結(jié)構C、線性表的鏈式存儲結(jié)構所需要的存儲空間一般要少于順序存儲結(jié)構D、以上都不正確標準答案:B知識點解析:線性表的存儲分為順序存儲和鏈式存儲。在順序存儲中,所有元素所占的存儲空間是連續(xù)的。而在鏈式存儲的方式中,將存儲空間的每一個存儲結(jié)點分為兩部分,一部分用于存儲數(shù)據(jù)元素的值,稱為數(shù)據(jù)域;另一部分用于存儲下一個元素的存儲序號,稱為指針域。所以線性表的鏈式存儲方式比順序存儲方式的存儲空間要大一些。3、設有定義:longx=745321L,則能正確輸出變量x的語句是()。A、printf("x=%d\n",x);B、printf("x=%LD\n",x);C、printf("x=%d1\n",x);D、printf("x=%1d\n",x);標準答案:D知識點解析:本題考查C語言中長整型數(shù)據(jù)的輸出。在題中格式控制符只有采用格式字符%1d,且必須是小寫字母d,才能表示輸出長整型數(shù)據(jù)x。4、在最壞情況下()。A、快速排序的時間復雜度比冒泡排序的時間復雜度要小B、快速排序的時間復雜度比希爾排序的時間復雜度要小C、希爾排序的時間復雜度比直接插入排序的時間復雜度要小D、快速排序的時間復雜度與希爾排序的時間復雜度是一樣的標準答案:C知識點解析:在最壞情況下,快速排序、冒泡排序和直接插入排序所需要的比較次數(shù)為O(n2),希爾排序所需要的比較次數(shù)為O(n1.5),所以答案選C。5、下面程序的輸出是()。main(){inti=9;for(;i>0;i--){if(i%3==0){printf("%d",--i);continue;}}}A、741B、852C、963D、875421標準答案:B知識點解析:本題考查continue的應用。程序中for循環(huán)體內(nèi)有一個continue語句,它的功能是提前結(jié)束本次循環(huán)體(即循環(huán)體的后半部分不執(zhí)行了),直接來到下一次循環(huán)的條件判斷。本題中,當i值為3的倍數(shù)(9,6,3)時,表達式i%3值為0,輸出--i(8,5,2),否則無輸出。第6次循環(huán)結(jié)束后,i--使i得0,此時i>0為假,循環(huán)結(jié)束。6、若有定義語句:chars[10]="1234567\0\0";,則strlen(s)的值是A、7B、8C、9D、10標準答案:A知識點解析:本題考查字符串數(shù)組和字符串函數(shù)。數(shù)組s有7個數(shù)字,然后跟著結(jié)束符“\0”,因此數(shù)組s的長度為7。7、若有定義:doublea=22;inti=0,k=18;,則不符合C語言規(guī)定的賦值語句是()。A、i=(a+k)<=(i+k);B、i=a%11;C、a=a++,i++D、i=!a;標準答案:B知識點解析:取模運算符“%”、二元運算符具有左結(jié)合性,參與運算的量均為整型。B選項中的a變量是double實型,不符合規(guī)定。8、下列敘述中正確的是A、對象標識具有唯一性B、屬性是對象的動態(tài)屬性C、任何對象都必須有多態(tài)性D、對象是對象屬性和方法的封裝體標準答案:A知識點解析:每個對象都有自身唯一的標識,通過這種標識,可找到相應的對象。在對象的整個生命期中,它的標識都不改變,不同的對象不能有相同的標識。9、有以下程序#includeintfun(inta,intb){if(b==0)returna;elsereturn(fun(--a,--b));}main(){printf("%dha",fun(4,2));)程序的運行結(jié)果是A、1B、2C、3D、4標準答案:B知識點解析:由程序可知函數(shù)fun(inta,intb)是一個遞歸函數(shù)。所以當主函數(shù)中調(diào)用fun(4,2)時,其執(zhí)行過程如下:fun(4,2)->fun(3,1)->fun(2,0),其返回值為2。10、以下關于C語言數(shù)據(jù)類型使用的敘述中錯誤的是A、若要保存帶有多位小數(shù)的數(shù)據(jù),可使用雙精度類型B、若要處理如“人員信息”等含有不同類型的相關數(shù)據(jù),應自定義結(jié)構體類型C、若只處理“真”和“假”兩種邏輯值,應使用邏輯類型D、整數(shù)類型表示的自然數(shù)是準確無誤差的標準答案:C知識點解析:在C語言中沒有定義邏輯類型,而是用0代表假,用非零代表真。11、以下關于retum語句的敘述中正確的是A、一個自定義函數(shù)中必須有一條return語句B、一個自定義函數(shù)中可以根據(jù)不同情況設置多條return語句C、定義成yoid類型的函數(shù)中可以有帶返回值的return語句D、沒有retum語句的自定義函數(shù)在執(zhí)行結(jié)束時不能返回到調(diào)用處標準答案:B知識點解析:retum語句土要用于返回函數(shù)的值。在一個自定義函數(shù)中,可以根據(jù)不同的情況設置多條retum語句返回函數(shù)的值。12、以下敘述中錯誤的是A、C程序在運行過程中所有計算都以二進制方式進行B、所有C程序都需要編譯鏈接無誤后才能運行C、C程序在運行過程中所有計算都以十進制方式進行D、C程序中字符變量存放的是字符的ASCII值標準答案:C知識點解析:計算機程序都是編譯為二進制的代碼,計算機才會執(zhí)行。13、以下選項中表示一個合法的常量是(說明:符號□表示空格)A、123E0.2B、2.7e□C、0999□D、0Xab標準答案:D知識點解析:本題考查C語言中的常量。選項A字母E后面必須是整型數(shù),浮點數(shù)錯誤:選項B字母e后面沒有整型數(shù):選項C以0開始表示8進制數(shù),8進制數(shù)沒有9;選項D是一個正確的16進制常數(shù)。14、以下合法的字符型常量是A、’\x13’B、’\081’C、’65’D、’/n’標準答案:A知識點解析:本題考查字符型常量。選項A)正確,使用了轉(zhuǎn)義字符“\”,x13表示16進制的13;選項B)同樣使用了轉(zhuǎn)義字符,但081錯誤,以0開始表示8進制,8進制數(shù)字的范圍是0.7,沒有8;選項C)錯誤,65是一個字符串,不是字符;選項D)錯誤,換行符是“\n”。15、有以下程序#includemain(){inta=5,b=1,t;t=(a<<2)|b;printf("%d\n",t);}程序運行后的輸出結(jié)果是()。A、1B、11C、6D、21標準答案:D知識點解析:本題考查位運算,以及按位或操作,將a左移一位相當于是將a乘以了4,所以a<<2等于20,二進制表示為00010100,與b按位或得到00010101,即21,所以選項D正確。16、有以下程序#includeintfun(char*s){char*p=s;while(*p!=0)p++;return(p-s);}main(){printf("%d\n",fun("goodbey!"));}程序的輸出結(jié)果是A、6B、8C、0D、7標準答案:B知識點解析:函數(shù)fun的主要功能是計算字符串中實際字符的個數(shù),因此"goodbey!"含有字符為8,返回值為8。17、以下敘述中正確的是A、函數(shù)名代表該函數(shù)的入口地址B、所有函數(shù)均不能接受函數(shù)名作為實參傳入C、函數(shù)體中的語句不能出現(xiàn)對自己的調(diào)用D、如果函數(shù)帶有參數(shù),就不能調(diào)用自己標準答案:A知識點解析:函數(shù)形、實參傳遞的時候,要求對應位置類型一致即可,如果實參為函數(shù)名,可以定義相應的形參為指向函數(shù)的指針變量來獲得該函數(shù)的入口地址,因此選項B)錯誤的,在C語言中允許進行遞歸調(diào)用,即自己調(diào)用自己,選項C)和選項D)是錯誤的。18、以下程序的主函數(shù)中調(diào)用了其前面定義的fun函數(shù)#include<stdio.h>……main(){doublea[15],k;k=fun(a);}則以下選項中錯誤的fun函數(shù)首部是A、doublefun(doublea[15])B、doublefun(double*a)C、doublefun(doublea[])D、doublefun(doublea)標準答案:D知識點解析:本題考查函數(shù)的定義和調(diào)用。根據(jù)對fun函數(shù)的調(diào)用可知,fun函數(shù)的返回值為double類型的,輸入?yún)?shù)是一個double類型的地址(指針),因此選項D)錯誤。19、有下列程序:#include/*fun函數(shù)的功能是將a所指數(shù)組元素從大到小排序*/voidfun(int*a,intn)main(){intt,i,j;{intc[10]={1,2,3,4,5,6,7,8,9,0),j;for(i=0;iA、1,2,3,4,9,8,7,6,5,0,B、0,9,8,7,6,5,1,2,3,4,C、0,9,8,7,6,5,4,3,2,1,D、1,2,3,4,5,6,7,8,9,0,標準答案:A知識點解析:fun()函數(shù)的功能是對數(shù)組a[]的元素從大到小進行排序。所以在主函數(shù)執(zhí)行fun(c+4,6)語句時,將從數(shù)組c的第5個元素開始的后6個元素進行從大到小排序。排序之后,數(shù)組c的內(nèi)容變?yōu)閧1,2,3,4,9,8,7,6,5,0}。20、有以下程序#include<stdio.h>intfuna(inta,intb){retuma+b;}intfunb(inta,intb){returna-b;}intsss(int(*t)(),intx,inty){retum((*t)(x,y));}main(){intx;X=SSS(funa,9,3);x+=sss(funb,8,3);printf("%d\n",x);}程序運行后的輸出結(jié)果是A、17B、23C、24D、22標準答案:A知識點解析:函數(shù)funa的功能計算兩個數(shù)據(jù)的和,funb的功能計算兩個數(shù)據(jù)的差,函數(shù)sss中利用指向函數(shù)的指針作為函數(shù)的參數(shù),可以在調(diào)用的時候,根據(jù)接收的函數(shù)地址來決定調(diào)用那一個函數(shù)。主函數(shù)中調(diào)用x=sss(funa,9,3),將funa函數(shù)的地址傳遞給t,因此sss函數(shù)成為求兩個數(shù)據(jù)的和12,繼續(xù)將funb函數(shù)地址傳給t,求兩個數(shù)據(jù)差為5,和s累加后結(jié)果為17。21、以下敘述中正確的是A、charca[3][5]={"A","BB","CCC"};是不合語法的B、字符串數(shù)組,是指數(shù)組中的每個元素都是一個存放字符串的一維數(shù)組C、charca[][5]={"A","BB","CCC"};是不合語法的D、char*ca[3]={"A","BB","CCC"};是不合語法的標準答案:B知識點解析:字符串數(shù)組,也就是二維字符數(shù)組,其中每個元素為一個字符串,選項B)的說法正確。選項A)和C)對于ca的定義是正確的。選項D)定義一個指針數(shù)組,可以保存多個字符串的首地址。22、在數(shù)據(jù)庫設計中,將E-R圖轉(zhuǎn)換成關系數(shù)據(jù)模型的過程屬于()。A、需求分析階段B、概念設計階段C、邏輯設計階段D、物理設計階段標準答案:C知識點解析:E-R圖轉(zhuǎn)換成關系模型數(shù)據(jù)則是把圖形分析出來的聯(lián)系反映到數(shù)據(jù)庫中,即設計出表,所以屬于邏輯設計階段。23、有以下程序:#includemain(){chars[]="012xy\08s34f4w2";inti,n=0;for(i=0;s[i]!=0;i++)if(s[i]>=’0’&&s[i]<=’9’)n++;printf("%d\n",n);}程序運行后的輸出結(jié)果是()。A、0B、3C、7D、8標準答案:B知識點解析:本題中遇到"\"字符循環(huán)結(jié)束,所以只統(tǒng)計"\"之前的數(shù)字字符,所以為3。24、數(shù)據(jù)庫設計過程不包括A、概念設計B、邏輯設計C、物理設計D、算法設計標準答案:D知識點解析:數(shù)據(jù)庫設計過程主要包括需求分析、、概念結(jié)構設計、邏輯結(jié)構分析、數(shù)據(jù)庫物理設計、數(shù)據(jù)庫實施、數(shù)據(jù)庫運行和維護階段。答案為D選項。25、若有以下程序段structst{intn;structst*next;};structsta[3]={5,&a[1],7,&a[2],9,’\0’},*p;p=&a[0];則以下選項中值為6的表達式是A、p->nB、(*p).nC、p->n++D、++(p->n)標準答案:D知識點解析:本題考查結(jié)構體變量的引用,其中a為定義的結(jié)構體數(shù)組,D選項中p->n為5,++(p->n)為6,所以D選項正確。國家二級C語言機試(選擇題)模擬試卷第5套一、選擇題(本題共25題,每題1.0分,共25分。)1、下列數(shù)據(jù)結(jié)構中,屬于非線性結(jié)構的是A、循環(huán)隊列B、帶鏈隊列C、二叉樹D、帶鏈棧標準答案:C知識點解析:根據(jù)數(shù)據(jù)結(jié)構中各數(shù)據(jù)元素之間的前后件關系的復雜程度,一般將數(shù)據(jù)結(jié)構分為兩大類:線性結(jié)構和非線性結(jié)構。循環(huán)隊列、帶鏈隊列和帶鏈棧都是線性結(jié)構,而二叉樹是非線性結(jié)構。2、設有定義:doublex=2.12;,則以下各項中不能完整輸出變量x值的語句是()。A、prinff(″x=%5.0f\n″,x);B、printf(″x=%f\n″,x);C、printf(″x=%lf\n″,x);D、printf(″x=%0.5f\n″,x);標準答案:

溫馨提示

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

評論

0/150

提交評論