![國家二級(C語言)機試模擬試卷12(共343題)_第1頁](http://file4.renrendoc.com/view2/M01/3E/30/wKhkFma6tCGAOeHAAAF_Ke5W42E236.jpg)
![國家二級(C語言)機試模擬試卷12(共343題)_第2頁](http://file4.renrendoc.com/view2/M01/3E/30/wKhkFma6tCGAOeHAAAF_Ke5W42E2362.jpg)
![國家二級(C語言)機試模擬試卷12(共343題)_第3頁](http://file4.renrendoc.com/view2/M01/3E/30/wKhkFma6tCGAOeHAAAF_Ke5W42E2363.jpg)
![國家二級(C語言)機試模擬試卷12(共343題)_第4頁](http://file4.renrendoc.com/view2/M01/3E/30/wKhkFma6tCGAOeHAAAF_Ke5W42E2364.jpg)
![國家二級(C語言)機試模擬試卷12(共343題)_第5頁](http://file4.renrendoc.com/view2/M01/3E/30/wKhkFma6tCGAOeHAAAF_Ke5W42E2365.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
國家二級(C語言)機試模擬試卷12(共9套)(共343題)國家二級(C語言)機試模擬試卷第1套一、選擇題(本題共39題,每題1.0分,共39分。)1、一間宿舍可住多個學生,則實體宿舍和學生之間的聯(lián)系是()。A、一對一B、一對多C、多對一D、多對多標準答案:B知識點解析:實體間的聯(lián)系有如下情況:①一對一(1:1);②一對多(1:m);③多對多(m:n)。本題中,一間宿舍對應多個學生,那么宿舍和學生之間的聯(lián)系是一對多,學生和宿舍的聯(lián)系是多對一。2、對長度為n的線性表排序,在最壞情況下,比較次數(shù)不是n(n-1)/2的排序方法是()。A、快速排序B、冒泡排序C、直接插入排序D、堆排序標準答案:D知識點解析:除了堆排序算法的比較次數(shù)是O(nlog2,n),其他的都是,n(n-1)/2。3、以下4個選項,不能看作一條語句的是()。A、{;}B、intx=0,y=1,z=0;C、if(1a);D、if(b==0)m=1;n=2;標準答案:D知識點解析:if語句是用來判定所給的條件是否滿足,根據(jù)判定的結(jié)果(真或假)決定執(zhí)行給出的兩種操作之一。在if和else后面可以只含一個內(nèi)嵌的操作語句,也可以有多個操作語句,此時用花括號“{}”將幾個語句括起來成為一個復合語句。選項D中沒有將兩個操作語句括起來,不能看作一條語句。4、運行下面程序時,從鍵盤輸入字母A,則輸出結(jié)果是()。#include<stdio.h>main(){charch;ch=getchar();switch(ch){case’A’:printf(’’AAAA\n’’);case’B’:printf(’’BBBBkn’’);default:printf(’’CCCC\n’’);}}A、AAAAB、AAAABBBBC、AAAABBBBCCCCD、AAAACCCC標準答案:C知識點解析:本題考查“switch”語句。因為“ch=A”,所以第一個switch語句,執(zhí)行“case’A’”后面的語句,輸出AAAA,沒有遇到break語句,所以接著再執(zhí)行“case’B’”和default,分別輸出BBBB和CCCC。5、請閱讀以下程序:#include#includevoidfun(intb[])main(){staticinti=0;{intk,a[5]={1,3,5,4,9};Do{b[i]+=b[i+1];fun(a);}while(++i<2);}for(k=0;k<5;k++)printf("%d",a[k]);}上面程序的輸出是()。A、13579B、48579C、48549D、48999標準答案:C知識點解析:本題考查的是for循環(huán)以及while循環(huán)。fun函數(shù)中定義了靜態(tài)變量i=0,fun(a)使得a[0]=a[0]+a[1]=4,a[1]=a[1]+a[2]=8,此時i的值變?yōu)?,++i<2不成立,所以do-while循環(huán)結(jié)束,輸出數(shù)組a的各元素即得到48549。6、下列各選項中,不屬于序言性注釋的是()。A、程序標題B、程序設計者C、主要算法D、數(shù)據(jù)狀態(tài)標準答案:D知識點解析:注釋一般為序言性注釋和功能性注釋。序言性注釋常位于程序開頭部分,它包括程序標題、程序功能說明、主要算法、接口說明、程序位置、開發(fā)簡歷、程序設計者、復審者、復審日期及修改日期等。功能性注釋一般嵌在源程序體之中,用于描述其后的語句或程序的主要功能。7、有三個關(guān)系R、S和T如下:則下列操作中正確的是()。A、T=R∩SB、T=R∪SC、T=R×SD、T=R-S標準答案:D知識點解析:圖中關(guān)系R比關(guān)系s多一行T中的元組,故由關(guān)系R和S得到關(guān)系T的操作是差。8、有以下程序:#include<stdio.h>main(){intb[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;for(i=0;i<3;i++)for(j=i;j<=i;j++)t+=b[i][b[j][i]];printf("%d\n",t);}程序運行后的輸出結(jié)果是()。A、3B、4C、1D、9標準答案:B知識點解析:每次內(nèi)循環(huán)只循環(huán)一次就結(jié)束,第一次外循環(huán)時t=t+b[0][b[0][o]]=1+b[0][0]=1+0=1;第二次外循環(huán)時t=t+b[1][b[1][1]]=1+b[1][1]=1+1=2;第三次外循環(huán)時t=t+b[2][b[2][2]]=2+b[2][2]=2+2=4。9、有以下程序:#include<stdio.h>voidfun(intp){intd=2;p=d++;printf("%d",p);}main(){inta=1:fun(a);printf("%d\n",a);}程序運行后的輸出結(jié)果是()。A、32B、12C、21D、22標準答案:C知識點解析:C語言中函數(shù)參數(shù)傳遞滿足“單向傳遞”,實現(xiàn)傳遞值的功能,實參能傳給形參,形參卻不能傳回給實參。fun函數(shù)體內(nèi)輸出p的值為2,并不影響到fun函數(shù)外a的值,a的值在main函數(shù)內(nèi)依然為1。10、設有如下函數(shù)定義:#include<stdio.h>intfun(intk){if(k<1)return0;elseif(k==1)return1;elsereturnfun(k-1)+1;}若執(zhí)行調(diào)用語句“n=fun(3);”,則函數(shù)fun總共被調(diào)用的次數(shù)是()。A、2B、4C、4D、5標準答案:B知識點解析:首先n=fun(3),3被當作參數(shù)傳遞進去,這就進行了一次調(diào)用,3被當做參數(shù)傳進去后,程序會執(zhí)行這句elsereturnfun(k-1)+1;這就調(diào)用了第二次,而參數(shù)是3-1也就是2。2被當做參數(shù)傳進去后,程序會執(zhí)行這句elsereturnfun(k-1)+1;這就調(diào)用了第三次,而參數(shù)是2-1也就是1。1被當做參數(shù)傳進去后,程序會執(zhí)行這句elseif(k==1)return1;不再遞歸調(diào)用,所以最終結(jié)果為3次。11、交換兩個變量的值,不允許用臨時變量,應該使用下列()位運算符。A、&B、^C、‖D、~標準答案:B知識點解析:按邏輯位運算的特定作用主要有3點:①用按位與運算將特定位清0或保留特定位;②用按位或運算將特定的位置設置為1;③用按位異或運算將某個變量的特定位翻轉(zhuǎn)或交換兩個變量的值。12、運行下列程序時,若輸入數(shù)據(jù)為“321”,則輸出結(jié)果是()。main(){intnum,i,j,k,s;scanf(“%d”,&num);if(num>99)s=3:elseif(num>9)s=2:elses=1;i=num/100;j=(num—i*100)/10;k=(num—i*100-j*10);switch(s){case3:printf(“%d%d%d\n”,k,j,i);break;case2:printf(“%d%d\n”,k,j);case1:printf(“%d\n”,k);}}A、123B、1,2,3C、321D、3,2,1標準答案:A知識點解析:本題考查if-else語句和switch語句。scanf函數(shù)通過鍵盤讀入num的值。因為num=321>99,所以s=3,i=3,i=2,k=1。因為s=3,所以執(zhí)行case3,輸出k,i,i的值,然后通過break結(jié)束程序。13、有以下程序#include<stdio.h>#defineS1(z)4*z+4*(z)#defineS2(x,y)4*(x)*(y)+y*xmain(){inta=1,b=2;printf("%d,",S1(a+b));printf("%d,",S2(a,b)+S1(3));printf("%d",S2(3+a,b+3));程序執(zhí)行后的輸出結(jié)果是()。A、18,34,100B、24,34,92C、24,34,100D、18,34,92標準答案:D知識點解析:程序中S1和S2都是宏定義,所以S1(a+b)宏展開后的表達式為:4*a+b+4*(a+b),即4*1=1+2+4*(1+2),結(jié)果為18;S2(a,b)宏展開的表達式為:4*(a)*(b)+b*a,即4*(1)*(2)+2*1,結(jié)果為10;S1(3)宏展開后的表達式為:4*3+4*(3),結(jié)果為24;S2(3+a,b+3)宏展開的表達式為:4*(3+a)*(b+3)+b+3*3+a,即4*(3+1)*(2+3)+2+3*3+1,結(jié)果為92,本題輸出:18,34,92,答案為D。14、設p是指針變量,語句p=NULL;等價于()。A、p=0;B、p=’’;C、p="";D、p=’0’;標準答案:A知識點解析:本題考查指向指針的指針。i是int類型的變量,p為基本類型為int的指針變量,r為二級指針,指向的是指針p的地址,因此,*p就代表i;**r就代表*p,也等價于i。二級指針作為函數(shù)參數(shù),形參和實參指向同一個地址空間,兩者的改變保持同步。函數(shù)fun()的功能是將r指向的存有變量i的地址的指針變量改為指向存有變量k的地址的指針變量,*p的值發(fā)生了改變。函數(shù)f()中語句"int*t=&k;*s=t;"同樣使得**s、*t、k等價,所以剛開始輸出3個7,函數(shù)調(diào)用結(jié)束之后*p與**r的值均為7,i不變,答案選A)。15、下列敘述中錯誤的是()。A、C語句必須以分號結(jié)束B、復合語句在語法上被看作一條語句C、空語句出現(xiàn)在任何位置都不會影響程序運行D、賦值表達式末尾加分號就構(gòu)成賦值語句標準答案:C知識點解析:C語言規(guī)定每條語句和數(shù)據(jù)定義的最后必須有一個分號,分號是C語句的必要組成部分。復合語句也稱為“語句塊”,其形式如下:{語句1;語句2;……語句n;},即用一對大括號把若干語句括起來構(gòu)成一個語句組。一個復合語句在語法上視為一條語句,在一對花括號內(nèi)的語句數(shù)量不限。一個賦值表達式的最后加一個分號就成為一條語句,即賦值語句??照Z句是只有一個分號的語句,它什么也不做,程序設計中有時需要加一個空語句來表示存在一條語句,但隨意加分號會導致邏輯上的錯誤,而且這種錯誤十分隱蔽,編輯器也不會提示邏輯錯誤,需要慎用。16、交換兩個變量的值,不允許用臨時變量,應該使用下列()位運算符。A、&B、^C、‖D、~標準答案:B知識點解析:按邏輯位運算的特定作用主要有3點:①用按位與運算將特定位清0或保留特定位;②用按位或運算將特定的位置設置為1;③用按位異或運算將某個變量的特定位翻轉(zhuǎn)或交換兩個變量的值。17、某系統(tǒng)總體結(jié)構(gòu)圖如下圖所示:該系統(tǒng)總體結(jié)構(gòu)圖的深度是()。A、7B、6C、3D、2標準答案:C知識點解析:根據(jù)總體結(jié)構(gòu)圖可以看出該樹的深度為3,比如:XY系統(tǒng)---功能2----功能2.1,就是最深的度數(shù)的一個表現(xiàn)。18、下列敘述中正確的是()。A、有一個以上根結(jié)點的數(shù)據(jù)結(jié)構(gòu)不一定是非線性結(jié)構(gòu)B、只有一個根結(jié)點的數(shù)據(jù)結(jié)構(gòu)不一定是線性結(jié)構(gòu)C、循環(huán)鏈表是非線性結(jié)構(gòu)D、雙向鏈表是非線性結(jié)構(gòu)標準答案:B知識點解析:線性結(jié)構(gòu)應滿足:有且只有一個根結(jié)點與每個結(jié)點最多有一個前件,也最多有一個后件,所以B正確。所以有一個以上根結(jié)點的數(shù)據(jù)結(jié)構(gòu)一定是非線性結(jié)構(gòu),所以A錯誤。循環(huán)鏈表和雙向鏈表都是線性結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu)。19、下列選項中屬于面向?qū)ο笤O計方法主要特征的是()。A、繼承B、自頂向下C、模塊化D、逐步求精標準答案:A知識點解析:面向?qū)ο蠡痉椒ǖ幕靖拍钣袑ο?、類和實例、消息、繼承與多態(tài)性,所以選擇A。20、若輸入“abcdef”、“abdef”,以下程序的輸出結(jié)果為()。#include#includemain(){intn;chars1[20],s2[20],*p1,*p2;scanf(“%s”,s1);scanf(“%s”,s2);p1=s1;p2=s2;n=strcmp(p1,p2);printf(“%d\n”,n);}A、-1B、0C、“abcdef”D、“abdef”標準答案:A知識點解析:本題考查兩個知識點:①字符串比較函數(shù)strcmp(s1,s2),若s1>s2,則返回1;若s1=s2,則返回0;若s121、以下選項中,合法的是()。A、charstr3[]={’d’,’e’,’b’,’u’,’g’,’0’};B、charstr4;str4="helloworld";C、charname[10];name=’china";D、charstd[5]="pass",str2[6];str2=std;標準答案:A知識點解析:選項B不能把一個字符串賦值給一個字符變量,選項C和D犯了同樣的錯誤是把字符串賦給了數(shù)組名。22、軟件開發(fā)中,需求分析階段可以使用的工具是()。A、N-S圖B、DFD圖C、PAD圖D、程序流程圖標準答案:B知識點解析:結(jié)構(gòu)化解析方法是結(jié)構(gòu)化程序設計理論在軟件需求解析階段的運用,數(shù)據(jù)流圖(DataFlowDiagram,DFD))是結(jié)構(gòu)化解析常用的工具之一,數(shù)據(jù)字典、判定樹和判定表也是常用的結(jié)構(gòu)化分析工具。程序流程圖、NS圖、PAD圖等圖形工具用于詳細設計的過程中。23、有三個關(guān)系R、S和R如下:由關(guān)系R和S通過運算得到關(guān)系T,則所使用的運算為()。A、并B、自然連接C、笛卡爾積D、交標準答案:D知識點解析:自然連接是一種特殊的等值連接,它要求兩個關(guān)系中進行比較的分量必須是相同的屬性組,并且在結(jié)果中把重復的屬性列去掉,所以B)錯誤。笛卡爾積是用R集合中元素為第一元素,S集合中元素為第二元素構(gòu)成的有序?qū)Γ訡)錯誤。根據(jù)關(guān)系T可以很明顯的看出是從關(guān)系R與關(guān)系S中取得相同的關(guān)系組所以取得是交運算,選擇D)。24、若有代數(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ù)順序錯誤。25、有以下程序:#include<stdio.h>main(){inta=1,}1=2;for(;a<8;a++){b+=a;a+=2;}printf("%d,%d\n",a,b);}程序運行后的輸出結(jié)果是()。A、9,18B、8,11C、7,11D、10.14標準答案:D知識點解析:第一次循環(huán)a的值為1,滿足條件,執(zhí)行b+=a,與a+=2,則b的值變?yōu)?,a的值變?yōu)?。執(zhí)行a++,a的值為4,滿足條件進入第二次循環(huán),執(zhí)行完循環(huán)體后b的值為7,a的值為6。執(zhí)行a++,a的值為7,滿足條件進入第三次循環(huán),執(zhí)行完循環(huán)體后b的值為14,a的值為9。執(zhí)行a++,a的值變?yōu)?0,不滿足條件,循環(huán)結(jié)束。所以選擇D選項。26、設有定義:chars[81];inti=0;以下不能將一行(不超過80個字符)帶有空格的字符串正確讀入的語句或語句組是()。A、scanf("%s",s);B、while((s[i++]=getchar())!=’\n’);s[i]=’\0’;C、gets(s);D、do{scanf("%c",&s[i]);}while(s[i++]!=’\n’);s[i]=’\0’;標準答案:A知識點解析:函數(shù)scanf()輸入字符串時默認空格為間隔符,所以不能輸入空格,答案選A)。27、若有以下程序:#include#defineS(x)(x)*(x)#defineT(x)S(x)/S(x)+1main(){intk=3j=2;printf("%d,%d\n",S(k+j),T(k+j));}則程序的輸出結(jié)果是()。A、11,2B、25,2C、11,12D、25,26標準答案:D知識點解析:本題考查宏定義。宏定義只是做簡單的替換,執(zhí)行語句s(k+j)=(k+j)*(k+j)=25,T(k+j)=S(k+j)/S(k+j)+1=(k+j)*(k+j)/(k+j)*(k+j)+1=26,因此選項D正確。28、以下程序段中的變量已正確定義folr(i=0;i<4;i++,i++)for(k=1;k<3;k++);printf("*");該程序段的輸出結(jié)果是()。A、*B、****C、**D、********標準答案:A知識點解析:C語言約定分號為一條語句的結(jié)束。因此for(i=0;i<4;i++,i++)for(k=1;k<3;k++);是完整的語句,對printf();沒有任何影響,最后printf("*"),執(zhí)行一次。因此答案為A選項。29、以下選項中不屬于C語言標識符的是A、常量B、用戶標識符C、關(guān)鍵字D、預定義標識符標準答案:A知識點解析:常量是指在程序運行過程中其值不能被改變的量,如5、1.0、字符’a’等。C語言的標識符分為3類:關(guān)鍵字、預定義標識符和用戶標識符,常量不屬于標識符,所以選擇A。30、有以下函數(shù):intfun(char*s){char*c=s;while(*c++);return(c一s);}該函數(shù)的功能是()。A、計算s所指字符串占用內(nèi)存字節(jié)的個數(shù)B、比較兩個字符串的大小C、計算s所指字符串的長度D、將s所指字符串復制到字符串c中標準答案:C知識點解析:while(*cc++)的結(jié)果是將c移動到字符串的結(jié)尾,即當c=’\0’時,循環(huán)結(jié)束。此時s依然指向的是字符串的首字符,因此,返回值c一s是字符串的長度,答案C正確。31、下列敘述中正確的是A、空字符串不占用內(nèi)存,其內(nèi)存空間大小是0B、兩個連續(xù)的單引號(’’)是合法的字符常量C、可以對字符串進行關(guān)系運算D、兩個連續(xù)的雙引號("")是合法的字符串常量標準答案:D知識點解析:字符串常量是由一對雙引號括起的字符序列。A選項描述不正確。B選項描述的不夠完善;字符常量占一個字節(jié)的內(nèi)存空間。D選項正確;字符常量是用單引號括起來的一個字符。C語言字符串比較不能直接用關(guān)系運算符進行正確比較??梢杂米址容^函數(shù)strcmp來實現(xiàn),C選項是錯誤的;字符串常量占的內(nèi)存字節(jié)數(shù)等于字符串中字節(jié)數(shù)加1。因此D選項正確。32、設x=021,y=012,則z=x|y的值是()。A、1B、0C、00011011D、1.1e+007標準答案:C知識點解析:本題主要考查按位或運算。按位或是對兩個運算對象相應的位進行邏輯或運算,其運算規(guī)則和邏輯或相同,兩個運算對象只要有一個是1,則結(jié)果為1。33、以下選項中,合法的C語言常量是A、1.234B、’C++’C、"\2.0D、2Kb標準答案:A知識點解析:整型常量:用不帶小數(shù)點的數(shù)字表示。實型常量:用帶小數(shù)點的數(shù)字表示。字符型常量:用帶有單引號的字符表示。字符串常量:用一對雙引號括起來的一串字符。1.234為實型常量,A選項正確?!疌++’不合法,若改成"C++"則為字符串常量,B選項錯誤。"\2.0不合法,不是任何類型常量,C選項錯誤。2Kb不合法,若加上雙引號"2Kb"為字符串常量,D選項錯誤。34、設有定義:inta=0,b=1;,以下表達式中,會產(chǎn)生"短路"現(xiàn)象,致使變量b的值不變的是A、a++&&b++B、a++||++bC、++a&&b++D、+a||++b標準答案:A知識點解析:運算符"++"放在變量前面時,表示將變量+1,再參與其他操作,a++&&b++時,由于a值是0直接判定與運算結(jié)果為0,忽視b++的值,因此b值不發(fā)生改變,答案為A選項。35、下列各序列中不是堆的是A、(91,85,53,36,47,30,24,12)B、(91,85,53,47,36,30,24,12)C、(47,91,53,85,30,12,24,36)D、(91,85,53,47,30,12,24,36)標準答案:C知識點解析:若有n個元素的序列,將元素按順序組成一棵完全二叉樹,當且僅當滿足下列條件時稱為堆:大根堆,所有結(jié)點的值大于或等于左右子結(jié)點的值;小根堆,所有結(jié)點的值小于或等于左右子結(jié)點的值。A、B、D選項屬于大根堆,C選項由于47<91,判斷屬于小根堆,但91>85,不滿足條件,不是堆,故正確答案為C選項。36、關(guān)于C語言標識符,以下敘述錯誤的是A、標識符可全部由數(shù)字組成B、標識符可全部由下劃線組成C、標識符可全部由小寫字母組成D、標識符可全部由大寫字母組成標準答案:A知識點解析:標識符只能由字母、數(shù)字、下劃線組成,且標識符的第一個字符只能是字母或下劃線。所以,B,C,D選項正確,答案為A選項。37、數(shù)據(jù)庫的數(shù)據(jù)模型分為A、層次、關(guān)系和網(wǎng)狀B、網(wǎng)狀、環(huán)狀和鏈狀C、大型、中型和小型D、線性和非線性標準答案:A知識點解析:數(shù)據(jù)庫的數(shù)據(jù)模型分為層次、關(guān)系和網(wǎng)狀三種。其中:用樹形結(jié)構(gòu)表示實體及其之間聯(lián)系的模型稱為層次模型,模型中結(jié)點是實體,樹枝是聯(lián)系,從上到下是一對多的關(guān)系。用網(wǎng)狀結(jié)構(gòu)表示實體及其之間聯(lián)系的模型稱為網(wǎng)狀模型,它是層次模型的擴展,表示多個從屬關(guān)系的層次結(jié)構(gòu),呈現(xiàn)一種交叉關(guān)系。關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)非常單一,在關(guān)系模型中,現(xiàn)實世界的實體以及實體間的各種聯(lián)系均用關(guān)系來表示。故本題選A選項。38、以下敘述正確的是A、C程序由函數(shù)組成,可以不包含main函數(shù)B、每個C程序文件中的main函數(shù)都應當放在最前面C、每個C程序文件都應當包含一個main函數(shù)D、每個C程序都只能有一個main函數(shù)標準答案:D知識點解析:雖然一個C程序可以包含多個文件,但是有且只有一個文件中包含main函數(shù),因此,選項A,C錯誤。main函數(shù)可以放在程序的任意位置。因此,選項B錯誤。答案為D選項。39、下列關(guān)于線性鏈表的敘述中,正確的是()。A、各數(shù)據(jù)結(jié)點的存儲空間可以不連續(xù),但它們的存儲順序與邏輯順序必須一致B、各數(shù)據(jù)結(jié)點的存儲順序與邏輯順序可以不一致,但它們的存儲空間必須連續(xù)C、進行插入與刪除時,不需要移動表中的元素D、以上三種說法都不對標準答案:C知識點解析:一般來說,在線性表的鏈式存儲結(jié)構(gòu)中,各數(shù)據(jù)結(jié)點的存儲序號是不連續(xù)的,并且各節(jié)點在存儲空間中的位置關(guān)系與邏輯關(guān)系也不一致。線性鏈表中數(shù)據(jù)的插入和刪除都不需要移動表中的元素,只需改變節(jié)點的指針域即可。故C選項正確。二、程序填空題(本題共1題,每題1.0分,共1分。)40、給定程序的功能是:從鍵盤輸入若干行文本(每行不超過80個字符),寫到文件myfile4.txt中,用-1作為字符串輸入結(jié)束的標志。然后將文件的內(nèi)容讀出顯示在屏幕上。文件的讀寫分別由自定義函數(shù)ReadText和WriteText實現(xiàn)。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include<stdio.h>#include<string.h>#include<stdlib.h>voidWriteText(FILE*);voidReadText(FILE*);main(){FILE*fp;if((fp=fopen("myfile4.txt","w"))==NULL){printf("openfail!!\n");exit(0);}WriteText(fp);fclose(fp);if((fp=fopen("myfile4.txt","r"))==NULL){printf("openfail!!\n");exit(0);}ReadText(fp);fclose(fp);}/**********found**********/voidWriteText(FILE___1___){charstr[81];printf("\nEnterstringwith-1toend:\n");gets(str);while(strcmp(str,"-1")!=0){/**********fbund**********/fputs(___2___,fW);fputs("\n",fw);gets(str);}}voidReadText(FILE*fr){charstr[81];printf("\nhaReadfileandoutputtoscreen:\n");fgets(str,81,fr);while(!feof(fr)){/**********found**********/printf("%s",___3___);fgets(str,81,fr);}}標準答案:(1)*fw(2)str(3)str知識點解析:第一空:此處是補充函數(shù)參數(shù)名,參數(shù)類型已知是FILE文件指針,fbuts("\n",fw)是將字符“\n”寫入文件,可知fw是文件指針名,因此第一空處應該是voidWriteText(FILE*fw);第二空:while(strcmp(str"-1")!=0)循環(huán)的結(jié)束標志是str字符串等于“-1”時循環(huán)退出,如果str不等于“-1”,執(zhí)行循環(huán)體內(nèi)容:用fbuts函數(shù)將str字符串寫入文件。fputs函數(shù)的調(diào)用形式是:fputs(s,fp),其中s是指向字符串的指針或字符串數(shù)組名,fp是指向?qū)⒁粚懭氲奈募奈募羔槪虼说诙帒撌莊puts(str.fw)。第三空:while(!feof(fr))循環(huán)的作用是不斷讀取文件直到到達文件尾,每次最多讀81個,將讀到的數(shù)據(jù)放在str字符串里,并用printf輸出到屏幕,因此第三處應該是printf("%s"str)。三、程序修改題(本題共1題,每題1.0分,共1分。)41、由N個有序整數(shù)組成的數(shù)列已放在一維數(shù)組中,給定程序MODIl.C中函數(shù)fun的功能是:利用折半查找算法查找整數(shù)m在數(shù)組中的位置。若找到,返回其下標值;反之,返回-1。折半查找的基本算法是:每次查找前先確定數(shù)組中待查的范圍:low和high(10whigh,查找結(jié)束。請改正程序中的錯誤,使它能得出正確結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。#include{}defineN10/************found************/voidfun(inta[],intm){intlow=0,high=N一1,mid;while(low<=high){mid=(low+high)/2;if(ma[mid])low=mid+1;elsereturn(mid);}return(一1);}main(){inti,a[N]={一3,4,7,9,13,45,67,89,100,180},k,m;printf("a數(shù)組中的數(shù)據(jù)如F:");for(i=0;i=0)printf("m=%d,index=%d\n",m,k);elseprintf("Notbefound!\n");}標準答案:(1)intfun(inta[],intm)(2)elseif(m>a[mid])知識點解析:(1)根據(jù)主函數(shù)中“k=fun(a,m);”,知道函數(shù)fun應該是返回int型的函數(shù),所以第一個標識下面定義的“voidfun(inta[],intm)”應該改為“intfun(inta[],intm)”。(2)第二個標識下的“elseIf(m>a[mid])”是判斷m是否比a[mid]大,在while循環(huán)中采用的是if-elseif-else語句,顯然“elself”當中“If”應當小寫,故第二標識下“elseIf(m>a[mid])”應改為“elseif(m>a[mid])”。國家二級(C語言)機試模擬試卷第2套一、選擇題(本題共38題,每題1.0分,共38分。)1、算法的有窮性是指()。A、算法程序的運行時間是有限的B、算法程序所處理的數(shù)據(jù)量是有限的C、算法程序的長度是有限的D、算法在執(zhí)行過程中所需要的臨時工作單元數(shù)標準答案:A知識點解析:算法原則上能夠精確地運行,而且人們用紙筆做有限次運算后即可完成。有窮性是指算法程序的運行時間是有限的。2、一個棧的初始狀態(tài)為空?,F(xiàn)將元素1、2、3、4、5、A、B、C、D、E依次入棧,然后再依次出棧,則元素出棧的順序是()。A、12345ABCDEB、EDCBA54321C、ABCDE12345D、54321EDCBA標準答案:B知識點解析:棧是按照“先進后出”的原則組織數(shù)據(jù)的,入棧的順序為12345ABCDE,則出棧的順序應為其逆序,即EDCBA54321。3、下列關(guān)于線性鏈表的敘述中,正確的是()。A、各數(shù)據(jù)結(jié)點的存儲空間可以不連續(xù),但它們的存儲順序與邏輯順序必須一致B、各數(shù)據(jù)結(jié)點的存儲順序與邏輯順序可以不一致,但它們的存儲空間必須連續(xù)C、進行插入與刪除時,不需要移動表中的元素D、以上三種說法都不對標準答案:C知識點解析:一般來說,在線性表的鏈式存儲結(jié)構(gòu)中,各數(shù)據(jù)結(jié)點的存儲序號是不連續(xù)的,并且各節(jié)點在存儲空間中的位置關(guān)系與邏輯關(guān)系也不一致。線性鏈表中數(shù)據(jù)的插入和刪除都不需要移動表中的元素,只需改變節(jié)點的指針域即可。故C選項正確。4、在長度為n的有序線性表中進行二分查找,最壞情況下需要比較的次數(shù)是()。A、O(n)B、O(n2)C、O(log2n)D、O(nlog2n)標準答案:C知識點解析:二分查找的最壞情況是不斷的二分直至無法再分時,仍然沒有查找成功。對于有序的線性表,二分查找法只需比較log2n次。5、假定已建立以下數(shù)據(jù)鏈表結(jié)構(gòu),且指針p和q已指向如下圖所示的結(jié)點:則以下選項中可將q所指結(jié)點從鏈表中刪除并釋放該結(jié)點的語句是()。A、(*)p.next=(*q).next;free(p)B、b=q一>next;free(q)C、p=q;free(q)D、p=>next=q一>next;free(q)標準答案:D知識點解析:要刪除結(jié)點q,應首先由q的上一個結(jié)點p的指針域指向q的指針域所指向的結(jié)點,即p一>next=q一>next;,然后才能釋放結(jié)點q,即free(q)。6、軟件開發(fā)中,需求分析階段可以使用的工具是()。A、N-S圖B、DFD圖C、PAD圖D、程序流程圖標準答案:B知識點解析:結(jié)構(gòu)化分析方法是結(jié)構(gòu)化程序設計理論在軟件需求解析階段的運用,數(shù)據(jù)流圖(DataFlowDiagram,DFD)是結(jié)構(gòu)化分析常用的工具之一,數(shù)據(jù)字典、判定樹和判定表也是常用的結(jié)構(gòu)化分析工具。程序流程圖、NS圖、PAD圖等圖形工具用于詳細設計的過程中。7、在面向方法中,不屬于“對象”基本特點的是()。A、一致性B、分類性C、多態(tài)性D、標識唯一性標準答案:A知識點解析:對象的基本特點有:①標識唯一性,是指對象是可區(qū)分的;②分類性,是指可將具有相同屬性和操作的對象抽象成類;③多態(tài)性,是指同一個操作可以是不同對象的行為;④封裝性,是指對象的內(nèi)部對外不可見,在外面不可直接使用對象的處理能力,也不能直接修改對象的內(nèi)部狀態(tài);⑤模塊獨立性,是指模塊內(nèi)部各部分及模塊間的關(guān)系的一種衡量標準,由內(nèi)聚和耦合來度量。8、在數(shù)據(jù)管理技術(shù)發(fā)展的三個階段中,數(shù)據(jù)共享最好的是()。A、人工管理階段B、文件系統(tǒng)階段C、數(shù)據(jù)庫系統(tǒng)階段D、三個階段相同標準答案:C知識點解析:數(shù)據(jù)庫系統(tǒng)階段實現(xiàn)了數(shù)據(jù)共享,具有數(shù)據(jù)的集成性.這使得數(shù)據(jù)可被多個應用所共享,還可以極大地減少數(shù)據(jù)冗余性。A項。在人工管理階段,數(shù)據(jù)不保存,沒有對數(shù)據(jù)進行管理的軟件,數(shù)據(jù)不能共享;B項,文件系統(tǒng)階段是數(shù)據(jù)庫系統(tǒng)發(fā)展的初級階段,它提供了簡單的數(shù)據(jù)共享與數(shù)據(jù)管理能力,但是這種能力十分有限。從人工管理階段到文件系統(tǒng)階段再到數(shù)據(jù)庫系統(tǒng)階段,對數(shù)據(jù)共享的能力在不斷增強。9、一間宿舍可住多個學生,則實體宿舍和學生之間的聯(lián)系是()。A、一對一B、一對多C、多對—D、多對多標準答案:B知識點解析:實體間的聯(lián)系有如下情況:①一對一(1:1);②一對多(1:m);③多對多(m:n)。本題中,一間宿舍對應多個學生,那么宿舍和學生之間的聯(lián)系是一對多,學生和宿舍的聯(lián)系是多對一。10、有三個關(guān)系R、S和T如下:由關(guān)系R和S通過進行運算得到關(guān)系T,則所使用的運算為()。A、笛卡爾積B、交C、并D、自然連接標準答案:D知識點解析:交和并運算要求關(guān)系R和S具有相同的屬性,BC兩項錯誤。R與S的笛卡兒積是一個4元關(guān)系,有4個元素,A項錯誤。R與S有公共的屬性B,可通過公共屬性的相等值進行連接,這種連接稱之為自然連接。11、以下敘述中正確的是()。A、C程序的基本組成單位是語句B、C程序中的每一行只能寫一條語句C、簡單C語句必須以分號結(jié)束D、C語言必須在一行內(nèi)寫完標準答案:C知識點解析:C程序的基本組成單位是函數(shù),A項錯誤;C程序以分號作為每個語句結(jié)尾,一行能寫多條語句,也可以將一條語句分幾行書寫,BD兩項錯誤;而簡單C語言語句必須以分號結(jié)束,所以C項正確。12、C源程序中不能表示的數(shù)制是()。A、二進制B、八進制C、十六進制D、十六進制標準答案:A知識點解析:C語言中整型常量可以用十進制數(shù)、八進制數(shù)、十六進制數(shù)來表示。雖然計算機只能識別二進制數(shù),但二進制不能用來表示整型常量。13、以下敘述中錯誤的是()。A、用戶定義的函數(shù)中可以沒有return語句B、用戶定義的函數(shù)中可以有多個return語句,以便可以調(diào)用一次返回多個函數(shù)值C、用戶定義的函數(shù)中若沒有return語句,則應當定義函數(shù)為voie類型D、函數(shù)的return語句中可以沒有表達式標準答案:B知識點解析:用戶定義的函數(shù)有兩種:①void函數(shù),可以沒有return語句,如果有return語句,也不可以返回任何表達式;②指定返回類型函數(shù),至少有一個返回語句。在一個函數(shù)內(nèi),可以根據(jù)需要在多處出現(xiàn)return語句,但無論有多少個return語句,return語句只會被執(zhí)行一次,然后退出函數(shù),并且只能返回一個函數(shù)值。14、以下選項中不能作為C語言合法常量的足()。A、'cd'B、0.1e+6C、"a"D、'\)11'標準答案:A知識點解析:常量包括整型常量、實型常量、字符常量和字符串常量等。單引號表示字符常量,但不能包含字符串。表達字符串常量時需用雙引號。15、如有表達式(w)?(-x):(++y)。則其中與w等價的表達式是()。A、w==1B、w==0C、w!=1D、W!=0標準答案:D知識點解析:?:表達式形式為<表達式1>?<表達式2>:<表達式3>。當表達式1的值為真,則結(jié)果為表達式2的值;當表達式1的值為假,則結(jié)果為表達式3的值。可見表達式w等價于w!=0。16、以下選項中正確的定義語句是()。A、doublea:b:B、doublea=b=7:C、doublea=7.b=7:D、double,a,b:標準答案:C知識點解析:同一類型變量的定義時,不同變量之間需要用“,”分隔;定義變量時初始化賦值時不能用等號連接;變量類型說明后面不能用逗號,而是用空格分離。17、若變量已正確定義為int型,要通過語句scanf(”%d,%d,%d”,&a,&b,&c);給a賦值1、給b賦值2、給c賦值3,以下輸入形式中錯誤的是(u代表一個空格)()。A、1,2,3<回車>B、1u2u3<回車>C、1,uu2,uu<回車>3<回車>D、uu1.2,3<回車>標準答案:B知識點解析:scanf函數(shù)要求除格式控制符以外的字符都要原樣輸入。逗號是非格式符,所以需要原樣輸入,否則就不能正確讀入數(shù)據(jù)。B項前兩個數(shù)據(jù)后面沒有緊跟一個逗號,格式不匹配,所以輸入形式錯誤。18、執(zhí)行以下程序段后,w的值為()。intw='A',x=14,y=15;w=((x|y)&&(w<'a'));A、一1B、NULLC、1D、0標準答案:C知識點解析:因為x=14,y=15都是非零整數(shù),因此x|y=1。叉因為'A'+32='a',知w<'a'也為真,因此(x|y)&&(w<'a')的值為1。19、有以下程序:#include<stdio.h>main()chara=4:printf("%d\n",=a<<1);程序運行的結(jié)果是()。A、40B、16C、8D、4標準答案:C知識點解析:左移一位相當于原數(shù)乘以2,右移一位相當于除以2。a<<1結(jié)果為4*2=8,沒有超過char類型的范圍。20、有以下程序段:inta,b,c;a=10;b=50;c=30;if(a>b)a=b,b=c;c=a;printf("a=%db=%dc=%d",a,b,c);程序的輸出結(jié)果是()。A、a=10b=50C=10B、a=10b=50C=30C、a=10b=30c=10D、a=10b=30c=50標準答案:A知識點解析:因為a=10,b=50,所以a<b,if語句判斷條件不成立,于是執(zhí)行c=a,得到c=10,a和b的值不變。21、有以下程序:#include<stdio.h>main(){intx=1,y=2,z=3;if(x>y)if(y<z)printf("%d",++z);elseprintf("%d",++y);printf("%d\n",x++);}程序運行的結(jié)果是()。A、331B、41C、2D、1標準答案:D知識點解析:else子句總是與最前面最近的不帶else的if相結(jié)合,與書寫格式無關(guān),所以本題中的else語句與第二個if語句配對,且if和else都在第一個if的控制范圍內(nèi)。首先判斷x>y不成立,直接退出第一個if語句,執(zhí)行printf("%d\n",x++)。(x++)的值是x加之前的值,所以輸出結(jié)果為1。22、有以下程序:#include<stdio.h>main(){ini=5:do{if(i%3==1)if(i%5==2){printf(”*%d”,i);break;}i++:}while(i!=0);printf(”n”):}程序運行的結(jié)果是()。A、*7B、*3*5C、*5D、*2*6標準答案:A知識點解析:在dowhile循環(huán)中,總是先執(zhí)行后判斷,所以循環(huán)體至少會被執(zhí)行一次。在循環(huán)中,如果滿足(i%3==1)&&(i%5==2),那么輸出i的值,退出循環(huán),否則i++,印果i==0則跳出循環(huán)。23、有以下程序:#include<stdio.h>main(){inti,j;for(i=3;i>1;i——){for(j=1;j<=2;j++)printf("%d",i+j);printf("\n");}}程序運行的結(jié)果是()。A、234345B、43254345C、233423D、4534標準答案:D知識點解析:外層主循環(huán)i從3減到1執(zhí)行了3次(最后一次循環(huán)條件不成立,不執(zhí)行),嵌套的循環(huán)j從1增到2,每輪執(zhí)行2次。每次輸出i+j的值,就可以得到如D選項的輸出結(jié)果。每次換行發(fā)生在外循環(huán)完成一次循環(huán)之后。24、若有定義語句:chars[10]=”1234567\0\0”;,則strlen(s)的值是()。A、7B、8C、9D、10標準答案:A知識點解析:C語言規(guī)定以字符'\0'作為字符串結(jié)束的標識符。strlen函數(shù)返回的是字符串的長度,“1234567\0\0”與“1234567”等效,所以字符串長度是7。25、若有定義語句:intm[]={5,4,3,2,1},i=4;,則下面對m數(shù)組元素的引用中錯誤的是()。A、m[一一i]B、m[2*2]C、m[m[0]]D、m[m[i]]標準答案:C知識點解析::數(shù)組的下標從零開始,數(shù)組m中有5個元素,所以數(shù)組m即為m[0]=5,m[1]=4,m[2]=3,m[3]=2,m[4]=1。C項,m[0]=5,引用數(shù)組元素為m[5],但是數(shù)組下標范圍是0~4,所以m[5]溢出,引用錯誤。26、有以下程序:#include<stdio.h>voidfun(inta[],intn){inti.t:for(i=0;i<n/2;i++){t=a[i]:a[i]=a[n一1一i];a[n一1一i]=t;}}main(){intk[10]={1,2,3,4,5,6,7,8,9,10},i;fun(k,5):for(i=2;i<8;i++)printf("%d",k[i]);printf("\n");}程序運行的結(jié)果是()。A、3456787B、876543C、1098765D、321678標準答案:D知識點解析:由于數(shù)組名本身是一個地址,所以在用數(shù)組名作為實參傳遞時,對應的形參相當于一個指針變量,在函數(shù)中可以通過指針變量來引用數(shù)組元素,從而改變元素的值。本題中函數(shù)fun的作用是將數(shù)組A的前n個元素進行逆轉(zhuǎn),fun(k,5)的結(jié)果是數(shù)組k的前五個元素1、2、3、4、5變?yōu)?、4、3、2、1。逆轉(zhuǎn)后,輸出數(shù)組中第3個至第8個元素。27、有以下程序:#include<stdio.h>voidfun(inta,intb){intt;t=a;a=b;b=t;}main(){intc[10]={1,2.3.45,6,7,8,9,0},i;for(i=0:i<10;i+=2)fun(c[i],c[i+1]);for(i=0;i<10;i++)printf("%d,",c[i]);printf("\n");程序運行的結(jié)果是()。A、1,2,3,4,5,6,7,8,9,0,B、2,1,4,3,6,5,8,7,0,9,C、0,9,8,7,6,5,4,3,2,1,D、0,1,2,3,4,5,6,7,8,9,標準答案:A知識點解析:在C語言中,函數(shù)參數(shù)傳遞的作用是“傳值",形參和實參是兩個沒有關(guān)系的變量。函數(shù)fun交換了參數(shù)值,但只是交換了形參的值,結(jié)果并不會傳遞給實參。所以數(shù)組c沒有發(fā)生變化,原樣輸出。28、有以下程序:#include<stdio.h>#defineN4voidfun(inta[][N],intb[])inti:for(i=0:i<N;i++)b[i]=a[i][i];main()intx[][N]={{1,2,3},{4},{5,6,7,8},{9,10};,y[N],i;fun(x,y);for(i=0:i<N;i++)printf("%d",y[i]);printf("\n"):}程序運行的結(jié)果是()。A、1234B、1070C、1459D、3480標準答案:B知識點解析:數(shù)組x有4列。fun函數(shù)中for循環(huán)的作用是將二維數(shù)組前4行的對角線元素分別賦給b[0],b[1],b[2],b[3]。在主函數(shù)中,二維數(shù)組初始化為{1,2,3},{4},{5,6,7,8},{9,10},所以可以看出對角線元素為1070。29、若有定義語們:doublex[5]={1.0,2,3,4,5.0},*p=x,則錯誤引用X數(shù)組元素的是()。A、*pB、x[5]C、*(P+1)D、*X標準答案:B知識點解析:引用一維數(shù)組元素有多種方式。直接引用的表達式為:數(shù)組名[下標]。數(shù)組大小為n時,下標的取值范圍為0~(n一1),所以本題中x的下標為0~4,x[5]溢出,B項錯誤。此外還可以通過指針引用一維數(shù)組元素。指針p指向該數(shù)組,所以*p表示x[0],A項正確;指針p+1指向數(shù)組x的第二個元素的地址,*(p+1)表示引用x的第二個元素,C項正確;x為x數(shù)組元素的首地址,*x表示對x[0]的引用,D項正確。30、下面的函數(shù)淵剛語句中,func函數(shù)的實參個數(shù)是()。func(f2(vl,v2),(v3,v4,v5),(v6,max(v7,v8)))A、3B、4C、5D、8標準答案:A知識點解析:函數(shù)調(diào)用中,實參有多個時,它們之間應該用逗號分隔。本題中的實參有3個,為f2(v1,v2)、(v3,v4,v5)、(v6,max(v7,v8))。其中f2(v1,v2)是函數(shù)做參數(shù),(v3,v4,v5)是逗號表達式做參數(shù),(v6,max(v7,v8))是逗號與函數(shù)相結(jié)合做參數(shù)。31、有以下程序:#include<stdio.h>intfun(inta,intb){if(b==0)returna:elsereturn(fun(一一a,一一b));}main(){printf("%d\n",fun(4,2));}程序運行的結(jié)果是()。A、1B、2C、3D、4標準答案:B知識點解析:fun函數(shù)是一個遞歸函數(shù),其功能是:當b的值為零時,返回此時a的值;否則,返回fun(——a,——b),即將a和b的值分別減1后返回fun(a,b)。當b不斷遞減時,a也不斷遞減,直到b為零。執(zhí)行過程為:執(zhí)行fun(4,2),b=2,返回f(3,1),此時b=1,返回f(2,0),b=0,返回a的值2。32、有以下程序:#include<stdio.h>intfun(int(*s)[4],intn,intk){intm,i;m=s[0][k];for(i=1;i<n;i++)if(s[i][k]>m)m=s[i][k]:returnm;}main(){inta[4][4]={{1,2,3,4},{11,12,13,14},{21,22,23,24),{31,32,33,34}};printf(”%d\n”,fun(a,4,0));}程序運行的結(jié)果是()。A、4B、34C、31D、32標準答案:C知識點解析:函數(shù)fun通過數(shù)組指針引用二維數(shù)組,其作用是遍歷s[1][k]~s[n一1][k],找出數(shù)組中最大的元素。33、有以下程序:#include<stdio.h>#include<stdlib.h>intfun(intn){int*P:P=(int*)malloc(sizeof(int)):*p=n;return*P;}main(){inta;a=fun(10):printf("%d\n",a+fun(10));}程序運行的結(jié)果是()。A、0B、10C、20D、出錯標準答案:C知識點解析:fun函數(shù)的功能是申請一個指針p,把p指向的存儲空間賦值為n,并返回p指向的空間的值,即為n。fun(10)的返回值為10,所以a=fun(10)后a的值為10,a+fun(10)=20。34、以下關(guān)于宏的敘述中正確的是()。A、宏名必須用大寫字母表示B、宏定義必須位于源程序中所有語句之間C、宏替換沒有數(shù)據(jù)類型限制D、宏調(diào)用比函數(shù)調(diào)用耗費時間標準答案:C知識點解析:A項錯誤,宏名標識符習慣用大寫字母表示,但宏名可以是任何合法的C語言標識符,沒有對大小寫的強制性要求;B項錯誤.宏定義可以根據(jù)需要寫在任何位置;D項錯誤,宏調(diào)用在編譯前由編譯預處理程序完成,不占用運行的時間。35、以下程序段中完全正確的是()。A、int*P;scanf("%d",&p);B、int*P;scanf("%d",p);C、intk,*p=&k;scanf("%d",p)D、intk,*P;*p=&k;scanf("%d",p)標準答案:C知識點解析:選項A錯在沒有對指針進行初始化,是無效指針,并且在scanf("%d",&p)中無需再進行取地址操作;選項B沒有對指針進行初始化,是無效指針;選項D,語句*p=&k;的左端*p是指針所指內(nèi)存空間的值,&k是地址,應為p=&k。36、有以下程序:#include<stdio.h>structst{intx,y;}data[2]={1,10,2,20};main(){structst*P=data:printf("%d",1)一>y);printf("%d\n",(++p)一>x);}程序運行的結(jié)果是()。A、101B、201C、102D、202標準答案:C知識點解析:題目在定義結(jié)構(gòu)體st的同時便定義了結(jié)構(gòu)體數(shù)組data??芍猟ata[0]={1,10},幽ta[1]={2,20}。結(jié)構(gòu)體指針p指向數(shù)組的首地址,指向data[0],++p則指向data[1],所以輸出p一>y和(++p)一>x即輸出data[0].y和data[1].x。37、有以下程序:#include<stdio.h>main(){structSTU{charname[9];charsex;doublescore[2]};structSTUa={"Zhao",'m',85,90.0},b={"Qian",'f',95,92.0};b=a:printf("%s%c%2.0f%2.0f\n",b.name,b.sex,b.score[0],b.score[l]);}程序運行的結(jié)果是()。A、Qianf9592B、Qianm8590C、Zhaof9592D、Zhaom8590標準答案:D知識點解析:在C語言中,相同類型變量可以通過等號直接賦值,它會按照每個成員在結(jié)構(gòu)體中的川頁序一一對應賦初值.可知。a.name="Zhao",a.scx='f'a.score[0]=85.0,a.score[1]=90.0,b.name=”Qian”,b.sex='m',b.score[0]=95.0.b.score[1]=92.0。要特別注意a=b;語句,如果沒有該條語句,則輸出A選項的結(jié)果。38、有以下程序:#include<stdio.h>nlain()FILE*pf:char*sl="China",*s2="Beijing":pf=fopen("abc.dat","wb+");fwrite(s2,7,1,pf):rewind(pf);/*文件位置指針回到文件開頭**fwrite(s1,5,1,pf):fclose(pf);}以上程序執(zhí)行后。abe.dat文件的內(nèi)容是()。A、ChinaB、ChinangC、ChinaBeijingD、BeijingChina標準答案:B知識點解析:pf是一個文件指針,fopen("abc.dat""wb+")執(zhí)行后,fp指向可讀寫的二進制文件abc.dat。語句fwrite(s2,7,1,pf);是將s2的前7*1個字符的內(nèi)容寫入pf中,即Beijing。rewind(pf)是將文件位置指針移回到文件開頭,語句fwrite(s1,5,1,pf)是從文件的開頭位置向s1寫入五個字符,所以結(jié)果為Chinang。二、程序填空題(本題共1題,每題1.0分,共1分。)39、給定程序中,函數(shù)fun的功能是:求ss所指字符串數(shù)組中長度最長的字符串所在的行下標,作為函數(shù)值返回,并把其串長放在形參n所指變量中。ss所指字符串數(shù)組中共有M個字符串,且串長<N。請在程序的下畫線處填入正確的內(nèi)容并把下畫線刪除,使程序得出正確的結(jié)果。注意:不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#include<string.h>#defineM5#defineN20/******found******/intfun(char(*ss)1,int*n){inti,k=0,len=0;for(i=0;i<M;i++){len=strlen(ss[i]);/******found******/if(i==0)*n=2;if(len>*n){/******found******/3;k=i;}}return(k}:{main(){charss[M][N]={"shanghai","guang-zhou","beijing","tianjing","cchongqing"};intn,k,i;printf("Theoriginalstringsare:\n");for(i=0;i<M;i++)puts(ss[i]);k=fun(ss,&n);printf("Thelengthoflongeststringis:%d\n",n);printf("Thelongeststringis:%s\n",ss[k]);}標準答案:(1)[N](2)len(3)*n=len知識點解析:本題考查:字符數(shù)組處理;函數(shù)形參定義;for循環(huán)語句。填空1:形參ss是一個字符串數(shù)組的定義,其寬度為N,所以應填[N]。填空2:*n用來記錄最長字符串的長度,此處取第一個字符串的長度賦值給變量*n,所以應填len。填空3:每循環(huán)一次,判斷當前字符串的長度是否大于*n,如果大于,則*n=len。三、程序修改題(本題共1題,每題1.0分,共1分。)40、下列給定程序中,fun函數(shù)的功能是:根據(jù)形參m,計算下列公式的值。t=1+1/2+1/3+1/4+…+1/m例如,若輸入5,則應輸出2.283333。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>doublefun(intm){doublet=1.0;inti;for(i=2;i<=m;i++)/******found******/t+=1.0k:|******found******/returni;}voidmain(){intm;system("CLS"):printf("Pleaseenter1integernumber:");scanf("%d",&m);printf("Theresultis%1f\n",fun(m));}標準答案:(1)t+=1.0/i;(2)returnt;知識點解析:本題考查:for循環(huán)語句的循環(huán)條件;函數(shù)返回值。該題目考查分母成等差數(shù)列遞增的一個數(shù)學公式,先看循環(huán)條件for(i=2;i<=m;i++),i從2開始遞增到m,所以t的值應該是由1.0/i的值逐步循環(huán)疊加后的結(jié)果,而不是t+=1.0/k;。returni考查對程序的解讀能力,當循環(huán)結(jié)束后(由輸入m的值決定),函數(shù)返回當前t的值。四、程序設計題(本題共1題,每題1.0分,共1分。)41、請編寫函數(shù)fun,其功能是:計算并輸出給定10個數(shù)的方差。S一[((XX—X')2)/10]0.5其中:S=((XX一X')2)/10例如,給定的10個數(shù)為95.0、89.0、76.0、65.0、88.0、72.0、85.0、81.0、90.0、56.0,則輸出為S=11.730729。注意:請勿改動主main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。試題程序:#include<math.h>#include<stdio.h>doublefun(doublex[10]){}voidmain(){FIILE*wf:doubles,x[10]=95.0,89.0,76.0,65.0,88.0,72.0,85.0,81.0,90.0,56.0};int1:printf("Theoriginaldatais:n");for(i=0;i<10;i++)printf("%6.1f",x[i]);printf("n"):s=fun(x):printf("s=%f\n",s);/************/wf=fopen("out.dat","w"):fprintf(wf,"f",s);fclose(wf):/************/標準答案:doublefun(doublex[10]){doublex1=0.0,s=0.O:inti:for(i=0;i<10;i++)x1=x1+x[i];x1=x1/10;/*求10個數(shù)的平均值*/for(i=0;i<10;i++)s=s+(x[i]一x1)*(x[i]一x1);returnsqrt(s/10);/*求10個數(shù)的方差*/}知識點解析:本題考查:平均值的求法;for循環(huán);復合運算符;sqrt函數(shù)(求方差)。這是一道求公式的值的題目,程序中第1個循環(huán)用來完成求10個數(shù)的總和,接著再用xl=xl/10來求出平均值。第2個循環(huán)用來求累加和的值,最后將累加和的平方根返回,注意sqrt函數(shù)的應用。國家二級(C語言)機試模擬試卷第3套一、選擇題(本題共40題,每題1.0分,共40分。)1、計算機能直接執(zhí)行的程序是()。A、源程序B、目標程序C、匯編程序D、可執(zhí)行程序標準答案:D知識點解析:計算機能直接執(zhí)行的程序是二進制的可執(zhí)行程序,擴展名為.exe。所以選擇D選項。2、假設有語句sizeof(double),則它是()。A、一個整型表達式B、一個雙精度浮點型表達式C、一種函數(shù)調(diào)用D、一種函數(shù)定義標準答案:A知識點解析:sizeof(double)是C語言內(nèi)部規(guī)定的一個計算參數(shù)(double)在計算機的內(nèi)存中所占用的字節(jié)數(shù)量的函數(shù),它返回一個整數(shù)值。3、以下程序:#includemain(){charstr[10];scanf(“%s”,&str);printf(“%s\nttstr):}運行上面的程序,輸入字符串howareyou,則程序的執(zhí)行結(jié)果是()。A、howB、howareyouC、hD、howareyou標準答案:A知識點解析:當從鍵盤輸入howareyou時,由于scanf輸入函數(shù)的特點是遇到空格時結(jié)束讀入字符,因此,該程書只將how這3個字符送到了字符數(shù)組str中,并在其后自動加上結(jié)束符“\0”。4、下列數(shù)據(jù)結(jié)構(gòu)中,能夠按照“先進后出”原則存取數(shù)據(jù)的是()。A、循環(huán)隊列B、棧C、隊列D、二叉樹標準答案:B知識點解析:棧是按“先進后出”的原則組織數(shù)據(jù)的。隊列是按“先進先出”的原則組織數(shù)據(jù)的。5、若定義函數(shù)int*func(),則函數(shù)func的返M值為()。A、一個實數(shù)B、一個指向整型變量的指針C、一個指向整型函數(shù)的指針D、一個整型函數(shù)的入口地址標準答案:B知識點解析:今題考查函數(shù)返回值。fun函數(shù)的返回值類型為int*類型,即函數(shù)返回一個指向整型變量的指針。6、下述程序的輸出結(jié)果是()。#includevoidmain(){inta[20],*p[4];inti,k=0;for(i=0;i<20;i++)a[i]=i;for(i=0;i<4;i++)p[i]=&a[i*i+1];for(i=0;i<4;i++){k=k+*p[i];}printf("%dt",k);}A、10B、18C、6D、數(shù)組元素引用不合法,輸出結(jié)果不定標準答案:B知識點解析:第一個for循環(huán),給數(shù)組a的20個元素分別賦值0—19;第二個for循環(huán),給數(shù)組p賦值,p[0]=a[1]=1,p[1]=a[2]=2,p[2]=a[5]=5,p[3]=a[10]=10;第三個for循環(huán),將數(shù)組p中元素的值進行累加,k=1+2+5+10=18。7、下面函數(shù)的功能是()。SSS(S,t)char*s,*t;{while(*s);while(*t)*(s++)=*(t++);returnS;}A、將字符串S復制到字符串t中B、比較兩個字符串的大小C、求字符串的長度D、將字符串t續(xù)接到字符串S中標準答案:D知識點解析:本題考查指針變量的運用。本題中的函數(shù)實質(zhì)上是將字符串t續(xù)接到字符串s中。8、設有定義:char*c;,以下選項中能夠使字符型指針c正確指向一個字符串的是()。A、charstr[]=’’string’’;c=str;B、scanf(’’%s’’,c);C、c=getchar();D、charstr[]=’’string’’;strcpy(’’c,str’’)標準答案:A知識點解析:在題目的題干中定義了字符指針變量c,在選項A中,首先定義字符數(shù)組str,然后再把字符數(shù)組str的首地址賦給字符指針變量c。所以選項A是正確的。在選項B中,指針c沒有正確初始化,指向的地址是為止的,因此不能在scanf函數(shù)中使用;在選項C中,getchar函數(shù)的返回值是用戶輸入的第一個字符的ASCII碼,如出錯返回-1,且將用戶輸入的字符回顯到屏幕,如用戶在按回車之前輸入了不止一個字符,其他字符會保留在鍵盤緩存區(qū)中,等待后續(xù)getchar調(diào)用讀取,即c只能指向一個字符而不能指向字符串;在選項D中,strcpy函數(shù)用于字符串拷貝,函數(shù)有兩個參數(shù),因此strcpyt:’’c,str")書寫錯誤,所以選項D是錯誤的。9、以下選項中,能用作數(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ù)字“0”開始,而不是字母“o”開始。10、有以下程序:voidss(char*s,chart){while(*s){if(*s==t)*s=t-’a’+’A’;s++;}}main(){charstr1[100]="abcddfefdbd",c=’d’;ss(str1,c);printf("%s\n",str1);}程序運行后的輸出結(jié)果是()。A、ABCDDEFEDBDB、abcDDfefDbDC、abcAAfefAbAD、Abcddfefdbd標準答案:B知識點解析:函數(shù)ss(char*s,chart)的功能是將指針s所指向的字符串中存在的字符“t”均改寫成大寫字母;所以main函數(shù)中引用函數(shù)ss后使得數(shù)組str1中的小寫字母“d”均變成了大寫字母“D”,然后輸出數(shù)組str1,結(jié)果為:abcDDfefDbD。11、設有如下關(guān)系表:則下列操作正確的是()。A、T=R/SB、T=R×SC、T=R∩SD、T=R∪S標準答案:C知識點解析:T就是關(guān)系R中有的,同時S中也有的有序組(4、5、6),即交運算(∩)。12、下列工具中,不屬于結(jié)構(gòu)化分析的常用工具的是()。A、數(shù)據(jù)流圖B、數(shù)據(jù)字典C、判定樹D、N-S圖標準答案:D知識點解析:結(jié)構(gòu)化分析的常用工具有數(shù)據(jù)流圖、數(shù)據(jù)字典、判定樹和判定表。13、程序設計的任務包括()。A、編寫程序代碼并上機調(diào)試B、確定所用數(shù)據(jù)結(jié)構(gòu)C、確定所用算法D、以上選項均正確標準答案:D知識點解析:程序設計是一門技術(shù),需要相應的理論、技術(shù)、方法和工具來支持。程序設計的任務包括選項A)、B)、C)等方面。14、有下列程序:main(){intm,n,p;scanf("m=%dn=%dp=%d",&m,&n,&p);printf("0%d%d%d\n",m,n,p);}若想從鍵盤上輸入數(shù)據(jù),使變量m中的值為123,n中的值為456,P中的值為789,則正確的輸入是()。A、m=123n=456p=789B、m=123n=456p=789C、m=123,n=456.p=789D、123456789標準答案:A知識點解析:scanf()函數(shù)中格式控制字符串是為了輸入數(shù)據(jù)用的,無論其中有什么字符,在輸入數(shù)據(jù)時,按照一一對應的位置原樣輸入這些字符。15、有以下程序:#include<stdio.h>main(){inti,t[][3]={9,8,7,6,5,4,3,2,1};for(i=0;i<3;i++)printf("%d",t[2-i][i]);}程序執(zhí)行后的輸出結(jié)果是()。A、357B、753C、369D、751標準答案:A知識點解析:二維數(shù)組t[][3]實際上指t[3][3]={{9,8,7},{6,5,4},{3,2,1}},通過循環(huán)語句for語句可以得到i=0,t[2][0]=3、i=1,t[1][1]=5、i=2,t[0][2]=7、i=3時循環(huán)結(jié)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國泳池鹽水消毒機市場調(diào)查研究報告
- 2025年中國四籽木地板市場調(diào)查研究報告
- 2025-2030年地熱資源開采效率提升行業(yè)跨境出海戰(zhàn)略研究報告
- 2025-2030年基因編輯肉種行業(yè)跨境出海戰(zhàn)略研究報告
- 2025至2031年中國拖鉤襯套行業(yè)投資前景及策略咨詢研究報告
- 2025至2030年中國手電筒齒輪數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國兒童工藝包數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年托帶式網(wǎng)帶項目投資價值分析報告
- 2025年皺紋繃帶項目可行性研究報告
- 2025年中國雙隔膜泵市場調(diào)查研究報告
- 專升本-英語高頻詞匯
- 《修辭立其誠》課件+2023-2024學年統(tǒng)編版高中語文選擇性必修中冊
- excel培訓課件教學
- 2024年貴州省高職(??疲┓诸惪荚囌惺罩新毊厴I(yè)生文化綜合考試語文試題
- 政治丨廣東省2025屆高中畢業(yè)班8月第一次調(diào)研考試廣東一調(diào)政治試卷及答案
- 項目三任務3:超聲波雷達的故障診斷與處理(課件)
- 派出所績效考核總結(jié)分析報告
- 智能型萬能式斷路器框架開關(guān)RMW1、DW45-2000/3P-抽屜式1000A說明
- 鑄石防磨施工工藝
- 臨時用電安全培訓(匯編)
- 新《安全生產(chǎn)法》全面解讀“三管三必須”
評論
0/150
提交評論