![國家二級(C語言)機試模擬試卷50(共345題)_第1頁](http://file4.renrendoc.com/view2/M00/3F/0A/wKhkFma6tOqANY4sAAG29hknC5Y438.jpg)
![國家二級(C語言)機試模擬試卷50(共345題)_第2頁](http://file4.renrendoc.com/view2/M00/3F/0A/wKhkFma6tOqANY4sAAG29hknC5Y4382.jpg)
![國家二級(C語言)機試模擬試卷50(共345題)_第3頁](http://file4.renrendoc.com/view2/M00/3F/0A/wKhkFma6tOqANY4sAAG29hknC5Y4383.jpg)
![國家二級(C語言)機試模擬試卷50(共345題)_第4頁](http://file4.renrendoc.com/view2/M00/3F/0A/wKhkFma6tOqANY4sAAG29hknC5Y4384.jpg)
![國家二級(C語言)機試模擬試卷50(共345題)_第5頁](http://file4.renrendoc.com/view2/M00/3F/0A/wKhkFma6tOqANY4sAAG29hknC5Y4385.jpg)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
國家二級(C語言)機試模擬試卷50(共9套)(共345題)國家二級(C語言)機試模擬試卷第1套一、選擇題(本題共39題,每題1.0分,共39分。)1、下面函數(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ù)實質上是將字符串t續(xù)接到字符串s中。2、一棵二叉樹中共有80個葉子結點與70個度為1的結點,則該二叉樹中的總結點數(shù)為()。A、219B、229C、230D、231標準答案:B知識點解析:二叉樹中,度為0的結點數(shù)等于度為2的結點數(shù)加1,即n2=n0-1,葉子結點即為0,則n2=79,總結點數(shù)為n0+n1+n2=80+70+79=229。故B選項正確。3、兩次運行下面的程序,如果從鍵盤上分別輸入3和2,則輸出結果是()。#include<stdio.h>main(){intx;scanf("%d",&x);if(x++>2)printf("%d",x);elseprintf("%d\n",x--);}A、4和3B、4和2C、4和1D、3和2標準答案:A知識點解析:本題考查if-else語句。首先,scanf函數(shù)通過鍵盤讀入x的值。當x=3時,第一個if語句先判斷條件,取x的值3和2比較,然后將x的值加1,if條件成立,執(zhí)行下面的printf語句,輸出x的值4。當x=2時,第一個if語句先判斷條件,先取x的值2和2比較,然后將x的值加1(x的值變?yōu)?),if條件不成立,執(zhí)行下面的else語句,先輸出x的值3,再將x的值減1。4、下面程序的運行結果是()。for(i=3;i<7;i++)printf((i%2)?(’’**%d\n’’):(’’##%d\n’’),i);A、**3##4**5**6B、##3**4##5**6C、##3**4##5##6D、**3##4**5##6標準答案:D知識點解析:本題考查printf函數(shù)的輸出格式和條件表達式“?:”的使用。①printf函數(shù)輸出時“**%d\n”和“##%d\n”中的“##”和“**”都是直接輸出。②條件表達式的基本格式為:“a?b:c”。它的運算規(guī)則為:當a為非0時,整個表達式的值取b的值,當a為0時,整個表達式取c的值。5、若有定義:floatx=1.5;inta=1,b=3,c=2;則正確的switch語句是()。A、switch(a+b){case1:pr4nff(“*\n”);case2+1:printf(“**\n”);}B、switch((int)x);{case1:prinff(“*\n”);case2:printf(“**\n”);}C、switch(x){case1.0:prinff(“*\n”);case2.0:prinff(“**\n”);}D、switch(a+b){ease1:printf(“*\n”);easec:printf(“*\n”);}標準答案:A知識點解析:B選項中switch((int)x);語句中不應該有最后的分號。switch(expr1),中的expr1不能用浮點類型或long類型,也不能為一個字符串,所以C錯誤。case后面常量表達式的類型必須與switch后面表達式的類型一致,所以D錯誤。6、在printf的格式字符中,e格式字符的作用是()。A、以十六進制無符號形式輸出整數(shù)B、以帶符號的十進制形式輸出整數(shù)C、以指數(shù)形式輸出實數(shù)D、以字符形式輸出,且只輸出一個字符標準答案:C知識點解析:本題考查printf函數(shù)的格式。格式字符“e”或者“E”都表示以指數(shù)形式輸出單精度或雙精度數(shù)。7、在printf的格式字符中,e格式字符的作用是()。A、以十六進制無符號形式輸出整數(shù)B、以帶符號的十進制形式輸出整數(shù)C、以指數(shù)形式輸出實數(shù)D、以字符形式輸出,且只輸出一個字符標準答案:C知識點解析:本題考查printf函數(shù)的格式。格式字符“e”或者“E”都表示以指數(shù)形式輸出單精度或雙精度數(shù)。8、下列程序的運行結果是()。#include<stdio.h>voidsub(int*s,int*y){staticintm=4;*y=s[0];m++;}voidmain(){inta[]={1,2,3,4,5},k;intx;printf(’’\n’’);for(k=0;k<=4;k++){sub(a,&x);printf(’’%d,’’,x);}}A、1,1,1,1,1,B、1,2,3,4,5,C、0,0,0,0,0,D、4,4,4,4,4,標準答案:A知識點解析:本題中sub(int*s,int*y)函數(shù)的參數(shù)是兩個指針型變量,在函數(shù)體內(nèi)將數(shù)組s的第一個元素賦給y。主程序內(nèi),首先定義了一維數(shù)組并賦初值,然后通過for循環(huán),5次調(diào)用sub(a,&x)函數(shù),每一次調(diào)用都是將數(shù)組a的第一個元素1賦給x,并輸出。9、有以下程序:#include<stdio.h>structtt{intx;structtt*y;}*p;structtta[4]={20,a+1,15,a+2,30,a+3,17,a};main(){inti;p=a;for(i=1;i<=2;i++){printf("%d,",p->x);p=p->y;}}程序的運行結果是()。A、20,30,B、30,17C、15,30,D、20,15,標準答案:D知識點解析:本題考查的是指針和結構的應用。首先定義的數(shù)組tt中有兩個成員,一個整型變量,一個結構指針。當i=1時,p指針指向結構數(shù)組的第一個元素,并輸出此元素的第一個成員x,即20;當i=2時,p指針指向結構數(shù)組的第二個元素的第一個成員,所以輸出15。10、以下關于long、int和short類型數(shù)據(jù)占用內(nèi)存大小的敘述中正確的是()。A、均占4個字節(jié)B、根據(jù)數(shù)據(jù)的大小來決定所占內(nèi)存的字節(jié)數(shù)C、由用戶自己定義D、由C語言編譯系統(tǒng)決定標準答案:D知識點解析:不同的編譯系統(tǒng)或計算機系統(tǒng)對幾類整型數(shù)所占用的字節(jié)數(shù)有不同的規(guī)定。10ng、int和short類型數(shù)據(jù)占用內(nèi)存大小是由選擇何種C編譯系統(tǒng)決定的。11、以下定義數(shù)組的語句中錯誤的是()。A、intnum[][3]={{1,2},3,4,5,6};B、intnum[2][4]={{1,2},{3,4},{5,6}};C、intnum[]={1,2,3,4,5,6};D、intnum[][4]={1,2,3,4,5,6};標準答案:B知識點解析:B)選項中定義的數(shù)組為2行4列,而賦值時賦成了3行所以出錯。12、設有如下函數(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、3C、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)用,所以最終結果為3次。13、以下選項中可用作C程序合法實數(shù)的是()。A、1e0B、3.0e0.2C、E9D、9.12E標準答案:A知識點解析:C程序的合法實數(shù)有兩種表示形式,一種是小數(shù)形式,另一種是指數(shù)形式,對于用指數(shù)形式表示的實數(shù)來說,需要注意的是字母e或E之前必須要有數(shù)字,且字母e或E后面的指數(shù)必須為整數(shù),所以選項A為正確答案。14、下面關于算法的敘述中,正確的是()。A、算法的執(zhí)行效率與數(shù)據(jù)的存儲結構無關B、算法的有窮性是指算法必須能在執(zhí)行有限個步驟之后終止C、算法的空間復雜度是指算法程序中指令(或語句)的條數(shù)D、以上三種描述都正確標準答案:B知識點解析:算法在運行過程中需輔助存儲空間的大小稱為算法的空間復雜度。算法的有窮性是指一個算法必須在執(zhí)行有限的步驟后結束。15、若變量已正確定義并賦值,則以下符合C語言語法的表達式是()。A、a=a+7;B、a=7+b+c,a++C、int(12.3%4)D、a=a+7=c+b標準答案:B知識點解析:選項A是一個C語句,不是表達式;選項B是利用一個逗號表達式給a賦值;選項C中的“%”求余運算符要求兩個運算對象都必須是整型;選項D中,不能用表達式給表達式賦值,但是變量可以給自身賦值,例如:a=a+1。16、有以下程序:#include#defineX5+6main(){inta=2,c;C=x*2;printf("%d",c);}程序運行后的輸出結果是()。A、17B、22C、16D、11標準答案:A知識點解析:define語句僅進行簡單替換,因此c=5+6*2=17。17、在關系中凡能惟一標識元組的最小屬性集稱為該表的鍵或碼。二維表中可能有若干個鍵,它們稱為該表的()。A、連接碼B、關系碼C、外碼D、候選碼標準答案:D知識點解析:在關系中凡能惟一標識元組的最小屬性集稱為該表的鍵或碼。二維表中可能有若干個鍵,它們稱為該表的候選碼或候選鍵。從二維表的所有候選鍵中選取一個作為用戶使用的鍵稱為主鍵或主碼。18、以下能正確表述算式sin(2πr+30°)的C語言表達式是()。A、sin(2*3.14*r+3.14*30/180.0)B、sin(2*π*r+30)C、sin(2*3.14*r+30)D、sin(2*3.14*r+30*3.14/360.0)標準答案:A知識點解析:考查算術表達式的寫法,C中沒有π,需要用數(shù)值3.14代替,C中sin函數(shù)的參數(shù)為弧度,角度30轉成弧度應為3.14*30/180。故而選A)。19、有以下程序#includeintfun(intas*intb){if(b==0)returna;elsereturn(fun(--a,--b));}main(){pfintf("%d\n",fun(4,2));}程序的運行結果是()。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。所以正確答案為選項B)。20、下列程序的運行結果為()。#include<stdio.h>voidabc(char*str){inta,b,i,j;for(i=j=0;str[i]!=’\0’;i++)if(str[i]!=’a’)str[j++]=str[i];str[j]=’\0’;}voidmain(){charstr[]="abcdef";abc(str);printf("str[]=%s",str);}A、str[]=bcdefB、str[]=abcdefC、str[]=aD、str[]=ab標準答案:A知識點解析:本題考查函數(shù)調(diào)用是的參數(shù)傳遞。通過函數(shù)abc的執(zhí)行,將字符串中的字母a去掉,保留剩下的,由于是通過指針調(diào)用,所以改變字符串的結果。21、有以下程序:#include<stdio.h>intf(intx){inty;if(x==0||x==1)return(3);y=x*x-f(x-2);retumy;}main()intz;z=f(3);printf("%d\n",z);}程序運行后的輸出結果是()。A、0B、9C、6D、8標準答案:C知識點解析:主函數(shù)中iJ吉j用f函數(shù),同時將數(shù)值3傳遞給變量x,執(zhí)行條件不滿足條件if(x==0||x==1);跳過return(3);,直接執(zhí)行語句y=x*x-f(x-2);這里f(x-2)為函數(shù)的遞歸調(diào)用,再次調(diào)用f函數(shù),此時x=1,判斷條件成立,返回3給f(1),y=3*3-3=6,最后將6返回主函數(shù),并進行輸出。因此C選項正確。22、若有以下程序:#includemain(){inta[3]={0},i,j,k=2;for(i=0;i<k;i++)for(j=0;j<k;j++)a[j]=a[i]+1;printf("%d\n",a[1]);}則程序運行后的輸出結果是()。A、0B、2C、1D、3標準答案:D知識點解析:該題首先初始化一維數(shù)組a[3]所有元素都為0;執(zhí)行嵌套循環(huán)for語句,當i=0、j=0時,a[0]=a[0]+1=1;當i=0、j=1時,a[1]=a[0]+l=2;當i=1、j=0時,a[0]=a[1]+1=3;當i=1、j=1時,a[1]=a[1]+1=3;因此D選項正確。23、設有宏定義:#defineIsDIV(k,n)((k%n==1)?1:0)且變量m已正確定義并賦值,則宏調(diào)用:IsDIV(m,5)&&IsDIV(m,7)為真時所要表達的是()。A、判斷m被5和7整除是否都余1B、判斷m是否能被5和7整除C、判斷m被5或者7整除是否余1D、判斷m是否能被5或者7整除標準答案:A知識點解析:暫無解析24、在數(shù)據(jù)庫設計中,將E-R圖轉換成關系數(shù)據(jù)模型的過程屬于()。A、需求分析階段B、概念設計階段C、邏輯設計階段D、物理設計階段標準答案:C知識點解析:E-R圖轉換成關系模型數(shù)據(jù)則是把圖形分析出來的聯(lián)系反映到數(shù)據(jù)庫中,即設計出表,所以屬于輯設計階段。25、以下關于return語句的敘述中正確的是()。A、一個自定義函數(shù)中必須有一條return語句B、一個自定義函數(shù)中可以根據(jù)不同情況設置多條return語句C、定義成void類型的函數(shù)中可以有帶返回值的return語句D、沒有return語句的自定義函數(shù)在執(zhí)行結束時不能返回到調(diào)用處標準答案:B知識點解析:在函數(shù)中允許有多個return語句,但每次調(diào)用只能有一個return語句被執(zhí)行,因此只能返回一個函數(shù)值。定義成void類型的函數(shù),不允許從該函數(shù)取得返回值,也不允許使用return語句,C選項描述錯誤。沒有return語句的函數(shù)在執(zhí)行到函數(shù)的最后一條語句后會自動返回到調(diào)用處,A、D選項描述錯誤。因此B選瑣正確。26、有以下程序:#include<stdio.h>voidfun(char*a,char*b){while(*a==’*’)a++;while(*b=*a){b++;a++;}}main(){char*s="*****a*b****",t[80];fun(s,t);puts(t);}程序運行后的輸出結果是()。A、abB、a*bC、*****a*bD、a*b****標準答案:D知識點解析:在函數(shù)fun(char*a,char*b)中,while(*a==’*’)a++的功能是:如果*a的內(nèi)容為‘*’,則a指針向后移動,直到遇到非’*’字符為止,退出循環(huán)進入下一個while循環(huán),在while(*b=*a){b++;a++;}中,把字符數(shù)組a中的字符逐個賦給字符數(shù)組b。所以在主函數(shù)中,執(zhí)行fun(s,t)語句后,字符數(shù)組t中的內(nèi)容為“a*b****”。因此D選項正確。27、某二叉樹共有530個結點,其中度為2的結點有250個,則度為1的結點數(shù)為()。A、29B、30C、249D、251標準答案:A知識點解析:在樹結構中,一個結點所擁有的后件個數(shù)稱為該結點的度,所有結點中最大的度稱為樹的度。對任何一棵二叉樹,度為0的結點總是比度為2的結點多一個。二叉樹結點總數(shù)為530,度為2的結點有250個,則度為0的結點有251個,那么度為1的結點個數(shù)為530-250-251=29。故選A選項。28、有以下程序:#include<stdio.h>strutS{inta,b;}data[2]={10,100,20,200};main(){structSP=data[1];printf("%d\n",++(p.a(chǎn)));程序運行后的輸H{結果是()。A、10B、11C、20D、21標準答案:D知識點解析:數(shù)組data包含兩個元素,元素類型為結構體S,分別為data[0],data[1],初始化時,使用4個整數(shù)10,100,20,200,分別給data[0].a(chǎn),data[0].b.data[1].a(chǎn),data[1].b賦值,又p.a(chǎn)=data.d[1].a(chǎn).等于20,在輸出之前執(zhí)行自身加1操作,所以結果為21,答案選D。29、C語言程序的模塊化通過以下哪個選項來實現(xiàn)()。A、函數(shù)B、變量C、程序行D、語句標準答案:A知識點解析:暫無解析30、以下敘述中錯誤的是()。A、可以給指針變量賦一個整數(shù)作為地址值B、函數(shù)可以返回地址值C、改變函數(shù)形參的值,不會改變對應實參的值D、當在程序的開頭包含頭文件stdio.h時,可以給指針變量賦NULL標準答案:A知識點解析:暫無解析31、有以下程序#include<stdio.h>#defineSQR(X)X*Xmain(){inta=10,k=2,m=1;a/=SQR(k+m)/SQR(k+m);printf("%d\n",a);}程序的輸出結果是A、0B、1C、9D、10標準答案:B知識點解析:本題考查宏定義,宏定義只是做個簡單的替換,執(zhí)行SQR(k+m)/SQR(k+m)=k+m*k+m/k+m*k+m=15/2,a/=SQR(k+m)/SQR(k+m)的結果為1,選項B正確。32、為了使模塊盡可能獨立,要求()。A、內(nèi)聚程度要盡量高,耦合程度要盡量強B、內(nèi)聚程度要盡量高,耦合程度要盡量弱C、內(nèi)聚程度要盡量低,耦合程度要盡量弱D、內(nèi)聚程度要盡量低,耦合程度要盡量強標準答案:B知識點解析:模塊獨立性是指每個模塊只完成系統(tǒng)要求的獨立的子功能,并且與其他模塊的聯(lián)系最少且接口簡單。耦合性與內(nèi)聚性是模塊獨立性的兩個定性標準,耦合與內(nèi)聚是相互關聯(lián)的。在程序結構中,各模塊的內(nèi)聚性越強,則耦合性越弱。一般較優(yōu)秀的軟件設計,應盡量做到高內(nèi)聚,低耦合,即減弱模塊之間的耦合性和提高模塊內(nèi)的內(nèi)聚性,有利于提高模塊的獨立性。33、若函數(shù)調(diào)用時的實參為變量,以下關于函數(shù)形參和實參的敘述中正確的是()。A、函數(shù)的實參和其對應的形參共占同一存儲單元B、形參只是形式上的存在,不占用具體存儲單元C、同名的實參和形參占同一存儲單元D、函數(shù)的形參和實參分別占用不同的存儲單元標準答案:D知識點解析:在C語言中,函數(shù)的實參單元與形參單元在內(nèi)存中分配不同的存儲單元。在調(diào)用函數(shù)時,給形參分配臨時存儲單元,并將實參對應的值傳遞給形參,在被調(diào)用函數(shù)中對形參存儲單元中的值進行運算,最后通過return語句把函數(shù)值返回調(diào)用函數(shù)。當調(diào)用結束后,形參單元被釋放,實參單元仍保留并維持原值。34、運動會中一個運動項目可以有多名運動員參加,一個運動員可以參加多個項目。則實體項目和運動員之間的聯(lián)系是A、多對多B、一對多C、多對一D、一對一標準答案:A知識點解析:一般來說,實體集之間必須通過聯(lián)系來建立聯(lián)接關系,分為三類:一對一聯(lián)系(1:1)、一對多聯(lián)系(1:m)、多對多聯(lián)系(m:n)。一個運動項目有很多運動員參加,而一個運動員可以參加多項運動項目,故實體項目和運動員之間的聯(lián)系是多對多,A選項正確。35、有以下程序#include<stdio.h>#include<string.h>typedefstructstu{charname[10];chargender;intscore;}STU;voidf(charname[10],chargender,intscore){strcpy(name,"Sun");gender=’m’;score=370;}main(){STUb={"Zhao",’m’,290},a={"Qian",’f’,350};b=a;printf("%s,%c,%d,",,b.gender,b.score);f(,b.gender,b.score);printf("%s,%c,%d\n",,b.gender,b.score);}程序運行后的輸出結果是A、Qian,f,350,Sun,f,350B、Qian,f,350,Qian,f,350C、Qian,f,350,Sun,m,370D、Zhao,m,290,Sun,m,370標準答案:A知識點解析:C語言函數(shù)參數(shù)傳遞大致分為:1、值傳遞過程中,被調(diào)函數(shù)的形參作為被調(diào)函數(shù)的局部變量處理,即在內(nèi)存的堆棧中開辟空間以存放由主調(diào)函數(shù)放進來的實參的值,從而成為了實參的一個拷貝。值傳遞的特點是被調(diào)函數(shù)對形參的任何操作都是作為局部變量進行,不會影響主調(diào)函數(shù)的實參變量的值。2、地址傳遞過程中,被調(diào)函數(shù)的形參雖然也作為局部變量在堆棧中開辟了內(nèi)存空間,但是這時存放的是由主調(diào)函數(shù)放進來的實參變量的地址。被調(diào)函數(shù)對形參的任何操作都被處理成間接尋址,即通過堆棧中存放的地址訪問主調(diào)函數(shù)中的實參變量。正因為如此,被調(diào)函數(shù)對形參做的任何操作都影響了主調(diào)函數(shù)中的實參變量。結構體中name是數(shù)組,做實參傳遞,會退化為指針,因此調(diào)用f(),發(fā)生修改,其他的成員,傳遞的是拷貝,不會被修改。因此輸出Sun,f,350。故答案為A選項。36、設有以下程序段structbook{floatprice;charlanguage;chartitle[20];}rec,*ptr;ptr=&rec;要求輸入字符串給結構體變量rec的title成員,錯誤的輸入語句是A、scanf("%s",ptr.title);B、scanf("%s",rec.title);C、scanf("%s",(*ptr).title);D、scanf("%s",ptr->title);標準答案:A知識點解析:"->"是指針特用的,"."用于指定元素的成員。ptr是指針,只能用->,因此選項A錯誤。*p是指定元素(rec)可以使用.運算,因此選項D正確。選項B,rec.title代表數(shù)組title,同理選項C正確。答案為A選項。37、若有定義語句:intyear=2009,*p=&year;以下各項中不能使變量year中的值增至2010的語句是()。A、(*p)++;B、*p++;C、++(*p);D、*p+=1;標準答案:B知識點解析:指針變量存儲的是其指向的變量的地址,*p表示的是p指向的變量的值,自加運算符(++)的優(yōu)先級要高于取值運算符(*)的優(yōu)先級,*p++表示的是先將指針P指向下一個地址,然后再取該地址的值,所以得到的結果并不是把year的值增至2010,故B選項錯誤。38、下列選項中,不屬于數(shù)據(jù)管理員(DBA)職責的是()。A、數(shù)據(jù)庫維護B、數(shù)據(jù)庫設計C、改善系統(tǒng)性能,提高系統(tǒng)效率D、數(shù)據(jù)類型轉換標準答案:D知識點解析:數(shù)據(jù)庫管理員(DataBaseAdminiswator,DBA)是指對數(shù)據(jù)庫的規(guī)劃、設計、維護、監(jiān)視等的人員,其主要工作如下:數(shù)據(jù)庫設計。DBA的主要任務之一是數(shù)據(jù)庫設計,具體地說是進行數(shù)據(jù)模式的設計;數(shù)據(jù)庫維護。DBA必須對數(shù)據(jù)庫中的數(shù)據(jù)安全性、完整性、并發(fā)控制及系統(tǒng)恢復、數(shù)據(jù)定期轉儲等進行實施與維護;改善系統(tǒng)性能,提高系統(tǒng)效率。DBA必須隨時監(jiān)視數(shù)據(jù)庫的運行狀態(tài),不斷調(diào)整內(nèi)部結構,使系統(tǒng)保持最佳狀態(tài)與效率。39、下列關于函數(shù)的敘述中正確的是()。A、每個函數(shù)都可以被其他函數(shù)調(diào)用(包括main函數(shù))B、每個函數(shù)都可以被單獨編譯C、每個函數(shù)都可以單獨運行D、在一個函數(shù)內(nèi)部可以定義另一個函數(shù)標準答案:B知識點解析:在C語言中,函數(shù)定義是平行的,函數(shù)不能嵌套定義,即函數(shù)之間沒有從屬關系。雖然函數(shù)之間可以相互調(diào)用,但main()函數(shù)不能被調(diào)用,選項A)錯誤;C程序從main()函數(shù)開始執(zhí)行,當main()函數(shù)執(zhí)行完畢時,整個程序就結束了。C程序的執(zhí)行必須從main()函數(shù)開始,選項C)選項錯誤;函數(shù)不能嵌套定義,選項D)錯誤。二、程序填空題(本題共1題,每題1.0分,共1分。)40、給定程序中,函數(shù)fun的功能是:將形參指針所指結構體數(shù)組中的三個元素按num成員進行升序排列。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結構!#includetypedefstruer{intnum;charname[10];}PERSON;/**********found***********/voidfun(PERSON___1___){/**********found***********/____2___temp;if(std[0].num>std[1].num){temp=std[0];std[0]=std[1];std[1]=temp;)if(std[0].num>std[2].hum){temp=std[0];std[0]=std[2];std[2]=temp;}if(std[1].num>std[2].hum){temp=std[1];std[1]=std[2];sLd[2]=temp;}}main(){PERSONsLd[]={5,“Zhanghu”,2,“WangLi”,6,“LinNin”};inti;/**********found***********/fun(____3____);printf(“\nTheresultis:\n”);for(i=0;i<3;i++)printf(“%d,%s\n”,std[i].num,std[i].name);}標準答案:(1)*std(2)PERSON(3)std知識點解析:fun函數(shù)的功能是將形參指針所指結構體數(shù)組中的三個元素進行排序。第一空:fun函數(shù)的參數(shù)是指針,由“if(std[0].num>std[1].num)”可知形參名為std,故第一空處應為“voidfun(PER.SON*std)”。第二空:temp變量用來進行交換時臨時保存變量值,由“temp=std[0];”可知temp是PERSON結構體變量,故第二空處的temp結構體定義應為“PERSONtemp;”。第三空:這里是調(diào)用fun函數(shù),fun函數(shù)的參數(shù)是結構體變量指針,std是結構體數(shù)組,數(shù)組名相當于數(shù)組的首地址,故第三空處應為“fun(std):”。三、程序修改題(本題共1題,每題1.0分,共1分。)41、在主函數(shù)中從鍵盤輸入若干個數(shù)放入數(shù)組中,用0結束輸入并放在最后一個元素中。下列給定程序中,函數(shù)fun的功能是:計算數(shù)組元素中所有值為正數(shù)的平均值(不包括0)。例如,數(shù)組中元素的值依次為:39、一47、21、2、一8、15、0,則程序的運行結果為19.250000。請改正程序中的錯誤,使它能得出正確的結果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構!試題程序:#include<conio.h>#include<stdio.h>doublefun(intx[]){/*********found*********/intslim=0.0;intc=0,i=0;while(x[i]!=0){if(x[i]>0){sum+=x[i];c++;}i++;}/*********found*********/sum\=c;returnsum;}main(){intx[1000];inti=0;printf("\nPleaseentersomeclata(endwith0):");do{scanf("%d",&x[i]);}while(x[i++]!=0);printf("%lf\n",fun(x));}標準答案:(1)doublesum=0.0;(2)sum/=c;知識點解析:(1)變量定義錯誤,變量sum存放所有數(shù)據(jù)的和,應定義為double型。(2)c語言中的除法運算符是“/”。四、程序設計題(本題共1題,每題1.0分,共1分。)42、編寫函數(shù)fun,其功能是:根據(jù)以下公式計算S,并將計算結果作為函數(shù)值返回,n通過形參傳入。例如,若n的值為11時,函數(shù)的值為1.833333。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>#include<string.h>floatfun(intn){}voidmain(){intn;floatS;system("CLS");printf("\nPleaseenterN:");scanf("%d",&n);s=fun(n);printf("Theresultis:%f\n",s);}標準答案:floatfun(intn){inti,s1=0;floats=0.0;for(i=1;i<=n;i++){s1=sl+i;/*求每一項的分母*/s=s+1.0/s1;/*求多項式的值*/}returns;}知識點解析:此類計算表達式值的程序,首先需要根據(jù)題意分析表達式的規(guī)律,得出通項,然后再完成程序語句。本題中表達式的規(guī)律是1+2+…+n的倒數(shù)之和,那么可以通過for循環(huán)語句來實現(xiàn)第1項到第n項的變化。其實就是累加算法,方法是先根據(jù)題目要求定義變量,注意該變量的數(shù)據(jù)類型,然后對其進行初始化操作,因為該變量的作用是累加器,所以初始值應為0(或0.0,根據(jù)變量數(shù)據(jù)類型來確定),再通過for循環(huán)語句來完成累加過程。本題中s1用來表示每一項的分母,每一項的分母都是由前一項分母加項數(shù)。注意,由于s1定義成一個整型,所以在s=s+1.0/s1語句中不能把1.0寫成1。國家二級(C語言)機試模擬試卷第2套一、選擇題(本題共40題,每題1.0分,共40分。)1、數(shù)據(jù)流圖中帶有箭頭的線段表示的是()。A、控制流B、事件驅動C、模塊調(diào)用D、數(shù)據(jù)流標準答案:D知識點解析:數(shù)據(jù)流圖基本符號的含義:①矩形表示數(shù)據(jù)的外部實體;②圓角的矩形表示變換數(shù)據(jù)的處理邏輯;③“=”表示數(shù)據(jù)的存儲;④箭頭表示數(shù)據(jù)流。2、在軟件開發(fā)中,需求分析階段產(chǎn)生的主要文檔是()。A、數(shù)據(jù)字典B、詳細設計說明書C、數(shù)據(jù)流圖說明書D、軟件需求規(guī)格說明書標準答案:D知識點解析:需求分析的最終結果是生成軟件需求規(guī)格說明書,可以為用戶、分析人員和設計人員之間的交流提供方便。3、下列有關數(shù)據(jù)庫的描述,正確的是()。A、數(shù)據(jù)庫設計是指設計數(shù)據(jù)庫管理系統(tǒng)B、數(shù)據(jù)庫技術的根本目標是要解決數(shù)據(jù)共享的問題C、數(shù)據(jù)庫是一個獨立的系統(tǒng),不需要操作系統(tǒng)的支持D、數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)的物理結構必須與邏輯結構一致標準答案:B知識點解析:數(shù)據(jù)庫設計的目的實質上是設計出滿足實際應用需求的實際關系模型。數(shù)據(jù)庫技術的主要目的是有效地管理和存取大量的數(shù)據(jù)資源,包括:提高數(shù)據(jù)的共享性,使多個用戶能夠同時訪問數(shù)據(jù)庫中的數(shù)據(jù);減小數(shù)據(jù)的冗余,以提高數(shù)據(jù)的一致性和完整性;提供數(shù)據(jù)與應用程序的獨立性,從而減少應用程序的開發(fā)和維護代價。4、下列敘述中錯誤的是()。A、在C語言中,對二進制文件的訪問速度比文本文件快B、在C語言中,隨機文件以二進制代碼形式存儲數(shù)據(jù)C、語句FILEfp;定義了一個名為fp的文件指針D、C語言中的文本文件以ASCII碼形式存儲數(shù)據(jù)標準答案:C知識點解析:在C語言中,文件指針實際上是指向一個結構體類型的指針,一般稱這個結構體類型名為FILE,可以用此類型名來定義文件指針。定義文件類型指針變量的一般形式為:FILE*指針變量名;選項C中少了“*”,所以選項C錯誤。5、有以下程序#includevoidfun(int*s,intn1,intn2){inti,j,t;i=n1;j=n2;while(iA、5678901234B、4321098765C、0987654321D、0987651234標準答案:A知識點解析:函數(shù)fun()的功能是將數(shù)組s中下標為n1和n2之間的數(shù)據(jù)逆序,所以調(diào)用語句fun(a,0,3);fun(a,4,9);fun(a,0,9);結束后,是先將數(shù)組p中下標為0至3之間的元素逆序,然后將下標為4至9之間的元素逆序,再將整個數(shù)組逆序,答案選A)。6、C$吾言源程序名的后綴是()。A、.exeB、.CC、.objD、.cp標準答案:B知識點解析:由C語言構成的指令序列稱為C源程序,源程序文件的后綴為“.c”。源程序經(jīng)過C編譯程序編譯生成后綴為“obi”的二進制文件(稱為目標文件),然后由稱為“連接程序”(Link)的軟件把目標文件與C語言提供的各種庫函數(shù)連接起來,生成后綴為“.exe”的可執(zhí)行文件。7、有以下程序:#include<stdio.h>main(){charc1,c2;c1=’A’+’8’一’4’;c2=’A’+’8’一’5’;printf("%c%d\n",c1,c2);}已知字母A的ASCII碼為65,程序運行后的輸出結果是()。A、E68B、D69C、EDD、輸出無定值標準答案:A知識點解析:C語言中每個字符都對應一個ASCII碼值,該值可以用來運算。本題中main函數(shù)將字符A經(jīng)過加4和加3運算后分別賦值給c1、c2,然后將c1按字符格式輸出,c2按整型格式輸出。8、計算機高級語言程序的運行方法有編譯執(zhí)行和解釋執(zhí)行兩種,以下敘述中正確的是()。A、C語言程序僅可以編譯執(zhí)行B、C語言程序僅可以解釋執(zhí)行C、C語言程序既可以編譯執(zhí)行又可以解釋執(zhí)行D、以上說法都不對標準答案:A知識點解析:C語言作為計算機高級語言,用它編寫的程序必須經(jīng)過C語言的編譯器編譯后,轉換為二:進制的機器碼來運行。9、若有如下說明,且int類型占兩個字節(jié),則正確的敘述為()。structst{inta;intb[2];}a;A、結構體變量a與結構體成員a同名,定義是合法的B、程序只在執(zhí)行到該結構體時才為結構體st分配存儲單元C、程序運行時為結構體st分配8字節(jié)存儲單元D、類型名structst可以通過extern關鍵字提前引用標準答案:A知識點解析:本題主要考禽結構體的用法:①結構體變量a與結構體成員a同名,定義合法:②在程序編譯的時候結構的定義并不會使系統(tǒng)為該結構分配內(nèi)存空間,只有在說明結構變量時才分配內(nèi)存空間;③inta占2個字節(jié)intb[2]占4個字節(jié),共6個;④類型名structst不可以通過extern關鍵字提前引用。10、C語言規(guī)定,在一個c程序中,main()函數(shù)的位置()。A、必須在系統(tǒng)調(diào)用的庫函數(shù)之后B、必須在程序的開始C、必須在程序的最后D、可以在任意位置標準答案:D知識點解析:每個C程序有一tiP,有一個主函數(shù)(main),且程序必須從main()函數(shù)開始執(zhí)行,而且main()函數(shù)可以放在程序中的任意位置。11、設有定義:“l(fā)ongx=123450L;”,則以下能夠正確輸出變量x的是()。A、printf(’’x=%d\n",x);B、printf(’’x=%id\n’’,x);C、printf(’’x=%dL\n’’,x);D、printf(’’x=%ld\n",x);標準答案:D知識點解析:C語言規(guī)定,輸出long型數(shù)值的格式符為%1d。12、以下語句定義正確的是()。A、inta[1][4]={1,2,3,4,5};B、floata[3][]={{1,2},{2,3},{3,1}};C、longa[2][3]={{1},{1,2},{1,2,3},{0,0}};D、doublea[][3]={8};標準答案:D知識點解析:本題考查如何對二維數(shù)組的元素賦值。選項A,數(shù)組第二維的大小是4,但是卻賦值了5個元素,數(shù)組溢出;選項B,C語言規(guī)定,對于二維數(shù)組,只可以省略第一個方括號中的常量表達式,而不能省略第二個方括號中的常量表達式;選項C,數(shù)組第一維的大小是2,但是賦值超過了2;選項D,在對二維數(shù)組元素賦初值時,可以只對部分元素賦初值,未賦初值的元素自動取0。13、以下敘述中錯誤的是()。A、可以給指針變量賦一個整數(shù)作為地址值B、函數(shù)可以返回地址值C、改變函數(shù)形參的值,不會改變對應實參的值D、當在程序的開頭包含頭文件stdio.h時,可以給指針變量賦NULL標準答案:A知識點解析:不可以把一個int型數(shù)據(jù)直接賦值給一個指針變量,只能用取地址運算符"&"把該整型變量的地址賦值給該指針變量,選項A)錯誤;函數(shù)類型若為指針類型則可以返回地址值,選項B)正確;函數(shù)傳參過程中,是把實參的數(shù)據(jù)復制一份傳給形參,所以改變形參的值不會對實參造成影響,選項C)正確;NULL的定義包含在頭文件stdio.h中,所以選項D)正確;所以答案選A)。14、下列數(shù)據(jù)結構中,能夠按照“先進后出”原則存取數(shù)據(jù)的是()。A、循環(huán)隊列B、棧C、隊列D、二叉樹標準答案:B知識點解析:棧是按先進后出的原則組織數(shù)據(jù)的。隊列是先進先出的原則組織數(shù)據(jù)。15、有以下程序#include#includestructA{inta;charb[10];doublec;};structAf(structAt);main(){structAa={1001,“ZhangDa”,1098.0};a=ffa);printf(“%d,%s,%6.1f\n”,a.a(chǎn),a.b,a.c);}structAf(structAt){t.a(chǎn)=1002;strcpy(t.b,“WangPeng”);t.C=1220.0;retumt;}程序運行后的輸出結果是()。A、1001,ZhangDa,1098.0B、1002,ZhangDa,1220.0C、1001,WangPeng,1098.0D、1002,WangPeng,1220.0標準答案:D知識點解析:在主函數(shù)中定義結構體A的變量a,并對其賦初值,再調(diào)用函數(shù)f(a),在函數(shù)f(a)中對結構體變量a的各個成員重新進行了賦值操作,并把其值返回在屏幕上輸出。16、一般情況下,當對關系R和S進行自然連接時,要求R和S含有一個或者多個共有的()。A、記錄B、行C、屬性D、元組標準答案:C知識點解析:進行自然連接時要求兩個關系具有相同列,即屬性。17、有以下程序:#include<stdio.h>#defineS(x)x*xvoidmain(){intk=5,j=2;printf("%d,%d\n",S(k+j+2),S(j+k+2));}程序的運行結果是()。A、21,18B、81,81C、21,21D、18,18E、D標準答案:A知識點解析:帶參數(shù)的宏的調(diào)用格式:宏名(實參表),替換過程是:用宏調(diào)用提供的實參字符串,直接替換宏定義命令行中相應形參字符串,非形參字符保持不變。s(k+j+2)被S換成k+j+2*k+j+2,計算時先計算2*k,結果為21;S(j+k+2)被S換成j+k+2*j+k+2,計算時先計算2*j,結果為18。程序的運行結果是21,18。18、有如下程序#include<stdio.h>main(){inti,data;scanf("%d",&data);for(i=0;i<5;i++){if((i<data&&i%2)||(i>data&&i%3==0))continue;printf("%d,",i);程序運行時,從鍵盤輸入:13<回車>后,程序輸出結果為()。A、0,2.4,B、1,3,5,C、0,1,2.3,4,5,D、0,1,2,3,標準答案:A知識點解析:程序通過scanf()函數(shù),輸入data的值13,for循環(huán)中,i的值遍歷0~4,對每個i的值執(zhí)行if語句判斷,其中:i>data始終為假;所以表達式i>data&&i%3==0始終為假;所以if語句的判斷條件需要看i<data&&i%2的值,由于i<data始終為真,所以i<data&&i%2的值又取決于i%2的值,也就是說整個if語句的判斷條件取決于i%2的值,如果i%2為真,那么if語句成立,執(zhí)行continue,否則執(zhí)行printf()函數(shù),所以當i取值l、3時,i%2的為1,if條件成立,執(zhí)行continue;當i取值0、2、4時,i%2的值為0,if條件不成立,執(zhí)行printf()函數(shù),輸出0,2,4,本題答案為A。19、下述語句中,在字符串s1和s2相等時顯示“theyareEqual”的是()。.A、if(*s1==*s2)puts("theyareEqual");B、if(!strcmp(s1,s2))puts("theyareEqual");C、if(s1==s2)Puts("theyareEqual");D、if(strcmp(s1,s2))puts("theyareEqual");標準答案:B知識點解析:字符串比較不能用兩個等號(==)來進行比較,應使用strcmp(s1,s2)函數(shù)來比較。strcmp(s1,s2)函數(shù)的功能是:當字符串s1和s2相等時,返回值為0,因此,當表達式!strcmp(s1,s2)==1時,條件成立,執(zhí)行后面的語句,輸出thevareEqual。20、有以下程序#include<stdio.h>main(){inta=2,b;b=a<<2;printf("%d\n",b);}程序運行后的輸出結果是A、2B、4C、6D、8標準答案:D知識點解析:本題考查位運算符,題目中將a向左移兩位,左移兩位表示乘以4,所以答案為8,選項D正確。21、以下敘述中錯誤的是()。A、使用三種基本結構構成的程序只能解決簡單問題B、結構化程序由順序、分支、循環(huán)三種基本結構組成C、C語言是一種結構化程序設計語言D、結構化程序設計提倡模塊化的設計方法標準答案:A知識點解析:暫無解析22、有以下程序#includetypedefstruct{intb,p;}A;voidf(Ac)/*注意:c是結構變量名*/{intj;c.b+=1;c.p+=2;}main(){inti;Aa={1,2};f(a);printf("%d,%d\n",a.b,a.p);}程序運行后的輸出結果是()。A、1,2B、2,4C、1,4D、2,3標準答案:A知識點解析:暫無解析23、以下選項中關于程序模塊化的敘述錯誤的是()。A、可采用自底向上、逐步細化的設計方法把若干獨立模塊組裝成所要求的程序B、把程序分成若干相對獨立、功能單一的模塊,可便于重復使用這些模塊C、把程序分成若干相對獨立的模塊,可便于編碼和調(diào)試D、可采用自頂向下、逐步細化的設計方法把若干獨立模塊組裝成所要求的程序標準答案:A知識點解析:程序模塊化思想中,可以采用自頂向下、逐步細化的方法。所以選項A中“自底向上”的說法是錯誤的。24、軟件生命周期是指()。A、軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程B、軟件從需求分析、設計、實現(xiàn)到測試完成的過程C、軟件的開發(fā)過程D、軟件的運行維護過程標準答案:A知識點解析:通常,將軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程稱為軟件生命周期。也就是說,軟件產(chǎn)品從考慮其概念開始,到該軟件產(chǎn)品不能使用為止的整個時期都屬于軟件生命周期。25、有以下程序:#include<stdio.h>main(){inta=1,b=3,c=5;int*p1=&a,*p2=&b,*p=&c;*p=*p1*(*p2);printf("%d\n",c);}程序執(zhí)行后的輸出結果是()。A、1B、2C、3D、4標準答案:C知識點解析:該程序中int*p1=&a,*p2=&b,*p=&c;指定義三個指針變量,并賦值,即使p1指向a;p2指向b;p指向c。*p=*p1*(*p2);該條語句是給p所指的存儲單元c賦值,就是p1所指的存儲單元的值,即a的值,與p2所指的存儲單元b的值相乘,也就是c=a*b,等價于c=1*3=3;因此C選項正確。26、在C語言中,只有在使用時才占用內(nèi)存單元的變量,其存儲類型是()。A、auto和staticB、extern和registerC、auto和registerD、static和register標準答案:C知識點解析:auto:函數(shù)中的局部變量,動態(tài)地分配存儲空間,數(shù)據(jù)存儲在動態(tài)存儲區(qū)中,在調(diào)用該函數(shù)時系統(tǒng)會給它們分配存儲空間,在函數(shù)調(diào)用結束時就自動釋放這些存儲空間。register:為了提高效率,C語言允許將局部變量的值放在CPU的寄存器中,這種變量叫“寄存器變量”,只有局部自動變量和形式參數(shù)可以作為寄存器變量。extern:外部變量(即全局變量)是在函數(shù)的外部定義的,它的作用域從變量定義處開始,到本程序文件的末尾。如果外部變量不在文件的開頭定義,其有效的作用范圍只限于定義處到文件終了。static:靜態(tài)局部變量屬于靜態(tài)存儲類別,在靜態(tài)存儲區(qū)內(nèi)分配存儲單元。靜態(tài)局部變量在程序整個運行期間都不釋放。27、下列條件語句中,輸出結果與其他語句不同的是A、if(a!=0)printf("%d\n",x);elseprintf("%d\n",y);B、if(a==0)printf("%d\n",y);elseprintf("%d\n",x);C、if(a==0)printf("%d\n",x);elseprintf("%d\n",y);D、if(a)printf("%d\n",x);elseprintf("%d\n",y);標準答案:C知識點解析:A,B,D選項的含義均為:a的值如果為0時打印y的值,否則打印x的值,但是C選項的含義是:a的值為0時打印x的值,不為0時打印y的值,與其他選項正好相反。28、若有定義:inta,b,c;以下程序段的輸出結果是()。a=11;b=3;c=0:printf("%d\n",c=(a/b,a%b));A、2B、0C、3D、1標準答案:A知識點解析:C語言中,逗號運算符可以把兩個以上(包含兩個)的表達式連接成一個表達式。逗號運算符的優(yōu)先級是所有運算符中級別最低的,逗號運算符保證左邊的子表達式運算結束后才進行右邊的子表達式的運算。也就是說,逗號運算符是一個序列點,其左邊所有副作用都結束后,才對其右邊的子表達式進行運算,并以最右邊表達式值作為整個逗號表達式的值。因此變量c的值為a%b即11%3=2。故答案為A選項。29、下列敘述中正確的是()。A、順序存儲結構的存儲一定是連續(xù)的,鏈式存儲結構的存儲空間不一定是連續(xù)的B、順序存儲結構只針對線性結構,鏈式存儲結構只針對非線性結構C、順序存儲結構能存儲有序表,鏈式存儲結構不能存儲有序表D、鏈式存儲結構比順序存儲結構節(jié)省存儲空間標準答案:A知識點解析:鏈式存儲結構既可以針對線性結構也可以針對非線性結構,所以B)與C)錯誤。鏈式存儲結構中每個結點都由數(shù)據(jù)域與指針域兩部分組成,增加了存儲空間,所以D)錯誤。30、有以下程序:#includemain(){int8[12]={1,2,3,4,4,3,2,1,0,1,2,3},c[5]={0},i;for(i=0;i<12;i++)c[s[i]]++;for(i=0;i<5;i++)printf(’’%d,’’,c[i]);printf(’’\n’’);}程序運行后的輸出結果是()。A、1,3,3,3,2B、4,3,3,3,2C、1,2,3,4,5D、5,4,3,2,1標準答案:A知識點解析:for循環(huán)中是對c[]賦值,但c[]的下標由s[i]確定,所以通過數(shù)s[]中的下標個數(shù)便可知對應的c[]的值,其中s[]的值中,0,1,2,3,4分別出現(xiàn)了1,3,3,3,2次,所以c[0]=1,c[1]=c[2]:c[3]=3,c[4]=2。31、以下敘述中正確的是A、’\0’表示字符0B、a表示一個字符常量C、表達式:’a’>’b’的結果是"假"D、’\"’是非法的標準答案:C知識點解析:A選項中,’\0’表示結束;B選項中,字符常量是用單引號括起來的一個字符;D選項中,’\"’是雙引號符。因此C選項正確。32、用于軟件測試的實例主要包括哪些內(nèi)容?()A、輸入數(shù)據(jù)和測試規(guī)程B、測試程序和輸出結果C、輸入數(shù)據(jù)和預期輸出結果D、輸入數(shù)據(jù)、測試規(guī)程和輸出數(shù)據(jù)標準答案:C知識點解析:用于軟件測試的實例主要包括輸入數(shù)據(jù)和預期輸出結果。33、下列說法正確的是A、int(*def)[10];----def指向一個指針,該指針指向10個整型變量構成的數(shù)組B、int*(*gh[10]);---gh指向一個指針,該指針指向10個整型變量構成的數(shù)組C、int*(*gh[10]);---gh是一個指針,指向由10個指向整型變量的指針構成的數(shù)組D、A,C均正確標準答案:D知識點解析:int*(*gh[10]);---gh是一個指針,指向由10個指向整型變量的指針構成的數(shù)組,int(*def)[10];----def指向一個指針,該指針指向10個整型變量構成的數(shù)組。34、有以下程序#include<stdio.h>main(){intx=23;do{printf("%2d\n",x--);}while(!x);}程序的執(zhí)行結果是A、輸出321B、輸出23C、不輸出任何內(nèi)容D、陷入無限循環(huán)標準答案:B知識點解析:%2d表示輸出的整型變量占2列。程序執(zhí)行過程為:輸出x為23,之后x自減得x=22,!x為假(0),while條件不成立,退出循環(huán)。B選項正確。35、有以下程序#include<stdio.h>main(){inti,*ptr;intarray[4]={0,1};for(ptr=array,i=0;i<3;i++,ptr++){if(*ptr==0)putchar(’#’);elseputchar(’M’+*ptr);}printf("\n");}程序運行后的輸出結果是A、MO#B、#F#C、MMMD、#N#標準答案:D知識點解析:for語句中把array數(shù)組首地址值賦給ptr,ptr++表示每次執(zhí)行完循環(huán)體后,ptr指向下一數(shù)組元素,當指針指向值為0時,輸出#,否則’M’再加上指針對應數(shù)組值進行輸出,當*ptr=1時,’M’+1=’N’,結果輸出為#N#,答案為D選項。36、有以下程序#include<stdio.h>main(){chars1[]="programe",s2[]="Language";char*p1=s1,*p2=s2;intk;for(k=0;k<8;k++)if(*(p1+k)==*(p2+k))printf("%s\n",(p1+k));}程序的運行結果是A、grameameeeB、gaeC、programeD、無輸出字符標準答案:A知識點解析:定義兩個指針變量p1,p2,分別指向數(shù)組s1,s2首地址,在for循環(huán)中,比較兩個指針對應地址的元素是否相等,如果相等,則輸出當前指針指向地址的字符串,答案為A選項。37、設某二叉樹的前序序列與中序序列均為ABCDEFGH,則該二叉樹的后序序列為A、HGFEDCBAB、EFGHABCDC、DCBAHGFED、ABCDEFGH標準答案:A知識點解析:二叉樹遍歷可以分為3種:前序遍歷(訪問根結點在訪問左子樹和訪問右子樹之前)、中序遍歷(訪問根結點在訪問左子樹和訪問右子樹兩者之間)、后序遍歷(訪問根結點在訪問左子樹和訪問右子樹之后)。二叉樹的前序序列與中序序列相同,說明此樹結點沒有左子樹,且第一個節(jié)點A為根節(jié)點,而后序遍歷中根節(jié)點應在最后被訪問,即節(jié)點A在最后出現(xiàn),由此推斷出后序遍歷為HGFEDCBA,故A選項正確.38、有以下程序#include<stdio.h>#include<string.h>main(){inti,len;charb[]="WelcomeyoutoBeijing!";len=strlen(b);for(i=0;i<len;i++)if(b[i]==’’){strcpy(b,b+i+1);i=0;}printf("%s\n",b);}程序運行后的輸出結果是A、Beijing!B、toBeijing!C、WelcomeyoutoBeijing!D、youtoBeijing!標準答案:A知識點解析:for循環(huán)的作用就是每次遇到空格,將空格后面的移動到數(shù)組的最前面。因此數(shù)組最后的狀態(tài)時Beijing!\0g!\0ng!\neijing!\0;但是printf("%s")打印遇到\0自動結束。因此,打印Beijing!。故答案為A選項39、下面函數(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ù)實質上是將字符串t續(xù)接到字符串s中。40、有以下程序:#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"):}程序運行的結果是()。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。二、程序填空題(本題共1題,每題1.0分,共1分。)41、給定程序中,函數(shù)fun的功能是:在任意給定的9個正整數(shù)中找出按升序排列時處于中間的數(shù),將原數(shù)據(jù)序列中比該中間數(shù)小的數(shù)用該中間數(shù)替換,位置不變,在主函數(shù)中輸出處理后的數(shù)據(jù)序列,并將中間數(shù)作為函數(shù)值返回。例如,有9個正整數(shù):1572387582145按升序排列時的中間數(shù)為:8處理后主函數(shù)中輸出的數(shù)列為:8882387882145請在程序的下畫線處填入正確的內(nèi)容并把下畫線刪除,使程序得出正確的結果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結構!試題程序:#include<stdio.h>#defineN9intfun(intx[]){inti,j,k,t,mid,b[N];for(i=0;i<N;i++)b[i]=x[i];for(i=0;i<=N/2;i++){k=i;for(j=i+1;j<N;j++)if(b[k]>b[j])k=j;if(k!=i){/*********found*********/t=b[i];b[i]=【1】;b[k]=t;}}/*********found*********/mid=b[【2】];for(i=0;i<N;i++)/*********found*********/if(x[i]【3】mid)x[i]=mid;returnmid;}main(){inti,x[N]={1,5,7,23,87,5,8,21,45};for(i=0;i<N;i++)printf("%d",x[i]);printf("\nThemiddatais:%d\n",fun(x));for(i=0;i<N,i++)printf("%d",x[i]);printf("\n");}標準答案:(1)b[k](2)4或N/2(3)<知識點解析:數(shù)組中的9個數(shù)任意排列,要找到按升序排列時處于中間位置的數(shù),應首先對數(shù)組進行升序排列。因為只需找到中間位置的數(shù)即可,故不必對整個數(shù)組進行排序,只需要排列出數(shù)組的前半部分。找到中間數(shù)后,遍歷原數(shù)組,將小于中間數(shù)的元素進行替換。填空1:利用選擇算法排序,先指定一個元素為最小,用這個數(shù)與其后的所有數(shù)進行比較,若找小于此數(shù),則進行替換。此處考查替換操作。填空2:元素mid存放中間位置的數(shù),數(shù)組長度為9,因此中問元素數(shù)為b[4]。填空3:遍歷數(shù)組,當元素小于中間位置的數(shù)(即mid)時,進行替換。三、程序修改題(本題共1題,每題1.0分,共1分。)42、下列給定程序中函數(shù)fun的功能是:將p所指字符串中的所有字符復制到b中,要求每復制三個字符之后插入一個空格。例如,若給a輸入字符串:ABCDEFGKHIJK,調(diào)用函數(shù)后,字符數(shù)組b中的內(nèi)容為:ABCDEFGHIJK。請改正程序中的錯誤,使它能得出正確的結果。注意:部分源程序在文件MODI1.C中,不得增行或刪行,也不得更改程序的結構。#include<stdio.h>voidfun(char*p,char*b){inti,k=0;while(*p){i=1;while(i<=3&&*p){/**********found**********/b[k]=p;k++;P++;i++;}if(*p){/**********found**********/b[k++]="";}}b[k]=’\0’;}main(){chara[80],b[80];printf("Enterastring:");gets(a);printf("Theoriginalstring:");puts(a);fun(a,b);printf("\nThestringafterinsertspace:");puts(b);printf("\n\n");}標準答案:(1)b[k]=*p;(2)b[k]=’’;k++;。知識點解析:本題考查:指針類型變量作為函數(shù)的參數(shù),函數(shù)的參數(shù)不僅可以是整型、實型、字符型等數(shù)據(jù)類型,還可以是指針類型。它的作用是將一個變量的地址傳送到另一個函數(shù)中。C語言中為了表示指針變量和它所指向的變量之間的關系,在程序中用“*”符號表示“指向”,例如,pointer代表指針變量,而*pointer是pointer所指向的變量。四、程序設計題(本題共1題,每題1.0分,共1分。)43、假定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun,它的功能是:將字符串尾部的*號全部刪除,前面和中間的*號不刪除。例如,字符串中的內(nèi)容為:*A*BC*DEF*G*,刪除后,字符串中的內(nèi)容應當是:*A*BC*DEF*G。在編寫函數(shù)時,不得使用C語言提供的字符串函數(shù)。注意:部分源程序在文件PROG1.C文件中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#includevoidfun(char*a){}main(){chars[81];voidNONO();printf("Enterastring:\n");gets(s);fun(s);printf("Thestringafterdeleted:\n");puts(s);NON0();}voidNONO(){/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關閉文件。*/FILE*in,*out;inti;chars[81];in=fopen("in.dat","r");out=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(in,"%s",s);fun(s);fprintf(out,"%s\n",s);}fclose(in);fclose(out);}標準答案:inti=0:char*p,*q;p=q=a;while(*p)p++;P--;while(*P==’*’)P--;while(q<=p){a[i]=*q;i++:q++;}a[i]=’\0’;知識點解析:(1)首先,使用一個指針P指向串尾,然后對指向串尾的指針P指向的字符進行判斷,如果是“*”,指針P就跳過,這樣來設置一個指針變量q指向字符串的頭位置。(2)然后,將由字符串起始到最后一個字母之間的字符拷貝到字符串a(chǎn)。(3)最后,在新生成的字符串尾加’\0’。國家二級(C語言)機試模擬試卷第3套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開考生文件夾下blank1中的解決方案。此解決方案的項目中包含一個源程序文件blank1.c。在此程序中,通過定義并賦初值的方式,利用結構體變量存儲了一名學生的學號、姓名和3門課的成績。函數(shù)fun的功能是將該學生的各科成績都乘以一個系數(shù)a。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結構!試題程序:#include<stdio.h>typedefstruct{intnum;charname[9];floatscore[3];}STU;voidshow(STUtt){inti;printf("%d%s:",tt.num,tt.name);for(i=0;i<3;i++)printf("%5.1f",tt.score[i]);printf("\n");}/*********found*********/voidmodify(【1】*ss,floata){inti;for(i=0;i<3;i++)/*********found*********/ss->【2】*=a;}main(){STUstd={1,"Zhanghua",76.5,78.0,82.0};floata;printf("\nTheoriginalnumberandnameandscores:\n");show(std);printf("\nInputanumber:");scanf("%f",&a);/*********found*********/modify(【3】,a);printf("\nAresultofmodifying:\n");show(std);}標準答案:(1)STU(2)score[i](3)&std知識點解析:本題是利用結構體存儲學生記錄,對記錄進行修改并由實參ss返回。填空1:實參ss是一個結構型指針變量,所以應填STU。填空2:該學生的各科成績都乘以一個系數(shù)a,所以應填score[i]。填空3:函數(shù)的調(diào)用,由于函數(shù)定義時使用的指針結構型變量,所以應填&stdc,【考點
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度國際專利申請代理合同模板
- 2025年度工業(yè)產(chǎn)品售后服務合同規(guī)范
- 2025年度酒店后廚員工培訓與管理綜合服務合同
- 2025年度石材展會組織與服務合同模板
- 赤峰2025年內(nèi)蒙古喀喇沁旗錦山中學引進教師9人筆試歷年參考題庫附帶答案詳解
- 茂名2025年廣東茂名市公安局招聘警務輔助人員50人筆試歷年參考題庫附帶答案詳解
- 苯噻草胺項目融資計劃書
- 潮州2024年廣東潮州市科學技術局屬下事業(yè)單位招聘10人(第二輪)筆試歷年參考題庫附帶答案詳解
- 普洱2025年云南普洱市商務局招聘城鎮(zhèn)公益性崗位工作人員筆試歷年參考題庫附帶答案詳解
- 文山云南文山硯山縣住房和城鄉(xiāng)建設局招聘公益性崗位人員筆試歷年參考題庫附帶答案詳解
- 跨河管道桁架施工方案完整
- 源代碼審計報告模板
- 施工組織設計模板
- 含碘對比劑靜脈外滲護理管理實踐指南
- 部編版小學五年級語文教材培訓課件【部編】
- 盆景造型經(jīng)驗
- 能力不足方面存在的問題及整改措施【9篇】
- 悟真篇-薛道光注
- 重大危險源公示牌(完整)-2
- 物理學史中國古代物理學
- 初一英語英語閱讀理解專項訓練15篇
評論
0/150
提交評論