




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
國(guó)家二級(jí)(C語(yǔ)言)機(jī)試模擬試卷50(共9套)(共345題)國(guó)家二級(jí)(C語(yǔ)言)機(jī)試模擬試卷第1套一、選擇題(本題共39題,每題1.0分,共39分。)1、下面函數(shù)的功能是()。sss(s,t)char*s,*t;{while(*s);while(*t)*(s++)=*(t++);returns;}A、將字符串s復(fù)制到字符串t中B、比較兩個(gè)字符串的大小C、求字符串的長(zhǎng)度D、將字符串t續(xù)接到字符串S中標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查指針變量的運(yùn)用。本題中的函數(shù)實(shí)質(zhì)上是將字符串t續(xù)接到字符串s中。2、一棵二叉樹(shù)中共有80個(gè)葉子結(jié)點(diǎn)與70個(gè)度為1的結(jié)點(diǎn),則該二叉樹(shù)中的總結(jié)點(diǎn)數(shù)為()。A、219B、229C、230D、231標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:二叉樹(shù)中,度為0的結(jié)點(diǎn)數(shù)等于度為2的結(jié)點(diǎn)數(shù)加1,即n2=n0-1,葉子結(jié)點(diǎn)即為0,則n2=79,總結(jié)點(diǎn)數(shù)為n0+n1+n2=80+70+79=229。故B選項(xiàng)正確。3、兩次運(yùn)行下面的程序,如果從鍵盤(pán)上分別輸入3和2,則輸出結(jié)果是()。#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標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題考查if-else語(yǔ)句。首先,scanf函數(shù)通過(guò)鍵盤(pán)讀入x的值。當(dāng)x=3時(shí),第一個(gè)if語(yǔ)句先判斷條件,取x的值3和2比較,然后將x的值加1,if條件成立,執(zhí)行下面的printf語(yǔ)句,輸出x的值4。當(dāng)x=2時(shí),第一個(gè)if語(yǔ)句先判斷條件,先取x的值2和2比較,然后將x的值加1(x的值變?yōu)?),if條件不成立,執(zhí)行下面的else語(yǔ)句,先輸出x的值3,再將x的值減1。4、下面程序的運(yùn)行結(jié)果是()。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標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查printf函數(shù)的輸出格式和條件表達(dá)式“?:”的使用。①printf函數(shù)輸出時(shí)“**%d\n”和“##%d\n”中的“##”和“**”都是直接輸出。②條件表達(dá)式的基本格式為:“a?b:c”。它的運(yùn)算規(guī)則為:當(dāng)a為非0時(shí),整個(gè)表達(dá)式的值取b的值,當(dāng)a為0時(shí),整個(gè)表達(dá)式取c的值。5、若有定義:floatx=1.5;inta=1,b=3,c=2;則正確的switch語(yǔ)句是()。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”);}標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:B選項(xiàng)中switch((int)x);語(yǔ)句中不應(yīng)該有最后的分號(hào)。switch(expr1),中的expr1不能用浮點(diǎn)類型或long類型,也不能為一個(gè)字符串,所以C錯(cuò)誤。case后面常量表達(dá)式的類型必須與switch后面表達(dá)式的類型一致,所以D錯(cuò)誤。6、在printf的格式字符中,e格式字符的作用是()。A、以十六進(jìn)制無(wú)符號(hào)形式輸出整數(shù)B、以帶符號(hào)的十進(jìn)制形式輸出整數(shù)C、以指數(shù)形式輸出實(shí)數(shù)D、以字符形式輸出,且只輸出一個(gè)字符標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:本題考查printf函數(shù)的格式。格式字符“e”或者“E”都表示以指數(shù)形式輸出單精度或雙精度數(shù)。7、在printf的格式字符中,e格式字符的作用是()。A、以十六進(jìn)制無(wú)符號(hào)形式輸出整數(shù)B、以帶符號(hào)的十進(jìn)制形式輸出整數(shù)C、以指數(shù)形式輸出實(shí)數(shù)D、以字符形式輸出,且只輸出一個(gè)字符標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:本題考查printf函數(shù)的格式。格式字符“e”或者“E”都表示以指數(shù)形式輸出單精度或雙精度數(shù)。8、下列程序的運(yùn)行結(jié)果是()。#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,標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題中sub(int*s,int*y)函數(shù)的參數(shù)是兩個(gè)指針型變量,在函數(shù)體內(nèi)將數(shù)組s的第一個(gè)元素賦給y。主程序內(nèi),首先定義了一維數(shù)組并賦初值,然后通過(guò)for循環(huán),5次調(diào)用sub(a,&x)函數(shù),每一次調(diào)用都是將數(shù)組a的第一個(gè)元素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;}}程序的運(yùn)行結(jié)果是()。A、20,30,B、30,17C、15,30,D、20,15,標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查的是指針和結(jié)構(gòu)的應(yīng)用。首先定義的數(shù)組tt中有兩個(gè)成員,一個(gè)整型變量,一個(gè)結(jié)構(gòu)指針。當(dāng)i=1時(shí),p指針指向結(jié)構(gòu)數(shù)組的第一個(gè)元素,并輸出此元素的第一個(gè)成員x,即20;當(dāng)i=2時(shí),p指針指向結(jié)構(gòu)數(shù)組的第二個(gè)元素的第一個(gè)成員,所以輸出15。10、以下關(guān)于long、int和short類型數(shù)據(jù)占用內(nèi)存大小的敘述中正確的是()。A、均占4個(gè)字節(jié)B、根據(jù)數(shù)據(jù)的大小來(lái)決定所占內(nèi)存的字節(jié)數(shù)C、由用戶自己定義D、由C語(yǔ)言編譯系統(tǒng)決定標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:不同的編譯系統(tǒng)或計(jì)算機(jī)系統(tǒng)對(duì)幾類整型數(shù)所占用的字節(jié)數(shù)有不同的規(guī)定。10ng、int和short類型數(shù)據(jù)占用內(nèi)存大小是由選擇何種C編譯系統(tǒng)決定的。11、以下定義數(shù)組的語(yǔ)句中錯(cuò)誤的是()。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};標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:B)選項(xiàng)中定義的數(shù)組為2行4列,而賦值時(shí)賦成了3行所以出錯(cuò)。12、設(shè)有如下函數(shù)定義:#include<stdio.h>intfun(intk){if(k<1)return0;elseif(k==1)return1;elsereturnfun(k-1)+1;}若執(zhí)行調(diào)用語(yǔ)句:n=fun(3);,則函數(shù)fun總共被調(diào)用的次數(shù)是()。A、2B、3C、4D、5標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:首先n=fun(3),3被當(dāng)作參數(shù)傳遞進(jìn)去,這就進(jìn)行了一次調(diào)用,3被當(dāng)做參數(shù)傳進(jìn)去后,程序會(huì)執(zhí)行這句elsereturnfun(k-1)+1;這就調(diào)用了第二次,而參數(shù)是3-1也就是2。2被當(dāng)做參數(shù)傳進(jìn)去后,程序會(huì)執(zhí)行這句elsereturnfun(k-1)+1;這就調(diào)用了第三次,而參數(shù)是2-1也就是1。1被當(dāng)做參數(shù)傳進(jìn)去后,程序會(huì)執(zhí)行這句elseif(k==1)return1;不再遞歸調(diào)用,所以最終結(jié)果為3次。13、以下選項(xiàng)中可用作C程序合法實(shí)數(shù)的是()。A、1e0B、3.0e0.2C、E9D、9.12E標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:C程序的合法實(shí)數(shù)有兩種表示形式,一種是小數(shù)形式,另一種是指數(shù)形式,對(duì)于用指數(shù)形式表示的實(shí)數(shù)來(lái)說(shuō),需要注意的是字母e或E之前必須要有數(shù)字,且字母e或E后面的指數(shù)必須為整數(shù),所以選項(xiàng)A為正確答案。14、下面關(guān)于算法的敘述中,正確的是()。A、算法的執(zhí)行效率與數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)無(wú)關(guān)B、算法的有窮性是指算法必須能在執(zhí)行有限個(gè)步驟之后終止C、算法的空間復(fù)雜度是指算法程序中指令(或語(yǔ)句)的條數(shù)D、以上三種描述都正確標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:算法在運(yùn)行過(guò)程中需輔助存儲(chǔ)空間的大小稱為算法的空間復(fù)雜度。算法的有窮性是指一個(gè)算法必須在執(zhí)行有限的步驟后結(jié)束。15、若變量已正確定義并賦值,則以下符合C語(yǔ)言語(yǔ)法的表達(dá)式是()。A、a=a+7;B、a=7+b+c,a++C、int(12.3%4)D、a=a+7=c+b標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:選項(xiàng)A是一個(gè)C語(yǔ)句,不是表達(dá)式;選項(xiàng)B是利用一個(gè)逗號(hào)表達(dá)式給a賦值;選項(xiàng)C中的“%”求余運(yùn)算符要求兩個(gè)運(yùn)算對(duì)象都必須是整型;選項(xiàng)D中,不能用表達(dá)式給表達(dá)式賦值,但是變量可以給自身賦值,例如:a=a+1。16、有以下程序:#include#defineX5+6main(){inta=2,c;C=x*2;printf("%d",c);}程序運(yùn)行后的輸出結(jié)果是()。A、17B、22C、16D、11標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:define語(yǔ)句僅進(jìn)行簡(jiǎn)單替換,因此c=5+6*2=17。17、在關(guān)系中凡能惟一標(biāo)識(shí)元組的最小屬性集稱為該表的鍵或碼。二維表中可能有若干個(gè)鍵,它們稱為該表的()。A、連接碼B、關(guān)系碼C、外碼D、候選碼標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:在關(guān)系中凡能惟一標(biāo)識(shí)元組的最小屬性集稱為該表的鍵或碼。二維表中可能有若干個(gè)鍵,它們稱為該表的候選碼或候選鍵。從二維表的所有候選鍵中選取一個(gè)作為用戶使用的鍵稱為主鍵或主碼。18、以下能正確表述算式sin(2πr+30°)的C語(yǔ)言表達(dá)式是()。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)標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:考查算術(shù)表達(dá)式的寫(xiě)法,C中沒(méi)有π,需要用數(shù)值3.14代替,C中sin函數(shù)的參數(shù)為弧度,角度30轉(zhuǎn)成弧度應(yīng)為3.14*30/180。故而選A)。19、有以下程序#includeintfun(intas*intb){if(b==0)returna;elsereturn(fun(--a,--b));}main(){pfintf("%d\n",fun(4,2));}程序的運(yùn)行結(jié)果是()。A、1B、2C、3D、4標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:由程序可知,函數(shù)fun(inta,intb)是一個(gè)遞歸函數(shù)。所以當(dāng)主函數(shù)中調(diào)用fun(4,2)時(shí),其執(zhí)行過(guò)程如下:fun(4,2)->fun(3,1)->fun(2,0),其返回值為2。所以正確答案為選項(xiàng)B)。20、下列程序的運(yùn)行結(jié)果為()。#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標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題考查函數(shù)調(diào)用是的參數(shù)傳遞。通過(guò)函數(shù)abc的執(zhí)行,將字符串中的字母a去掉,保留剩下的,由于是通過(guò)指針調(diào)用,所以改變字符串的結(jié)果。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);}程序運(yùn)行后的輸出結(jié)果是()。A、0B、9C、6D、8標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:主函數(shù)中iJ吉j用f函數(shù),同時(shí)將數(shù)值3傳遞給變量x,執(zhí)行條件不滿足條件if(x==0||x==1);跳過(guò)return(3);,直接執(zhí)行語(yǔ)句y=x*x-f(x-2);這里f(x-2)為函數(shù)的遞歸調(diào)用,再次調(diào)用f函數(shù),此時(shí)x=1,判斷條件成立,返回3給f(1),y=3*3-3=6,最后將6返回主函數(shù),并進(jìn)行輸出。因此C選項(xiàng)正確。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]);}則程序運(yùn)行后的輸出結(jié)果是()。A、0B、2C、1D、3標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:該題首先初始化一維數(shù)組a[3]所有元素都為0;執(zhí)行嵌套循環(huán)for語(yǔ)句,當(dāng)i=0、j=0時(shí),a[0]=a[0]+1=1;當(dāng)i=0、j=1時(shí),a[1]=a[0]+l=2;當(dāng)i=1、j=0時(shí),a[0]=a[1]+1=3;當(dāng)i=1、j=1時(shí),a[1]=a[1]+1=3;因此D選項(xiàng)正確。23、設(shè)有宏定義:#defineIsDIV(k,n)((k%n==1)?1:0)且變量m已正確定義并賦值,則宏調(diào)用:IsDIV(m,5)&&IsDIV(m,7)為真時(shí)所要表達(dá)的是()。A、判斷m被5和7整除是否都余1B、判斷m是否能被5和7整除C、判斷m被5或者7整除是否余1D、判斷m是否能被5或者7整除標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:暫無(wú)解析24、在數(shù)據(jù)庫(kù)設(shè)計(jì)中,將E-R圖轉(zhuǎn)換成關(guān)系數(shù)據(jù)模型的過(guò)程屬于()。A、需求分析階段B、概念設(shè)計(jì)階段C、邏輯設(shè)計(jì)階段D、物理設(shè)計(jì)階段標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:E-R圖轉(zhuǎn)換成關(guān)系模型數(shù)據(jù)則是把圖形分析出來(lái)的聯(lián)系反映到數(shù)據(jù)庫(kù)中,即設(shè)計(jì)出表,所以屬于輯設(shè)計(jì)階段。25、以下關(guān)于return語(yǔ)句的敘述中正確的是()。A、一個(gè)自定義函數(shù)中必須有一條return語(yǔ)句B、一個(gè)自定義函數(shù)中可以根據(jù)不同情況設(shè)置多條return語(yǔ)句C、定義成void類型的函數(shù)中可以有帶返回值的return語(yǔ)句D、沒(méi)有return語(yǔ)句的自定義函數(shù)在執(zhí)行結(jié)束時(shí)不能返回到調(diào)用處標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:在函數(shù)中允許有多個(gè)return語(yǔ)句,但每次調(diào)用只能有一個(gè)return語(yǔ)句被執(zhí)行,因此只能返回一個(gè)函數(shù)值。定義成void類型的函數(shù),不允許從該函數(shù)取得返回值,也不允許使用return語(yǔ)句,C選項(xiàng)描述錯(cuò)誤。沒(méi)有return語(yǔ)句的函數(shù)在執(zhí)行到函數(shù)的最后一條語(yǔ)句后會(huì)自動(dòng)返回到調(diào)用處,A、D選項(xiàng)描述錯(cuò)誤。因此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);}程序運(yùn)行后的輸出結(jié)果是()。A、abB、a*bC、*****a*bD、a*b****標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:在函數(shù)fun(char*a,char*b)中,while(*a==’*’)a++的功能是:如果*a的內(nèi)容為‘*’,則a指針向后移動(dòng),直到遇到非’*’字符為止,退出循環(huán)進(jìn)入下一個(gè)while循環(huán),在while(*b=*a){b++;a++;}中,把字符數(shù)組a中的字符逐個(gè)賦給字符數(shù)組b。所以在主函數(shù)中,執(zhí)行fun(s,t)語(yǔ)句后,字符數(shù)組t中的內(nèi)容為“a*b****”。因此D選項(xiàng)正確。27、某二叉樹(shù)共有530個(gè)結(jié)點(diǎn),其中度為2的結(jié)點(diǎn)有250個(gè),則度為1的結(jié)點(diǎn)數(shù)為()。A、29B、30C、249D、251標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:在樹(shù)結(jié)構(gòu)中,一個(gè)結(jié)點(diǎn)所擁有的后件個(gè)數(shù)稱為該結(jié)點(diǎn)的度,所有結(jié)點(diǎn)中最大的度稱為樹(shù)的度。對(duì)任何一棵二叉樹(shù),度為0的結(jié)點(diǎn)總是比度為2的結(jié)點(diǎn)多一個(gè)。二叉樹(shù)結(jié)點(diǎn)總數(shù)為530,度為2的結(jié)點(diǎn)有250個(gè),則度為0的結(jié)點(diǎn)有251個(gè),那么度為1的結(jié)點(diǎn)個(gè)數(shù)為530-250-251=29。故選A選項(xiàng)。28、有以下程序:#include<stdio.h>strutS{inta,b;}data[2]={10,100,20,200};main(){structSP=data[1];printf("%d\n",++(p.a(chǎn)));程序運(yùn)行后的輸H{結(jié)果是()。A、10B、11C、20D、21標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:數(shù)組data包含兩個(gè)元素,元素類型為結(jié)構(gòu)體S,分別為data[0],data[1],初始化時(shí),使用4個(gè)整數(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操作,所以結(jié)果為21,答案選D。29、C語(yǔ)言程序的模塊化通過(guò)以下哪個(gè)選項(xiàng)來(lái)實(shí)現(xiàn)()。A、函數(shù)B、變量C、程序行D、語(yǔ)句標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:暫無(wú)解析30、以下敘述中錯(cuò)誤的是()。A、可以給指針變量賦一個(gè)整數(shù)作為地址值B、函數(shù)可以返回地址值C、改變函數(shù)形參的值,不會(huì)改變對(duì)應(yīng)實(shí)參的值D、當(dāng)在程序的開(kāi)頭包含頭文件stdio.h時(shí),可以給指針變量賦NULL標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:暫無(wú)解析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);}程序的輸出結(jié)果是A、0B、1C、9D、10標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題考查宏定義,宏定義只是做個(gè)簡(jiǎn)單的替換,執(zhí)行SQR(k+m)/SQR(k+m)=k+m*k+m/k+m*k+m=15/2,a/=SQR(k+m)/SQR(k+m)的結(jié)果為1,選項(xiàng)B正確。32、為了使模塊盡可能獨(dú)立,要求()。A、內(nèi)聚程度要盡量高,耦合程度要盡量強(qiáng)B、內(nèi)聚程度要盡量高,耦合程度要盡量弱C、內(nèi)聚程度要盡量低,耦合程度要盡量弱D、內(nèi)聚程度要盡量低,耦合程度要盡量強(qiáng)標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:模塊獨(dú)立性是指每個(gè)模塊只完成系統(tǒng)要求的獨(dú)立的子功能,并且與其他模塊的聯(lián)系最少且接口簡(jiǎn)單。耦合性與內(nèi)聚性是模塊獨(dú)立性的兩個(gè)定性標(biāo)準(zhǔn),耦合與內(nèi)聚是相互關(guān)聯(lián)的。在程序結(jié)構(gòu)中,各模塊的內(nèi)聚性越強(qiáng),則耦合性越弱。一般較優(yōu)秀的軟件設(shè)計(jì),應(yīng)盡量做到高內(nèi)聚,低耦合,即減弱模塊之間的耦合性和提高模塊內(nèi)的內(nèi)聚性,有利于提高模塊的獨(dú)立性。33、若函數(shù)調(diào)用時(shí)的實(shí)參為變量,以下關(guān)于函數(shù)形參和實(shí)參的敘述中正確的是()。A、函數(shù)的實(shí)參和其對(duì)應(yīng)的形參共占同一存儲(chǔ)單元B、形參只是形式上的存在,不占用具體存儲(chǔ)單元C、同名的實(shí)參和形參占同一存儲(chǔ)單元D、函數(shù)的形參和實(shí)參分別占用不同的存儲(chǔ)單元標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:在C語(yǔ)言中,函數(shù)的實(shí)參單元與形參單元在內(nèi)存中分配不同的存儲(chǔ)單元。在調(diào)用函數(shù)時(shí),給形參分配臨時(shí)存儲(chǔ)單元,并將實(shí)參對(duì)應(yīng)的值傳遞給形參,在被調(diào)用函數(shù)中對(duì)形參存儲(chǔ)單元中的值進(jìn)行運(yùn)算,最后通過(guò)return語(yǔ)句把函數(shù)值返回調(diào)用函數(shù)。當(dāng)調(diào)用結(jié)束后,形參單元被釋放,實(shí)參單元仍保留并維持原值。34、運(yùn)動(dòng)會(huì)中一個(gè)運(yùn)動(dòng)項(xiàng)目可以有多名運(yùn)動(dòng)員參加,一個(gè)運(yùn)動(dòng)員可以參加多個(gè)項(xiàng)目。則實(shí)體項(xiàng)目和運(yùn)動(dòng)員之間的聯(lián)系是A、多對(duì)多B、一對(duì)多C、多對(duì)一D、一對(duì)一標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:一般來(lái)說(shuō),實(shí)體集之間必須通過(guò)聯(lián)系來(lái)建立聯(lián)接關(guān)系,分為三類:一對(duì)一聯(lián)系(1:1)、一對(duì)多聯(lián)系(1:m)、多對(duì)多聯(lián)系(m:n)。一個(gè)運(yùn)動(dòng)項(xiàng)目有很多運(yùn)動(dòng)員參加,而一個(gè)運(yùn)動(dòng)員可以參加多項(xiàng)運(yùn)動(dòng)項(xiàng)目,故實(shí)體項(xiàng)目和運(yùn)動(dòng)員之間的聯(lián)系是多對(duì)多,A選項(xiàng)正確。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);}程序運(yùn)行后的輸出結(jié)果是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標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:C語(yǔ)言函數(shù)參數(shù)傳遞大致分為:1、值傳遞過(guò)程中,被調(diào)函數(shù)的形參作為被調(diào)函數(shù)的局部變量處理,即在內(nèi)存的堆棧中開(kāi)辟空間以存放由主調(diào)函數(shù)放進(jìn)來(lái)的實(shí)參的值,從而成為了實(shí)參的一個(gè)拷貝。值傳遞的特點(diǎn)是被調(diào)函數(shù)對(duì)形參的任何操作都是作為局部變量進(jìn)行,不會(huì)影響主調(diào)函數(shù)的實(shí)參變量的值。2、地址傳遞過(guò)程中,被調(diào)函數(shù)的形參雖然也作為局部變量在堆棧中開(kāi)辟了內(nèi)存空間,但是這時(shí)存放的是由主調(diào)函數(shù)放進(jìn)來(lái)的實(shí)參變量的地址。被調(diào)函數(shù)對(duì)形參的任何操作都被處理成間接尋址,即通過(guò)堆棧中存放的地址訪問(wèn)主調(diào)函數(shù)中的實(shí)參變量。正因?yàn)槿绱耍徽{(diào)函數(shù)對(duì)形參做的任何操作都影響了主調(diào)函數(shù)中的實(shí)參變量。結(jié)構(gòu)體中name是數(shù)組,做實(shí)參傳遞,會(huì)退化為指針,因此調(diào)用f(),發(fā)生修改,其他的成員,傳遞的是拷貝,不會(huì)被修改。因此輸出Sun,f,350。故答案為A選項(xiàng)。36、設(shè)有以下程序段structbook{floatprice;charlanguage;chartitle[20];}rec,*ptr;ptr=&rec;要求輸入字符串給結(jié)構(gòu)體變量rec的title成員,錯(cuò)誤的輸入語(yǔ)句是A、scanf("%s",ptr.title);B、scanf("%s",rec.title);C、scanf("%s",(*ptr).title);D、scanf("%s",ptr->title);標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:"->"是指針特用的,"."用于指定元素的成員。ptr是指針,只能用->,因此選項(xiàng)A錯(cuò)誤。*p是指定元素(rec)可以使用.運(yùn)算,因此選項(xiàng)D正確。選項(xiàng)B,rec.title代表數(shù)組title,同理選項(xiàng)C正確。答案為A選項(xiàng)。37、若有定義語(yǔ)句:intyear=2009,*p=&year;以下各項(xiàng)中不能使變量year中的值增至2010的語(yǔ)句是()。A、(*p)++;B、*p++;C、++(*p);D、*p+=1;標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:指針變量存儲(chǔ)的是其指向的變量的地址,*p表示的是p指向的變量的值,自加運(yùn)算符(++)的優(yōu)先級(jí)要高于取值運(yùn)算符(*)的優(yōu)先級(jí),*p++表示的是先將指針P指向下一個(gè)地址,然后再取該地址的值,所以得到的結(jié)果并不是把year的值增至2010,故B選項(xiàng)錯(cuò)誤。38、下列選項(xiàng)中,不屬于數(shù)據(jù)管理員(DBA)職責(zé)的是()。A、數(shù)據(jù)庫(kù)維護(hù)B、數(shù)據(jù)庫(kù)設(shè)計(jì)C、改善系統(tǒng)性能,提高系統(tǒng)效率D、數(shù)據(jù)類型轉(zhuǎn)換標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:數(shù)據(jù)庫(kù)管理員(DataBaseAdminiswator,DBA)是指對(duì)數(shù)據(jù)庫(kù)的規(guī)劃、設(shè)計(jì)、維護(hù)、監(jiān)視等的人員,其主要工作如下:數(shù)據(jù)庫(kù)設(shè)計(jì)。DBA的主要任務(wù)之一是數(shù)據(jù)庫(kù)設(shè)計(jì),具體地說(shuō)是進(jìn)行數(shù)據(jù)模式的設(shè)計(jì);數(shù)據(jù)庫(kù)維護(hù)。DBA必須對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)安全性、完整性、并發(fā)控制及系統(tǒng)恢復(fù)、數(shù)據(jù)定期轉(zhuǎn)儲(chǔ)等進(jìn)行實(shí)施與維護(hù);改善系統(tǒng)性能,提高系統(tǒng)效率。DBA必須隨時(shí)監(jiān)視數(shù)據(jù)庫(kù)的運(yùn)行狀態(tài),不斷調(diào)整內(nèi)部結(jié)構(gòu),使系統(tǒng)保持最佳狀態(tài)與效率。39、下列關(guān)于函數(shù)的敘述中正確的是()。A、每個(gè)函數(shù)都可以被其他函數(shù)調(diào)用(包括main函數(shù))B、每個(gè)函數(shù)都可以被單獨(dú)編譯C、每個(gè)函數(shù)都可以單獨(dú)運(yùn)行D、在一個(gè)函數(shù)內(nèi)部可以定義另一個(gè)函數(shù)標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:在C語(yǔ)言中,函數(shù)定義是平行的,函數(shù)不能嵌套定義,即函數(shù)之間沒(méi)有從屬關(guān)系。雖然函數(shù)之間可以相互調(diào)用,但main()函數(shù)不能被調(diào)用,選項(xiàng)A)錯(cuò)誤;C程序從main()函數(shù)開(kāi)始執(zhí)行,當(dāng)main()函數(shù)執(zhí)行完畢時(shí),整個(gè)程序就結(jié)束了。C程序的執(zhí)行必須從main()函數(shù)開(kāi)始,選項(xiàng)C)選項(xiàng)錯(cuò)誤;函數(shù)不能嵌套定義,選項(xiàng)D)錯(cuò)誤。二、程序填空題(本題共1題,每題1.0分,共1分。)40、給定程序中,函數(shù)fun的功能是:將形參指針?biāo)附Y(jié)構(gòu)體數(shù)組中的三個(gè)元素按num成員進(jìn)行升序排列。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#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);}標(biāo)準(zhǔn)答案:(1)*std(2)PERSON(3)std知識(shí)點(diǎn)解析:fun函數(shù)的功能是將形參指針?biāo)附Y(jié)構(gòu)體數(shù)組中的三個(gè)元素進(jìn)行排序。第一空:fun函數(shù)的參數(shù)是指針,由“if(std[0].num>std[1].num)”可知形參名為std,故第一空處應(yīng)為“voidfun(PER.SON*std)”。第二空:temp變量用來(lái)進(jìn)行交換時(shí)臨時(shí)保存變量值,由“temp=std[0];”可知temp是PERSON結(jié)構(gòu)體變量,故第二空處的temp結(jié)構(gòu)體定義應(yīng)為“PERSONtemp;”。第三空:這里是調(diào)用fun函數(shù),fun函數(shù)的參數(shù)是結(jié)構(gòu)體變量指針,std是結(jié)構(gòu)體數(shù)組,數(shù)組名相當(dāng)于數(shù)組的首地址,故第三空處應(yīng)為“fun(std):”。三、程序修改題(本題共1題,每題1.0分,共1分。)41、在主函數(shù)中從鍵盤(pán)輸入若干個(gè)數(shù)放入數(shù)組中,用0結(jié)束輸入并放在最后一個(gè)元素中。下列給定程序中,函數(shù)fun的功能是:計(jì)算數(shù)組元素中所有值為正數(shù)的平均值(不包括0)。例如,數(shù)組中元素的值依次為:39、一47、21、2、一8、15、0,則程序的運(yùn)行結(jié)果為19.250000。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#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));}標(biāo)準(zhǔn)答案:(1)doublesum=0.0;(2)sum/=c;知識(shí)點(diǎn)解析:(1)變量定義錯(cuò)誤,變量sum存放所有數(shù)據(jù)的和,應(yīng)定義為double型。(2)c語(yǔ)言中的除法運(yùn)算符是“/”。四、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)42、編寫(xiě)函數(shù)fun,其功能是:根據(jù)以下公式計(jì)算S,并將計(jì)算結(jié)果作為函數(shù)值返回,n通過(guò)形參傳入。例如,若n的值為11時(shí),函數(shù)的值為1.833333。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。試題程序:#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);}標(biāo)準(zhǔn)答案:floatfun(intn){inti,s1=0;floats=0.0;for(i=1;i<=n;i++){s1=sl+i;/*求每一項(xiàng)的分母*/s=s+1.0/s1;/*求多項(xiàng)式的值*/}returns;}知識(shí)點(diǎn)解析:此類計(jì)算表達(dá)式值的程序,首先需要根據(jù)題意分析表達(dá)式的規(guī)律,得出通項(xiàng),然后再完成程序語(yǔ)句。本題中表達(dá)式的規(guī)律是1+2+…+n的倒數(shù)之和,那么可以通過(guò)for循環(huán)語(yǔ)句來(lái)實(shí)現(xiàn)第1項(xiàng)到第n項(xiàng)的變化。其實(shí)就是累加算法,方法是先根據(jù)題目要求定義變量,注意該變量的數(shù)據(jù)類型,然后對(duì)其進(jìn)行初始化操作,因?yàn)樵撟兞康淖饔檬抢奂悠?,所以初始值?yīng)為0(或0.0,根據(jù)變量數(shù)據(jù)類型來(lái)確定),再通過(guò)for循環(huán)語(yǔ)句來(lái)完成累加過(guò)程。本題中s1用來(lái)表示每一項(xiàng)的分母,每一項(xiàng)的分母都是由前一項(xiàng)分母加項(xiàng)數(shù)。注意,由于s1定義成一個(gè)整型,所以在s=s+1.0/s1語(yǔ)句中不能把1.0寫(xiě)成1。國(guó)家二級(jí)(C語(yǔ)言)機(jī)試模擬試卷第2套一、選擇題(本題共40題,每題1.0分,共40分。)1、數(shù)據(jù)流圖中帶有箭頭的線段表示的是()。A、控制流B、事件驅(qū)動(dòng)C、模塊調(diào)用D、數(shù)據(jù)流標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:數(shù)據(jù)流圖基本符號(hào)的含義:①矩形表示數(shù)據(jù)的外部實(shí)體;②圓角的矩形表示變換數(shù)據(jù)的處理邏輯;③“=”表示數(shù)據(jù)的存儲(chǔ);④箭頭表示數(shù)據(jù)流。2、在軟件開(kāi)發(fā)中,需求分析階段產(chǎn)生的主要文檔是()。A、數(shù)據(jù)字典B、詳細(xì)設(shè)計(jì)說(shuō)明書(shū)C、數(shù)據(jù)流圖說(shuō)明書(shū)D、軟件需求規(guī)格說(shuō)明書(shū)標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:需求分析的最終結(jié)果是生成軟件需求規(guī)格說(shuō)明書(shū),可以為用戶、分析人員和設(shè)計(jì)人員之間的交流提供方便。3、下列有關(guān)數(shù)據(jù)庫(kù)的描述,正確的是()。A、數(shù)據(jù)庫(kù)設(shè)計(jì)是指設(shè)計(jì)數(shù)據(jù)庫(kù)管理系統(tǒng)B、數(shù)據(jù)庫(kù)技術(shù)的根本目標(biāo)是要解決數(shù)據(jù)共享的問(wèn)題C、數(shù)據(jù)庫(kù)是一個(gè)獨(dú)立的系統(tǒng),不需要操作系統(tǒng)的支持D、數(shù)據(jù)庫(kù)系統(tǒng)中,數(shù)據(jù)的物理結(jié)構(gòu)必須與邏輯結(jié)構(gòu)一致標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:數(shù)據(jù)庫(kù)設(shè)計(jì)的目的實(shí)質(zhì)上是設(shè)計(jì)出滿足實(shí)際應(yīng)用需求的實(shí)際關(guān)系模型。數(shù)據(jù)庫(kù)技術(shù)的主要目的是有效地管理和存取大量的數(shù)據(jù)資源,包括:提高數(shù)據(jù)的共享性,使多個(gè)用戶能夠同時(shí)訪問(wèn)數(shù)據(jù)庫(kù)中的數(shù)據(jù);減小數(shù)據(jù)的冗余,以提高數(shù)據(jù)的一致性和完整性;提供數(shù)據(jù)與應(yīng)用程序的獨(dú)立性,從而減少應(yīng)用程序的開(kāi)發(fā)和維護(hù)代價(jià)。4、下列敘述中錯(cuò)誤的是()。A、在C語(yǔ)言中,對(duì)二進(jìn)制文件的訪問(wèn)速度比文本文件快B、在C語(yǔ)言中,隨機(jī)文件以二進(jìn)制代碼形式存儲(chǔ)數(shù)據(jù)C、語(yǔ)句FILEfp;定義了一個(gè)名為fp的文件指針D、C語(yǔ)言中的文本文件以ASCII碼形式存儲(chǔ)數(shù)據(jù)標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:在C語(yǔ)言中,文件指針實(shí)際上是指向一個(gè)結(jié)構(gòu)體類型的指針,一般稱這個(gè)結(jié)構(gòu)體類型名為FILE,可以用此類型名來(lái)定義文件指針。定義文件類型指針變量的一般形式為:FILE*指針變量名;選項(xiàng)C中少了“*”,所以選項(xiàng)C錯(cuò)誤。5、有以下程序#includevoidfun(int*s,intn1,intn2){inti,j,t;i=n1;j=n2;while(iA、5678901234B、4321098765C、0987654321D、0987651234標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:函數(shù)fun()的功能是將數(shù)組s中下標(biāo)為n1和n2之間的數(shù)據(jù)逆序,所以調(diào)用語(yǔ)句fun(a,0,3);fun(a,4,9);fun(a,0,9);結(jié)束后,是先將數(shù)組p中下標(biāo)為0至3之間的元素逆序,然后將下標(biāo)為4至9之間的元素逆序,再將整個(gè)數(shù)組逆序,答案選A)。6、C$吾言源程序名的后綴是()。A、.exeB、.CC、.objD、.cp標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:由C語(yǔ)言構(gòu)成的指令序列稱為C源程序,源程序文件的后綴為“.c”。源程序經(jīng)過(guò)C編譯程序編譯生成后綴為“obi”的二進(jìn)制文件(稱為目標(biāo)文件),然后由稱為“連接程序”(Link)的軟件把目標(biāo)文件與C語(yǔ)言提供的各種庫(kù)函數(shù)連接起來(lái),生成后綴為“.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,程序運(yùn)行后的輸出結(jié)果是()。A、E68B、D69C、EDD、輸出無(wú)定值標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:C語(yǔ)言中每個(gè)字符都對(duì)應(yīng)一個(gè)ASCII碼值,該值可以用來(lái)運(yùn)算。本題中main函數(shù)將字符A經(jīng)過(guò)加4和加3運(yùn)算后分別賦值給c1、c2,然后將c1按字符格式輸出,c2按整型格式輸出。8、計(jì)算機(jī)高級(jí)語(yǔ)言程序的運(yùn)行方法有編譯執(zhí)行和解釋執(zhí)行兩種,以下敘述中正確的是()。A、C語(yǔ)言程序僅可以編譯執(zhí)行B、C語(yǔ)言程序僅可以解釋執(zhí)行C、C語(yǔ)言程序既可以編譯執(zhí)行又可以解釋執(zhí)行D、以上說(shuō)法都不對(duì)標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:C語(yǔ)言作為計(jì)算機(jī)高級(jí)語(yǔ)言,用它編寫(xiě)的程序必須經(jīng)過(guò)C語(yǔ)言的編譯器編譯后,轉(zhuǎn)換為二:進(jìn)制的機(jī)器碼來(lái)運(yùn)行。9、若有如下說(shuō)明,且int類型占兩個(gè)字節(jié),則正確的敘述為()。structst{inta;intb[2];}a;A、結(jié)構(gòu)體變量a與結(jié)構(gòu)體成員a同名,定義是合法的B、程序只在執(zhí)行到該結(jié)構(gòu)體時(shí)才為結(jié)構(gòu)體st分配存儲(chǔ)單元C、程序運(yùn)行時(shí)為結(jié)構(gòu)體st分配8字節(jié)存儲(chǔ)單元D、類型名structst可以通過(guò)extern關(guān)鍵字提前引用標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題主要考禽結(jié)構(gòu)體的用法:①結(jié)構(gòu)體變量a與結(jié)構(gòu)體成員a同名,定義合法:②在程序編譯的時(shí)候結(jié)構(gòu)的定義并不會(huì)使系統(tǒng)為該結(jié)構(gòu)分配內(nèi)存空間,只有在說(shuō)明結(jié)構(gòu)變量時(shí)才分配內(nèi)存空間;③inta占2個(gè)字節(jié)intb[2]占4個(gè)字節(jié),共6個(gè);④類型名structst不可以通過(guò)extern關(guān)鍵字提前引用。10、C語(yǔ)言規(guī)定,在一個(gè)c程序中,main()函數(shù)的位置()。A、必須在系統(tǒng)調(diào)用的庫(kù)函數(shù)之后B、必須在程序的開(kāi)始C、必須在程序的最后D、可以在任意位置標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:每個(gè)C程序有一tiP,有一個(gè)主函數(shù)(main),且程序必須從main()函數(shù)開(kāi)始執(zhí)行,而且main()函數(shù)可以放在程序中的任意位置。11、設(shè)有定義:“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);標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:C語(yǔ)言規(guī)定,輸出long型數(shù)值的格式符為%1d。12、以下語(yǔ)句定義正確的是()。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};標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查如何對(duì)二維數(shù)組的元素賦值。選項(xiàng)A,數(shù)組第二維的大小是4,但是卻賦值了5個(gè)元素,數(shù)組溢出;選項(xiàng)B,C語(yǔ)言規(guī)定,對(duì)于二維數(shù)組,只可以省略第一個(gè)方括號(hào)中的常量表達(dá)式,而不能省略第二個(gè)方括號(hào)中的常量表達(dá)式;選項(xiàng)C,數(shù)組第一維的大小是2,但是賦值超過(guò)了2;選項(xiàng)D,在對(duì)二維數(shù)組元素賦初值時(shí),可以只對(duì)部分元素賦初值,未賦初值的元素自動(dòng)取0。13、以下敘述中錯(cuò)誤的是()。A、可以給指針變量賦一個(gè)整數(shù)作為地址值B、函數(shù)可以返回地址值C、改變函數(shù)形參的值,不會(huì)改變對(duì)應(yīng)實(shí)參的值D、當(dāng)在程序的開(kāi)頭包含頭文件stdio.h時(shí),可以給指針變量賦NULL標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:不可以把一個(gè)int型數(shù)據(jù)直接賦值給一個(gè)指針變量,只能用取地址運(yùn)算符"&"把該整型變量的地址賦值給該指針變量,選項(xiàng)A)錯(cuò)誤;函數(shù)類型若為指針類型則可以返回地址值,選項(xiàng)B)正確;函數(shù)傳參過(guò)程中,是把實(shí)參的數(shù)據(jù)復(fù)制一份傳給形參,所以改變形參的值不會(huì)對(duì)實(shí)參造成影響,選項(xiàng)C)正確;NULL的定義包含在頭文件stdio.h中,所以選項(xiàng)D)正確;所以答案選A)。14、下列數(shù)據(jù)結(jié)構(gòu)中,能夠按照“先進(jìn)后出”原則存取數(shù)據(jù)的是()。A、循環(huán)隊(duì)列B、棧C、隊(duì)列D、二叉樹(shù)標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:棧是按先進(jìn)后出的原則組織數(shù)據(jù)的。隊(duì)列是先進(jìn)先出的原則組織數(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;}程序運(yùn)行后的輸出結(jié)果是()。A、1001,ZhangDa,1098.0B、1002,ZhangDa,1220.0C、1001,WangPeng,1098.0D、1002,WangPeng,1220.0標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:在主函數(shù)中定義結(jié)構(gòu)體A的變量a,并對(duì)其賦初值,再調(diào)用函數(shù)f(a),在函數(shù)f(a)中對(duì)結(jié)構(gòu)體變量a的各個(gè)成員重新進(jìn)行了賦值操作,并把其值返回在屏幕上輸出。16、一般情況下,當(dāng)對(duì)關(guān)系R和S進(jìn)行自然連接時(shí),要求R和S含有一個(gè)或者多個(gè)共有的()。A、記錄B、行C、屬性D、元組標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:進(jìn)行自然連接時(shí)要求兩個(gè)關(guān)系具有相同列,即屬性。17、有以下程序:#include<stdio.h>#defineS(x)x*xvoidmain(){intk=5,j=2;printf("%d,%d\n",S(k+j+2),S(j+k+2));}程序的運(yùn)行結(jié)果是()。A、21,18B、81,81C、21,21D、18,18E、D標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:帶參數(shù)的宏的調(diào)用格式:宏名(實(shí)參表),替換過(guò)程是:用宏調(diào)用提供的實(shí)參字符串,直接替換宏定義命令行中相應(yīng)形參字符串,非形參字符保持不變。s(k+j+2)被S換成k+j+2*k+j+2,計(jì)算時(shí)先計(jì)算2*k,結(jié)果為21;S(j+k+2)被S換成j+k+2*j+k+2,計(jì)算時(shí)先計(jì)算2*j,結(jié)果為18。程序的運(yùn)行結(jié)果是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);程序運(yùn)行時(shí),從鍵盤(pán)輸入:13<回車(chē)>后,程序輸出結(jié)果為()。A、0,2.4,B、1,3,5,C、0,1,2.3,4,5,D、0,1,2,3,標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:程序通過(guò)scanf()函數(shù),輸入data的值13,for循環(huán)中,i的值遍歷0~4,對(duì)每個(gè)i的值執(zhí)行if語(yǔ)句判斷,其中:i>data始終為假;所以表達(dá)式i>data&&i%3==0始終為假;所以if語(yǔ)句的判斷條件需要看i<data&&i%2的值,由于i<data始終為真,所以i<data&&i%2的值又取決于i%2的值,也就是說(shuō)整個(gè)if語(yǔ)句的判斷條件取決于i%2的值,如果i%2為真,那么if語(yǔ)句成立,執(zhí)行continue,否則執(zhí)行printf()函數(shù),所以當(dāng)i取值l、3時(shí),i%2的為1,if條件成立,執(zhí)行continue;當(dāng)i取值0、2、4時(shí),i%2的值為0,if條件不成立,執(zhí)行printf()函數(shù),輸出0,2,4,本題答案為A。19、下述語(yǔ)句中,在字符串s1和s2相等時(shí)顯示“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");標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:字符串比較不能用兩個(gè)等號(hào)(==)來(lái)進(jìn)行比較,應(yīng)使用strcmp(s1,s2)函數(shù)來(lái)比較。strcmp(s1,s2)函數(shù)的功能是:當(dāng)字符串s1和s2相等時(shí),返回值為0,因此,當(dāng)表達(dá)式!strcmp(s1,s2)==1時(shí),條件成立,執(zhí)行后面的語(yǔ)句,輸出thevareEqual。20、有以下程序#include<stdio.h>main(){inta=2,b;b=a<<2;printf("%d\n",b);}程序運(yùn)行后的輸出結(jié)果是A、2B、4C、6D、8標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查位運(yùn)算符,題目中將a向左移兩位,左移兩位表示乘以4,所以答案為8,選項(xiàng)D正確。21、以下敘述中錯(cuò)誤的是()。A、使用三種基本結(jié)構(gòu)構(gòu)成的程序只能解決簡(jiǎn)單問(wèn)題B、結(jié)構(gòu)化程序由順序、分支、循環(huán)三種基本結(jié)構(gòu)組成C、C語(yǔ)言是一種結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言D、結(jié)構(gòu)化程序設(shè)計(jì)提倡模塊化的設(shè)計(jì)方法標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:暫無(wú)解析22、有以下程序#includetypedefstruct{intb,p;}A;voidf(Ac)/*注意:c是結(jié)構(gòu)變量名*/{intj;c.b+=1;c.p+=2;}main(){inti;Aa={1,2};f(a);printf("%d,%d\n",a.b,a.p);}程序運(yùn)行后的輸出結(jié)果是()。A、1,2B、2,4C、1,4D、2,3標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:暫無(wú)解析23、以下選項(xiàng)中關(guān)于程序模塊化的敘述錯(cuò)誤的是()。A、可采用自底向上、逐步細(xì)化的設(shè)計(jì)方法把若干獨(dú)立模塊組裝成所要求的程序B、把程序分成若干相對(duì)獨(dú)立、功能單一的模塊,可便于重復(fù)使用這些模塊C、把程序分成若干相對(duì)獨(dú)立的模塊,可便于編碼和調(diào)試D、可采用自頂向下、逐步細(xì)化的設(shè)計(jì)方法把若干獨(dú)立模塊組裝成所要求的程序標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:程序模塊化思想中,可以采用自頂向下、逐步細(xì)化的方法。所以選項(xiàng)A中“自底向上”的說(shuō)法是錯(cuò)誤的。24、軟件生命周期是指()。A、軟件產(chǎn)品從提出、實(shí)現(xiàn)、使用維護(hù)到停止使用退役的過(guò)程B、軟件從需求分析、設(shè)計(jì)、實(shí)現(xiàn)到測(cè)試完成的過(guò)程C、軟件的開(kāi)發(fā)過(guò)程D、軟件的運(yùn)行維護(hù)過(guò)程標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:通常,將軟件產(chǎn)品從提出、實(shí)現(xiàn)、使用維護(hù)到停止使用退役的過(guò)程稱為軟件生命周期。也就是說(shuō),軟件產(chǎn)品從考慮其概念開(kāi)始,到該軟件產(chǎn)品不能使用為止的整個(gè)時(shí)期都屬于軟件生命周期。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í)行后的輸出結(jié)果是()。A、1B、2C、3D、4標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:該程序中int*p1=&a,*p2=&b,*p=&c;指定義三個(gè)指針變量,并賦值,即使p1指向a;p2指向b;p指向c。*p=*p1*(*p2);該條語(yǔ)句是給p所指的存儲(chǔ)單元c賦值,就是p1所指的存儲(chǔ)單元的值,即a的值,與p2所指的存儲(chǔ)單元b的值相乘,也就是c=a*b,等價(jià)于c=1*3=3;因此C選項(xiàng)正確。26、在C語(yǔ)言中,只有在使用時(shí)才占用內(nèi)存單元的變量,其存儲(chǔ)類型是()。A、auto和staticB、extern和registerC、auto和registerD、static和register標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:auto:函數(shù)中的局部變量,動(dòng)態(tài)地分配存儲(chǔ)空間,數(shù)據(jù)存儲(chǔ)在動(dòng)態(tài)存儲(chǔ)區(qū)中,在調(diào)用該函數(shù)時(shí)系統(tǒng)會(huì)給它們分配存儲(chǔ)空間,在函數(shù)調(diào)用結(jié)束時(shí)就自動(dòng)釋放這些存儲(chǔ)空間。register:為了提高效率,C語(yǔ)言允許將局部變量的值放在CPU的寄存器中,這種變量叫“寄存器變量”,只有局部自動(dòng)變量和形式參數(shù)可以作為寄存器變量。extern:外部變量(即全局變量)是在函數(shù)的外部定義的,它的作用域從變量定義處開(kāi)始,到本程序文件的末尾。如果外部變量不在文件的開(kāi)頭定義,其有效的作用范圍只限于定義處到文件終了。static:靜態(tài)局部變量屬于靜態(tài)存儲(chǔ)類別,在靜態(tài)存儲(chǔ)區(qū)內(nèi)分配存儲(chǔ)單元。靜態(tài)局部變量在程序整個(gè)運(yùn)行期間都不釋放。27、下列條件語(yǔ)句中,輸出結(jié)果與其他語(yǔ)句不同的是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);標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:A,B,D選項(xiàng)的含義均為:a的值如果為0時(shí)打印y的值,否則打印x的值,但是C選項(xiàng)的含義是:a的值為0時(shí)打印x的值,不為0時(shí)打印y的值,與其他選項(xiàng)正好相反。28、若有定義:inta,b,c;以下程序段的輸出結(jié)果是()。a=11;b=3;c=0:printf("%d\n",c=(a/b,a%b));A、2B、0C、3D、1標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:C語(yǔ)言中,逗號(hào)運(yùn)算符可以把兩個(gè)以上(包含兩個(gè))的表達(dá)式連接成一個(gè)表達(dá)式。逗號(hào)運(yùn)算符的優(yōu)先級(jí)是所有運(yùn)算符中級(jí)別最低的,逗號(hào)運(yùn)算符保證左邊的子表達(dá)式運(yùn)算結(jié)束后才進(jìn)行右邊的子表達(dá)式的運(yùn)算。也就是說(shuō),逗號(hào)運(yùn)算符是一個(gè)序列點(diǎn),其左邊所有副作用都結(jié)束后,才對(duì)其右邊的子表達(dá)式進(jìn)行運(yùn)算,并以最右邊表達(dá)式值作為整個(gè)逗號(hào)表達(dá)式的值。因此變量c的值為a%b即11%3=2。故答案為A選項(xiàng)。29、下列敘述中正確的是()。A、順序存儲(chǔ)結(jié)構(gòu)的存儲(chǔ)一定是連續(xù)的,鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)的存儲(chǔ)空間不一定是連續(xù)的B、順序存儲(chǔ)結(jié)構(gòu)只針對(duì)線性結(jié)構(gòu),鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)只針對(duì)非線性結(jié)構(gòu)C、順序存儲(chǔ)結(jié)構(gòu)能存儲(chǔ)有序表,鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)不能存儲(chǔ)有序表D、鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)比順序存儲(chǔ)結(jié)構(gòu)節(jié)省存儲(chǔ)空間標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)既可以針對(duì)線性結(jié)構(gòu)也可以針對(duì)非線性結(jié)構(gòu),所以B)與C)錯(cuò)誤。鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)中每個(gè)結(jié)點(diǎn)都由數(shù)據(jù)域與指針域兩部分組成,增加了存儲(chǔ)空間,所以D)錯(cuò)誤。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’’);}程序運(yùn)行后的輸出結(jié)果是()。A、1,3,3,3,2B、4,3,3,3,2C、1,2,3,4,5D、5,4,3,2,1標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:for循環(huán)中是對(duì)c[]賦值,但c[]的下標(biāo)由s[i]確定,所以通過(guò)數(shù)s[]中的下標(biāo)個(gè)數(shù)便可知對(duì)應(yīng)的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表示一個(gè)字符常量C、表達(dá)式:’a’>’b’的結(jié)果是"假"D、’\"’是非法的標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:A選項(xiàng)中,’\0’表示結(jié)束;B選項(xiàng)中,字符常量是用單引號(hào)括起來(lái)的一個(gè)字符;D選項(xiàng)中,’\"’是雙引號(hào)符。因此C選項(xiàng)正確。32、用于軟件測(cè)試的實(shí)例主要包括哪些內(nèi)容?()A、輸入數(shù)據(jù)和測(cè)試規(guī)程B、測(cè)試程序和輸出結(jié)果C、輸入數(shù)據(jù)和預(yù)期輸出結(jié)果D、輸入數(shù)據(jù)、測(cè)試規(guī)程和輸出數(shù)據(jù)標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:用于軟件測(cè)試的實(shí)例主要包括輸入數(shù)據(jù)和預(yù)期輸出結(jié)果。33、下列說(shuō)法正確的是A、int(*def)[10];----def指向一個(gè)指針,該指針指向10個(gè)整型變量構(gòu)成的數(shù)組B、int*(*gh[10]);---gh指向一個(gè)指針,該指針指向10個(gè)整型變量構(gòu)成的數(shù)組C、int*(*gh[10]);---gh是一個(gè)指針,指向由10個(gè)指向整型變量的指針構(gòu)成的數(shù)組D、A,C均正確標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:int*(*gh[10]);---gh是一個(gè)指針,指向由10個(gè)指向整型變量的指針構(gòu)成的數(shù)組,int(*def)[10];----def指向一個(gè)指針,該指針指向10個(gè)整型變量構(gòu)成的數(shù)組。34、有以下程序#include<stdio.h>main(){intx=23;do{printf("%2d\n",x--);}while(!x);}程序的執(zhí)行結(jié)果是A、輸出321B、輸出23C、不輸出任何內(nèi)容D、陷入無(wú)限循環(huán)標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:%2d表示輸出的整型變量占2列。程序執(zhí)行過(guò)程為:輸出x為23,之后x自減得x=22,!x為假(0),while條件不成立,退出循環(huán)。B選項(xiàng)正確。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");}程序運(yùn)行后的輸出結(jié)果是A、MO#B、#F#C、MMMD、#N#標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:for語(yǔ)句中把a(bǔ)rray數(shù)組首地址值賦給ptr,ptr++表示每次執(zhí)行完循環(huán)體后,ptr指向下一數(shù)組元素,當(dāng)指針指向值為0時(shí),輸出#,否則’M’再加上指針對(duì)應(yīng)數(shù)組值進(jìn)行輸出,當(dāng)*ptr=1時(shí),’M’+1=’N’,結(jié)果輸出為#N#,答案為D選項(xiàng)。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));}程序的運(yùn)行結(jié)果是A、grameameeeB、gaeC、programeD、無(wú)輸出字符標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:定義兩個(gè)指針變量p1,p2,分別指向數(shù)組s1,s2首地址,在for循環(huán)中,比較兩個(gè)指針對(duì)應(yīng)地址的元素是否相等,如果相等,則輸出當(dāng)前指針指向地址的字符串,答案為A選項(xiàng)。37、設(shè)某二叉樹(shù)的前序序列與中序序列均為ABCDEFGH,則該二叉樹(shù)的后序序列為A、HGFEDCBAB、EFGHABCDC、DCBAHGFED、ABCDEFGH標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:二叉樹(shù)遍歷可以分為3種:前序遍歷(訪問(wèn)根結(jié)點(diǎn)在訪問(wèn)左子樹(shù)和訪問(wèn)右子樹(shù)之前)、中序遍歷(訪問(wèn)根結(jié)點(diǎn)在訪問(wèn)左子樹(shù)和訪問(wèn)右子樹(shù)兩者之間)、后序遍歷(訪問(wèn)根結(jié)點(diǎn)在訪問(wèn)左子樹(shù)和訪問(wèn)右子樹(shù)之后)。二叉樹(shù)的前序序列與中序序列相同,說(shuō)明此樹(shù)結(jié)點(diǎn)沒(méi)有左子樹(shù),且第一個(gè)節(jié)點(diǎn)A為根節(jié)點(diǎn),而后序遍歷中根節(jié)點(diǎn)應(yīng)在最后被訪問(wèn),即節(jié)點(diǎn)A在最后出現(xiàn),由此推斷出后序遍歷為HGFEDCBA,故A選項(xiàng)正確.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);}程序運(yùn)行后的輸出結(jié)果是A、Beijing!B、toBeijing!C、WelcomeyoutoBeijing!D、youtoBeijing!標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:for循環(huán)的作用就是每次遇到空格,將空格后面的移動(dòng)到數(shù)組的最前面。因此數(shù)組最后的狀態(tài)時(shí)Beijing!\0g!\0ng!\neijing!\0;但是printf("%s")打印遇到\0自動(dòng)結(jié)束。因此,打印Beijing!。故答案為A選項(xiàng)39、下面函數(shù)的功能是()。sss(s,t)char*s,*t;{while(*s);while(*t)*(s++)=*(t++);returns;}A、將字符串s復(fù)制到字符串t中B、比較兩個(gè)字符串的大小C、求字符串的長(zhǎng)度D、將字符串t續(xù)接到字符串s中標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查指針變量的運(yùn)用。本題中的函數(shù)實(shí)質(zhì)上是將字符串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"):}程序運(yùn)行的結(jié)果是()。A、1234B、1070C、1459D、3480標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:數(shù)組x有4列。fun函數(shù)中for循環(huán)的作用是將二維數(shù)組前4行的對(duì)角線元素分別賦給b[0],b[1],b[2],b[3]。在主函數(shù)中,二維數(shù)組初始化為{1,2,3},{4},{5,6,7,8},{9,10},所以可以看出對(duì)角線元素為1070。二、程序填空題(本題共1題,每題1.0分,共1分。)41、給定程序中,函數(shù)fun的功能是:在任意給定的9個(gè)正整數(shù)中找出按升序排列時(shí)處于中間的數(shù),將原數(shù)據(jù)序列中比該中間數(shù)小的數(shù)用該中間數(shù)替換,位置不變,在主函數(shù)中輸出處理后的數(shù)據(jù)序列,并將中間數(shù)作為函數(shù)值返回。例如,有9個(gè)正整數(shù):1572387582145按升序排列時(shí)的中間數(shù)為:8處理后主函數(shù)中輸出的數(shù)列為:8882387882145請(qǐng)?jiān)诔绦虻南庐?huà)線處填入正確的內(nèi)容并把下畫(huà)線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#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");}標(biāo)準(zhǔn)答案:(1)b[k](2)4或N/2(3)<知識(shí)點(diǎn)解析:數(shù)組中的9個(gè)數(shù)任意排列,要找到按升序排列時(shí)處于中間位置的數(shù),應(yīng)首先對(duì)數(shù)組進(jìn)行升序排列。因?yàn)橹恍枵业街虚g位置的數(shù)即可,故不必對(duì)整個(gè)數(shù)組進(jìn)行排序,只需要排列出數(shù)組的前半部分。找到中間數(shù)后,遍歷原數(shù)組,將小于中間數(shù)的元素進(jìn)行替換。填空1:利用選擇算法排序,先指定一個(gè)元素為最小,用這個(gè)數(shù)與其后的所有數(shù)進(jìn)行比較,若找小于此數(shù),則進(jìn)行替換。此處考查替換操作。填空2:元素mid存放中間位置的數(shù),數(shù)組長(zhǎng)度為9,因此中問(wèn)元素?cái)?shù)為b[4]。填空3:遍歷數(shù)組,當(dāng)元素小于中間位置的數(shù)(即mid)時(shí),進(jìn)行替換。三、程序修改題(本題共1題,每題1.0分,共1分。)42、下列給定程序中函數(shù)fun的功能是:將p所指字符串中的所有字符復(fù)制到b中,要求每復(fù)制三個(gè)字符之后插入一個(gè)空格。例如,若給a輸入字符串:ABCDEFGKHIJK,調(diào)用函數(shù)后,字符數(shù)組b中的內(nèi)容為:ABCDEFGHIJK。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:部分源程序在文件MODI1.C中,不得增行或刪行,也不得更改程序的結(jié)構(gòu)。#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");}標(biāo)準(zhǔn)答案:(1)b[k]=*p;(2)b[k]=’’;k++;。知識(shí)點(diǎn)解析:本題考查:指針類型變量作為函數(shù)的參數(shù),函數(shù)的參數(shù)不僅可以是整型、實(shí)型、字符型等數(shù)據(jù)類型,還可以是指針類型。它的作用是將一個(gè)變量的地址傳送到另一個(gè)函數(shù)中。C語(yǔ)言中為了表示指針變量和它所指向的變量之間的關(guān)系,在程序中用“*”符號(hào)表示“指向”,例如,pointer代表指針變量,而*pointer是pointer所指向的變量。四、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)43、假定輸入的字符串中只包含字母和*號(hào)。請(qǐng)編寫(xiě)函數(shù)fun,它的功能是:將字符串尾部的*號(hào)全部刪除,前面和中間的*號(hào)不刪除。例如,字符串中的內(nèi)容為:*A*BC*DEF*G*,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是:*A*BC*DEF*G。在編寫(xiě)函數(shù)時(shí),不得使用C語(yǔ)言提供的字符串函數(shù)。注意:部分源程序在文件PROG1.C文件中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。#includevoidfun(char*a){}main(){chars[81];voidNONO();printf("Enterastring:\n");gets(s);fun(s);printf("Thestringafterdeleted:\n");puts(s);NON0();}voidNONO(){/*本函數(shù)用于打開(kāi)文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/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);}標(biāo)準(zhǔn)答案: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’;知識(shí)點(diǎn)解析:(1)首先,使用一個(gè)指針P指向串尾,然后對(duì)指向串尾的指針P指向的字符進(jìn)行判斷,如果是“*”,指針P就跳過(guò),這樣來(lái)設(shè)置一個(gè)指針變量q指向字符串的頭位置。(2)然后,將由字符串起始到最后一個(gè)字母之間的字符拷貝到字符串a(chǎn)。(3)最后,在新生成的字符串尾加’\0’。國(guó)家二級(jí)(C語(yǔ)言)機(jī)試模擬試卷第3套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開(kāi)考生文件夾下blank1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件blank1.c。在此程序中,通過(guò)定義并賦初值的方式,利用結(jié)構(gòu)體變量存儲(chǔ)了一名學(xué)生的學(xué)號(hào)、姓名和3門(mén)課的成績(jī)。函數(shù)fun的功能是將該學(xué)生的各科成績(jī)都乘以一個(gè)系數(shù)a。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#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);}標(biāo)準(zhǔn)答案:(1)STU(2)score[i](3)&std知識(shí)點(diǎn)解析:本題是利用結(jié)構(gòu)體存儲(chǔ)學(xué)生記錄,對(duì)記錄進(jìn)行修改并由實(shí)參ss返回。填空1:實(shí)參ss是一個(gè)結(jié)構(gòu)型指針變量,所以應(yīng)填STU。填空2:該學(xué)生的各科成績(jī)都乘以一個(gè)系數(shù)a,所以應(yīng)填score[i]。填空3:函數(shù)的調(diào)用,由于函數(shù)定義時(shí)使用的指針結(jié)構(gòu)型變量,所以應(yīng)填&stdc,【考點(diǎn)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 五年級(jí)上冊(cè)數(shù)學(xué)教案-分?jǐn)?shù)的再認(rèn)識(shí) 北師大版
- 六年級(jí)下冊(cè)數(shù)學(xué)教案 用不同的知識(shí)解答應(yīng)用題 西師大版
- 二年級(jí)下冊(cè)數(shù)學(xué)教案-5.2 被減數(shù)中間有0的連續(xù)退位減法| 青島版(五四學(xué)制)
- 口腔門(mén)診勞動(dòng)合同(2025年版)
- 一年級(jí)下冊(cè)數(shù)學(xué)教案-動(dòng)手做(一)2 北師大版
- 六年級(jí)下冊(cè)數(shù)學(xué)教案-總復(fù)習(xí)-四則運(yùn)算的意義和法則|北師大版
- 三年級(jí)上冊(cè)數(shù)學(xué)教案-用兩步連乘解決實(shí)際問(wèn)題∣蘇教版
- 2024年張緊裝置項(xiàng)目資金申請(qǐng)報(bào)告代可行性研究報(bào)告
- 2025年華北理工大學(xué)輕工學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫(kù)帶答案
- 數(shù)學(xué)-廣州市白云區(qū)2025年高三下學(xué)期期初綜合訓(xùn)練試題+答案
- 部編版小學(xué)五年級(jí)語(yǔ)文教材培訓(xùn)課件【部編】
- 盆景造型經(jīng)驗(yàn)
- 2023年廣東省佛山市順德區(qū)小升初數(shù)學(xué)試卷(含答案)
- ICU護(hù)理查房記錄【范本模板】
- 威風(fēng)堂堂進(jìn)行曲
- 銅及銅合金物理冶金基礎(chǔ)-黃銅
- 煤礦信息化管理制度
- 金融科技學(xué)-完整全套課件
- 物理學(xué)史中國(guó)古代物理學(xué)
- 導(dǎo)管滑脫應(yīng)急預(yù)案演練住院患者導(dǎo)尿管道滑脫
- (完整)小學(xué)語(yǔ)文考試專用作文方格紙
評(píng)論
0/150
提交評(píng)論