國(guó)家二級(jí)C語(yǔ)言機(jī)試(函數(shù)和數(shù)組)模擬試卷1(共256題)_第1頁(yè)
國(guó)家二級(jí)C語(yǔ)言機(jī)試(函數(shù)和數(shù)組)模擬試卷1(共256題)_第2頁(yè)
國(guó)家二級(jí)C語(yǔ)言機(jī)試(函數(shù)和數(shù)組)模擬試卷1(共256題)_第3頁(yè)
國(guó)家二級(jí)C語(yǔ)言機(jī)試(函數(shù)和數(shù)組)模擬試卷1(共256題)_第4頁(yè)
國(guó)家二級(jí)C語(yǔ)言機(jī)試(函數(shù)和數(shù)組)模擬試卷1(共256題)_第5頁(yè)
已閱讀5頁(yè),還剩71頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ī)試(函數(shù)和數(shù)組)模擬試卷1(共9套)(共256題)國(guó)家二級(jí)C語(yǔ)言機(jī)試(函數(shù)和數(shù)組)模擬試卷第1套一、選擇題(本題共29題,每題1.0分,共29分。)1、有下列程序:#include/*fun函數(shù)的功能是將a所指數(shù)組元素從大到小排序*/voidfun(int*a,intn)main(){intt,i,j;{intc[10]={1,2,3,4,5,6,7,8,9,0),i;for(i=0;iA、1,2,3,4,9,8,7,6,5,0,B、0,9,8,7,6,5,1,2,3,4,C、0,9,8,7,6,5,4,3,2,1,D、1,2,3,4,5,6,7,8,9,0,標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:fun()函數(shù)的功能是對(duì)數(shù)組a[]的元素從大到小進(jìn)行排序。所以在主函數(shù)執(zhí)行fun(c+4,6)語(yǔ)句時(shí),將從數(shù)組c的第5個(gè)元素開(kāi)始的后6個(gè)元素進(jìn)行從大到小排序。排序之后,數(shù)組c的內(nèi)容變?yōu)閧1,2,3,4,9,8,7,6,5,0}。2、有以下程序#includemain(){intc[6]={10,20,30,40,50,60},*p,*s;p=c:s=&c[5];printf("%d\n",s-p);}程序運(yùn)行后的輸出結(jié)果是A、50B、6C、5D、60標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:主函數(shù)中指針變量p指向數(shù)組c,s保存了數(shù)組最后一個(gè)元素的地址,那么s-p為兩個(gè)地址之間的元素差5。3、以下敘述中正確的是A、一條語(yǔ)句只能定義一個(gè)數(shù)組B、數(shù)組說(shuō)明符的一對(duì)方括號(hào)中只能使用整型常量,而不能使用表達(dá)式C、每個(gè)數(shù)組包含一組具有同一類型的變量,這些變量在內(nèi)存中占有連續(xù)的存儲(chǔ)單元D、在引用數(shù)組元素時(shí),下標(biāo)表達(dá)式可以使用浮點(diǎn)數(shù)標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:數(shù)組的定義格式:類型說(shuō)明符數(shù)組名[整型常量表達(dá)式],…;可以同時(shí)定義多個(gè)類型相同的數(shù)組,之間以逗號(hào)分隔開(kāi),數(shù)組的類型表明了數(shù)組中元素的數(shù)據(jù)類型,數(shù)組中所有元素的類型相同,數(shù)組經(jīng)過(guò)定義以后就可使用,編譯程序?qū)?duì)其分配一片連續(xù)的存儲(chǔ)空間進(jìn)行連續(xù)存儲(chǔ)。C語(yǔ)言中只能單個(gè)引用數(shù)組元素而不能一次引用整個(gè)數(shù)組。引用格式為:數(shù)組名[下標(biāo)],引用元素時(shí),需要注意下標(biāo)只能為整型常量或整型表達(dá)式。4、以下敘述中正確的是A、語(yǔ)句inta[]={0};是不合法的,遺漏了數(shù)組的大小B、語(yǔ)句chara[2]={"A","B"};是合法的,定義了一個(gè)包含兩個(gè)字符的數(shù)組C、語(yǔ)句inta[8]={0};是合法的D、語(yǔ)句chara[3];a="AB":是合法的,因?yàn)閿?shù)組有三個(gè)字符空間的容量,可以保存兩個(gè)字符標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:當(dāng)系統(tǒng)為所定義的數(shù)組在內(nèi)存中開(kāi)辟一串連續(xù)的存儲(chǔ)單元時(shí).這些存儲(chǔ)單元中并沒(méi)有確定的值,可以在定義語(yǔ)句中為所定義數(shù)組的各個(gè)元素賦初值。數(shù)組初始化賦值是指在數(shù)組定義時(shí)給數(shù)組元素賦予初值。初始化賦值的一般形式為:類型說(shuō)明符數(shù)組名[常量表達(dá)式]={值,值,…,};。需要注意的是當(dāng)所賦初值多于所定義數(shù)組的元素個(gè)數(shù)時(shí),在編譯時(shí)將給出出錯(cuò)信息,在指定初值時(shí),第一個(gè)初值必定賦給下標(biāo)為0的元素,然后按這些數(shù)值的排列順序賦初值,只能給元素逐個(gè)賦值,不能給數(shù)組整體賦值。如果給全部元素賦值,則在數(shù)組說(shuō)明中,可以不給出數(shù)組元素的個(gè)數(shù)。5、如果定義floata[10],x;則以下敘述中正確的是A、表達(dá)式a+1是非法的B、語(yǔ)句a=&x:是非法的C、三個(gè)表達(dá)式a[1]、*(a+1)、*&a[1]表示的意思完全不同D、表達(dá)式*&a[1]是非法的,應(yīng)該寫成*(&(a[1]))標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:定義語(yǔ)句“floata[10],x;”以后,數(shù)組名a表示了數(shù)組元素的首地址,是常量在程序中不能更改,因此選項(xiàng)A是的描述是正確的。而指向運(yùn)算符和取址運(yùn)算符,是互反運(yùn)算符優(yōu)先級(jí)相同,*&a[1]和*(&a[1])含義相同。6、有以下程序#includemain(){inta[]={10,20,30,40),*p=a,i;for(i=0;i<=3;i++){a[i]=*p;p++;}printf("%d\n",a[2]);}程序運(yùn)行后的輸出結(jié)果是A、20B、30C、10D、40標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:因?yàn)橹羔樧兞縫的初始值指向數(shù)組a,所以執(zhí)行for循環(huán)語(yǔ)句后,數(shù)組a中的元素的值不變。7、若有以下程序main(){inti,j=0;chara[]="Howareyou!";for(i=0;a[i];i++)if(a[i]!=’’)a[j++]=a[i];aD]=’\0’;printf("%s\n",a);}則程序的輸出結(jié)果是A、HowareyouB、Hay!C、Howareyou!D、Howareyou!標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:主函數(shù)中利用for循環(huán)訪問(wèn)字符串的每一個(gè)字符,判斷當(dāng)前字符是否為空格,如果是空格則刪除。因此刪除字符串"Howareyou!"中空格以后,字符串為Howareyou!。8、若有以下程序#includemain(){inti,j=0;chara[]="Howareyou!",b[10];for(i=0;a[i];i++)if(a[i]=’’)b[j++]:a[i+1];b[j]=’\0’;printf("%s\n",b);}則程序的輸出結(jié)果是A、HowareyouB、Hay!C、Howareyou!D、ay標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:主函數(shù)中利用for循環(huán)訪問(wèn)字符串a(chǎn)的每一個(gè)字符,判斷當(dāng)前字符是否為空格,如果是空格則保存該空格后面的÷個(gè)字符存放到字符數(shù)組b中。在字符串"Howareyou!"中,第一個(gè)空格后面字符為’a’,第二個(gè)空格后面字符為y。9、若有以下程序#includechar*a="you",b[]="welcome#you#to#China!";main(){inti,j=0;char*p;for(i=0;b[i]!=’\0’;i++){if(*a==b[i]){p=&b[i];for(j=0;a[j]!=’\0’;j++){if(a[j]!=*p)break;p++;}if(a[j]=’\0’)break;}}printf("%s\n",p);}則程序的輸出結(jié)果是A、#you#to#China!B、me#you#to#China!C、#China!D、#to#China!標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:程序中循環(huán)部分的主要功能是,在字符串b中尋找是否含有子串a(chǎn),如果含有則退出,字符指針p指向該匹配子串后面的位置,利用printf函數(shù)輸出則從該位置開(kāi)始一直輸出到字符串b的結(jié)尾。10、以下能正確定義二維數(shù)組是A、inta[][3];B、inta[][3]={2*3};C、inta[][3]={}D、inta[2][3]={{1},{2),{3,4});標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:C語(yǔ)言中定義二維數(shù)組,必須指定二維數(shù)組每一維的大小。選項(xiàng)A沒(méi)有指定數(shù)組a行的大小,錯(cuò)誤;選項(xiàng)B,雖然沒(méi)有指定行大小,但是可以通過(guò)大括號(hào)里面的元素個(gè)數(shù)計(jì)算出行的大小為1,因此是正確的;選項(xiàng)C同樣沒(méi)有指定行的大小,也不能通過(guò)元素個(gè)數(shù)計(jì)算行的個(gè)數(shù),錯(cuò)誤;選項(xiàng)D定義的是二行三列數(shù)組,但是后面數(shù)據(jù)是三行,超出范圍,所以錯(cuò)。11、若有以下說(shuō)明和語(yǔ)句intc[4][51,(*p)[5];p=c;能夠正確引用c數(shù)組元素的是A、p+1B、*(p+3)C、*(p+1)+3D、*(p[0]+2)標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查數(shù)組和指針,在本題中c是二維數(shù)組,指針p指向二維數(shù)組c,p其實(shí)是指向c數(shù)組的第一行。因此選項(xiàng)A中p+1指向c數(shù)組的第二行;選項(xiàng)B中,p+3表示p指向c數(shù)組的第三行,因此*(p+3)表示取出c數(shù)組第三行首元素的地址;選項(xiàng)C和選項(xiàng)B類似,表示取出數(shù)組c第二行首元素地址然后加3;選項(xiàng)D中p[0]+2表示數(shù)組第一行第三列元素的地址,因此*(p[0]+2)是取出該元素的值。12、若有定義語(yǔ)句:intk[2][3],*pk[3];,則以下語(yǔ)句中正確的是A、pk=k;B、pk[0]=k[1][2];C、pk=k[0];D、ok[]=k;標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題考查多維數(shù)組和數(shù)組指針。k是一個(gè)二維數(shù)組,pk是一個(gè)指針數(shù)組,該數(shù)組有3個(gè)元素,每個(gè)元素都是一個(gè)指向整型對(duì)象的指針。選項(xiàng)A錯(cuò)誤,等號(hào)的左邊是一個(gè)數(shù)組地址,不是變量;選項(xiàng)B是把元素k[1][2]賦值給pk[0];選項(xiàng)C中等號(hào)左邊不是變量:選項(xiàng)D類型不匹配,pk[1]是指向一個(gè)整型對(duì)象,而k是一個(gè)二維數(shù)組首地址。13、若有定義語(yǔ)句:inta[3][6];,按在內(nèi)存中的存放順序,a數(shù)組的第10個(gè)元素是A、a[0][4]B、a[1][3]C、a[0][3]D、a[1][4]標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題考查多維數(shù)組的定義和使用。a是一個(gè)二維數(shù)組,有3行6列。即每行6個(gè)元素,a的第10個(gè)元素位于第二行的第四個(gè)位置,即a[][3]。14、若有定義語(yǔ)句:inta[2][3],*p[3];,則以下語(yǔ)句中正確的是A、p=a;B、p[0]=a;C、p[0]=a[1][2];D、p[1]=a;標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:本題考查多維數(shù)組和數(shù)組指針。a是一個(gè)二維數(shù)組,p是一個(gè)指針數(shù)組,該數(shù)組有3個(gè)元素,每個(gè)元素都是一個(gè)指向整型對(duì)象的指針。選項(xiàng)A錯(cuò)誤,等號(hào)的左邊是一個(gè)數(shù)組地址,不是變量;選項(xiàng)B數(shù)據(jù)類型不匹配,p[0]是指向一個(gè)整型對(duì)象,而a是一個(gè)二維數(shù)組首地址;選項(xiàng)C正確,是把元素a[1][2]賦值給p[0];選項(xiàng)D和選項(xiàng)B一樣屬于數(shù)據(jù)類型不匹配,p[1]是指向一個(gè)整型對(duì)象,而a是一個(gè)二維數(shù)組首地址。15、若有定義:inta[2][3];,以下選項(xiàng)中對(duì)a數(shù)組元素正確引用的是A、a[2][!1]B、a[2][3]C、a[0][3]D、a[1>2][!1]標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查數(shù)組的使用,C語(yǔ)言中數(shù)組的下標(biāo)從0開(kāi)始。本題中a是一個(gè)二維數(shù)組,兩個(gè)下標(biāo)的范圍分別是0—1和0—2。選項(xiàng)A中第一個(gè)下標(biāo)越界,超出了范圍;選項(xiàng)B中第一個(gè)和第二個(gè)下標(biāo)都超出了范圍;選項(xiàng)C中第二個(gè)下標(biāo)超出范圍;選項(xiàng)D中,1>2的值為0,!1的值為0,因此選項(xiàng)D實(shí)際是訪問(wèn)a[0][0]。16、以下數(shù)組定義中錯(cuò)誤的是A、intx[][3]={0};B、intx[2][3]={{1,2},{3,4},{5,6}};C、intx[][3]={{1,2,3},{4,5,6}};D、intx[2][3]={1,2,3,4,5,6};標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:二維數(shù)組的初始化有以下幾種形式:①分行進(jìn)行初始化;②不分行的初始化;③部分?jǐn)?shù)組元素初始化;④省略第一維的定義,不省略第二維的定義。在選項(xiàng)B中賦值號(hào)左邊定義了一個(gè)3行2列的二維數(shù)組,而右邊用2行3列的數(shù)字進(jìn)行賦初值。所以出現(xiàn)了邊界的越界溢出而出錯(cuò)。17、有以下程序#include#defineN4voidfun(inta[][N],intb[]){inti;for(i=0;iA、一12,一3,0,0,B、一3,一1,1,3,C、0,1,2,3,D、一3,一3,一3,一3,標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:fun函數(shù)的功能是求出二維數(shù)組a中第i行第i個(gè)元素與第N-1-i元素的差,賦給b[i]。在主函數(shù)中,把實(shí)參二維數(shù)組x和一維數(shù)組y傳遞給形參a和b,最后輸出一維數(shù)組y中元素的值。18、有以下程序#includemain(){intb[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=l;for(i=0;i<=i.j++)t+-b[i][b][i][i]];printf("%d\n",t);}程序運(yùn)行后的輸出結(jié)果是A、3B、1C、9D、4標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:這道題主要考查的是二維數(shù)組的有關(guān)知識(shí)。在兩層for循環(huán)語(yǔ)句中,每次執(zhí)行變量t的累加時(shí),二維數(shù)組元素b的第二下標(biāo)的值與第一下標(biāo)相同的值,所以程序執(zhí)行的過(guò)程為t=1+b[1][1]+b[2][2]=1+1+2=4。19、以下定義數(shù)組的語(yǔ)句中錯(cuò)誤的是A、intnum[][3]={{1,2),3,4,5,6};B、intnum[]={1,2,3,4,5,6};C、intnum[][4]={1,2,3,4,5,6};D、intnum[2][4]={{1,2},{3,4},{5,6}};標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:在選項(xiàng)D的數(shù)組定義中,賦值號(hào)左邊定義了一個(gè)2行4列的二維數(shù)組,而在右邊定義了一個(gè)3行2列的二維數(shù)組。20、有下列程序:main(){intx[3][2]={0),i;for(i=0;i<3;i++)scanf("%d",x[i]);printf("%3d%3d%3dLn",x[0][0],x[0][1],x[1][0]);}若運(yùn)行時(shí)輸入:246,則輸出結(jié)果為A、200B、240C、204D、246標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:語(yǔ)句x[3][2]={0}表示將二維數(shù)組x的所有元素賦初值0,而循環(huán)語(yǔ)句for(i=0;i<3;i++)scanf("%d",x[i])表示對(duì)數(shù)組元素x[0][0]、x[1][0]、x[2][0]賦值。所以當(dāng)運(yùn)行程序時(shí),輸入246時(shí),數(shù)組元素x[0][0]=2、x[1][0]=4、x[2][0]=6,因此,輸出數(shù)組元素x[0][0]=2、x[0][1]=0、x[1][0]=4的值204。21、有以下程序#includeintfun(int(*s)[4],intn,intk){intm,i;m=s[0][k];for(i=1;im)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));}程序的運(yùn)行結(jié)果是A、31B、34C、4D、32標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:函數(shù)funl(int(*s)[4],int,intk)的功能是返回二維數(shù)組第k列的最大元素。在主函數(shù)中由于二維數(shù)組a[4][4]已經(jīng)初始化,所以fun(a,4,0)的值是二維數(shù)組a[][]第1列中的最大元素31。22、有下列程序:main(){inta[4][4]={{1,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1)),i,j,k,t;for(i=0;i<4;i++)forfj=0;j<3;j++)for(k=j+1;k<4;k++)iffa[j][i]>a[k][i]){t=a[j][i];a[j][i]=a[k][i];a[k][i]=t;}/*按列排序*/for(i=0;i<4;i++)printf("%d,",a[i][i]);}程序運(yùn)行后的輸出結(jié)果是A、8,7,3,1,B、1,6,5,7,C、4,7,5,2,D、1,6,2,1,標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:最外層的for語(yǔ)句的自變量i是列下標(biāo),而內(nèi)部的兩個(gè)for語(yǔ)句的自變量i和k是行下標(biāo)。所以由程序段可知,這是利用三重循環(huán)對(duì)二維數(shù)組a[4][4]的元素按列從小到大進(jìn)行排序,所以最后排完序的結(jié)果為a[4][4]={{1,4,2,1),{3,6,3,2},{4,7,5,5},{8,8,6,7}},最后一個(gè)for語(yǔ)句的功能是輸出數(shù)組a[4][4]主對(duì)角線上的元素,因而輸出為1,6,5,7。23、有下列程序: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、753B、369C、751D、357標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:由于在程序中定義了二維數(shù)組t[][3]={9,8,7,6,5,4,3,2,1}:由二維數(shù)組的存儲(chǔ)方式按行存儲(chǔ),即初始化完第一行的所有列再初始化下一行的元素??芍@是一個(gè)3行3列的二維數(shù)組,第一行的元素為{9,8,7),第二行的元素為{6,5,4),第三行的元素為{3,2,1}。然后用for循環(huán)輸出t[2][0]、t[1][1]、t[0][2],它們的值分別為3、5、7。24、有下列程序:main(){inta[4][4]={{1,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}),i,k,t;for(i=0;i<3;i++)for(k=i+1;k<4;k++)if(a[i][i]A、6,2,1,1.B、11,2,6,C、2,3,4,6,D、6,4,3,2,標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:利用二重for循環(huán)對(duì)二維數(shù)組a[4][4]的主對(duì)角線上的元素{1,6,2,1}實(shí)現(xiàn)按列從大到小排序,所以數(shù)組a[4][4]的值變?yōu)閧{6,4,3,2,},{8,2,5,7},{3,7,1,5},{4,8,6,1}},最后輸出數(shù)組a[4][4]第一行上的元素,所以輸出結(jié)果為6,4,3,2。25、若有定義:intw[3][5];則以下不能正確表示該數(shù)組元素的表達(dá)式是A、*(*w+3)B、*(*(w+1))C、*(w+1)[4]D、*(&w[0][0]+1)標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:在C語(yǔ)言中,二維數(shù)組的名字表示的是二維數(shù)組的地址,對(duì)于二維數(shù)組imw[3][5],可以認(rèn)為w為一個(gè)一維數(shù)組,含有3個(gè)元素,而每個(gè)元素為一個(gè)含有5個(gè)元素的一維數(shù)組。而(w+1)為一個(gè)含有兩個(gè)元素的一維數(shù)組,首先和(w+1)[4]結(jié)合非法,4超出了二維數(shù)組的邊界,取值也就是非法的了。26、以下錯(cuò)誤的定義語(yǔ)句是A、intx[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3)};B、intx[][3]={{0},{1},{1,2,3}};C、intxn[3]={1,2,3,4};D、intx[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3)};標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:一維數(shù)組定義和初始化是允許省略行下標(biāo),不允許省略列下標(biāo)。27、以下敘述中正確的是A、語(yǔ)句inta[4][3]={1,2,4,5};是錯(cuò)誤的初始化形式B、語(yǔ)句inta[][3]={1,2,4,5);是錯(cuò)誤的初始化形式C、在邏輯上,可以把二維數(shù)組看成是一個(gè)具有行和列的表格或矩陣D、語(yǔ)句inta[4][3]={{1,2),{4,5)};是錯(cuò)誤的初始化形式標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:在理解二維數(shù)組的時(shí)候,可以把一個(gè)二維數(shù)組看成是一個(gè)一維數(shù)組,每個(gè)數(shù)組元素又是包含有若干個(gè)元素的一維數(shù)組,也就是具有行列的結(jié)構(gòu),二維數(shù)組初始化也是在類型說(shuō)明時(shí)給各下標(biāo)變量賦以初值。二維數(shù)組可按行分段賦值,也可按行連續(xù)賦值。28、設(shè)有定義:intx[2][3];則以下關(guān)于二維數(shù)組x的敘述錯(cuò)誤的是A、數(shù)組x可以看作是由x[0]和x[1]兩個(gè)元素組成的一維數(shù)組B、可以用x[0]=0;的形式為數(shù)組所有元素賦初值0C、元素x[0]可看作是由3個(gè)整型元素組成的一維數(shù)組D、x[0]和x[1]是數(shù)組名,分別代表一個(gè)地址常量標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:二維數(shù)組的元素在內(nèi)存中占一系列連續(xù)的存儲(chǔ)單元。數(shù)組元素在內(nèi)存中的排列順序是先存放第0行的元素,再存放第1行的元素……稱這種存放順序?yàn)榘葱写娣?。可以把一個(gè)二維數(shù)組看成是一個(gè)一維數(shù)組,每個(gè)數(shù)組元素又是包含有若干個(gè)元素的一維數(shù)一組。另外在給二維數(shù)組賦初值時(shí)可以不用含花括號(hào)對(duì)。例如,inta[4][3]={1,2,4,5};在編譯時(shí),系統(tǒng)將按a數(shù)組元素在內(nèi)存中排列的順序,將花括號(hào)內(nèi)的數(shù)據(jù)一一對(duì)應(yīng)地賦給各個(gè)元素,若數(shù)據(jù)不足,系統(tǒng)將給后面的元素自動(dòng)補(bǔ)初值0。以上將給a數(shù)組第一行的元素和第二行的第一個(gè)元素依次賦予1、2、4、5,其他元素的初值都為0。29、有以下程序#include#defineN3voidfun(inta[][N],intb[])main(){intij;{intx[N][N]={1,2,3,4,5,6,7,8,9},y[N],i;for(i=0;iA、1,3,5,B、2,4,8,C、3,5,7D、3,6,9,標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:函數(shù)fun()的作用是求出二維數(shù)組a[][N]中每一行中的最大元素,所以在main()函數(shù)中執(zhí)行完fun(x,y)后,數(shù)組y中的元素為二維數(shù)組x[N][N]每一行的最大元素。國(guó)家二級(jí)C語(yǔ)言機(jī)試(函數(shù)和數(shù)組)模擬試卷第2套一、選擇題(本題共29題,每題1.0分,共29分。)1、有以下程序(strcpy為字符串復(fù)制函數(shù),strcat為字符串連接函數(shù))#include<stdio.h>#include<string.h>main(){chara[10]="abc",b[10]="012",c[10]="xyz";strcpy(a+1,b+2);puts(strcat(a,c+1));}程序運(yùn)行后的輸出結(jié)果是A、bc2yzB、a2yzC、a12xyzD、12yz標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:程序執(zhí)行“strcpy(a+1,b+2)”后,字符數(shù)組a的值為“a2”,再進(jìn)行字符串的連接“strcat(a,c+1)”,此時(shí)字符數(shù)組a的值為“a2vz”。2、若各選項(xiàng)中所用變量己正確定義,函數(shù)fun中通過(guò)return語(yǔ)句返回一個(gè)函數(shù)值,以下選項(xiàng)中錯(cuò)誤的程序是A、main(){……x=fun(2,10);……}floatfun(inta,intb){……}B、floatfun(inta,intb){……}main(){……x=fun(i,j);……}C、floatfun(int,int);main(){……x=fun(2,10);……}floatfun(inta,intb){……}D、main(){floatfun(inti,intj);……x=fun(i,j);……}floatfun(inta,intb){……}標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:C語(yǔ)言規(guī)定,函數(shù)必須先定義,后調(diào)用(函數(shù)的返回值類型為int或char時(shí)除外)。在選項(xiàng)A)中,調(diào)用的子函數(shù)在調(diào)用后面定義,所以不正確。在選項(xiàng)B)、C)中,被調(diào)用函數(shù)在主函數(shù)之前定義,再在主函數(shù)中調(diào)用,所以是正確的;在選項(xiàng)D)中,在主函數(shù)中先對(duì)子函數(shù)floatfun(inti,inti)進(jìn)行了聲明,然后進(jìn)行調(diào)用。3、以下敘述中正確的是A、用戶自己定義的函數(shù)只能調(diào)用庫(kù)函數(shù)B、不同函數(shù)的形式參數(shù)不能使用相同名稱的標(biāo)識(shí)符C、在C語(yǔ)言的函數(shù)內(nèi)部,可以定義局部嵌套函數(shù)D、實(shí)用的C語(yǔ)言源程序總是由一個(gè)或多個(gè)函數(shù)組成標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:一個(gè)c語(yǔ)言源程序可以由一個(gè)或多個(gè)源文件組成,每個(gè)源文件可由一個(gè)或多個(gè)函數(shù)組成,這些函數(shù)可以是自定義函數(shù),也可以是庫(kù)函數(shù),各個(gè)函數(shù)之間沒(méi)有主從關(guān)系,不能嵌套定義函數(shù)。4、若有定義語(yǔ)句:chars[10]="1234567\0\0";則strlen(s)的值是A、8B、7C、9D、10標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:字符串長(zhǎng)度函數(shù)strlen(s)表示計(jì)算出以s為起始地址的字符串的長(zhǎng)度,并作為函數(shù)值返回。這個(gè)長(zhǎng)度值不包括串尾的結(jié)束標(biāo)志’\0’。5、有以下程序#include<string.h>main(){charp[20]={’a’,’b’,’c’,’d’),q[]="abc",r[]="abcde";strcat(p,r);strcpy(p+strlen(q),q);printf("%d\n",strlen(p));}程序運(yùn)行后的輸出結(jié)果是A、9B、11C、6D、7標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:字符串連接函數(shù)strcat(p,r)的功能是把字符數(shù)組p[]和r[]連接起來(lái),此時(shí)字符數(shù)組p[]的有效字符長(zhǎng)度為9,再執(zhí)行strcpy(p+strlen(q),q)字符串復(fù)制函數(shù),把字符數(shù)組q[]復(fù)制到字符數(shù)組p[]從p[3]殲始到p[5]數(shù)組位置中,由于字符數(shù)組q[]中的內(nèi)容為字符串“abc”復(fù)制時(shí)把字符串結(jié)束標(biāo)志’\null’也復(fù)制到字符數(shù)組p[]中,這時(shí)字符函數(shù)strlen(p)返回字符數(shù)組p[]的有效字符長(zhǎng)度為6。6、若有定義語(yǔ)句:char*s1="OK",*s2="ok";以下選項(xiàng)中,能夠輸出"OK"的語(yǔ)句是A、if(strcmp(s1,s2)!=0)puts(s1);B、if(strcmp(s1,s2)!=0)puts(s2);C、if(strcmp(s1,s2)==1)puts(s1);D、if(strcmp(s1,s2)==0)puts(s1);標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:字符串比較函數(shù)strcmp的功能是對(duì)s1和s2所指字符串進(jìn)行比較。如果s1<s2,返吲負(fù)數(shù),如果s1==s2,返回0,如果s1>s2,返回正數(shù),所以對(duì)于本題來(lái)說(shuō),能夠輸出“OK”的語(yǔ)句是選項(xiàng)A)所指的語(yǔ)句。7、有以下程序,程序中庫(kù)函數(shù)islower(ch)用以判斷ch中的字母是否為小寫字母#include<stdio.h>#include<ctype.h>voidfun(char*p){inti=0;while(p[i]){if(p[i]==’’&&islower(p[i-1]))p[i-1]=p[i-1]-’a’+’A’;i++;}}main(){chars1[100]="abcdEFG!";fun(s1);printf("%s\n",s1);}程序運(yùn)行后的輸出結(jié)果是A、AbCdEFg!B、abcdEFG!C、abcdEFg!D、aBcDEFG!標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:函數(shù)fun(char*p)的功能是如果p[i]指向的字符為空字符并且其前一個(gè)字符是小寫字母,則把小寫字母變成大字母,所以在主函數(shù)中,執(zhí)行fun(s1)后,小寫字母b,d都改成大字母。8、若有以下定義和語(yǔ)句chars1[10]="abcd!",*s2="\n123\\";printf("%d%d\n",strlen(s1),strlen(s2));則輸出結(jié)果是A、105B、107C、55D、58標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:本題要注意的是轉(zhuǎn)義字符的問(wèn)題,在字符串s2中,有兩個(gè)轉(zhuǎn)義字符,分別是網(wǎng)車換行符和反斜線。所以其字符串長(zhǎng)度等于5。9、有以下程序#include<stdio.h>intfun(inta,intb)main(){if(b==0)returna;{printf("%d\n",fun(4,2));}elsereturn(fun(--a,-b));}程序的運(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。10、下列選項(xiàng)中,能夠滿足“只要字符串s1等于字符串s2,則執(zhí)行ST”要求的是A、iffs1==s2)ST;B、if(strcpy(s1,s2)==1)ST;C、if(strcmp(s2,s1)==0)ST;D、if(s1—s2=0)ST;標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:在C語(yǔ)言中要對(duì)兩個(gè)字符串的大小進(jìn)行比較,就需要調(diào)用字符串比較函數(shù)strcmp(),如果這個(gè)函數(shù)的返同值等于0,說(shuō)明兩個(gè)字符串相等。11、若有以下說(shuō)明和定義uniondt{inta;charb;doublec;}data;以下敘述中錯(cuò)誤的是A、data的每個(gè)成員起始地址都相同B、變量data所占內(nèi)存字節(jié)數(shù)與成員c所占字節(jié)數(shù)相等C、程序段:data.a(chǎn)=5;printf("%f\n",data.c);輸出結(jié)果為5.000000D、data可以作為函數(shù)的實(shí)參標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:本題主要考查聯(lián)合的定義和使用。選項(xiàng)A)聯(lián)合中每個(gè)成員起始地址都是一樣的,正確;選項(xiàng)B)聯(lián)合的長(zhǎng)度等于長(zhǎng)度最長(zhǎng)成員的長(zhǎng)度,在data中,成員c是double類型,長(zhǎng)度為8個(gè)字節(jié)最長(zhǎng),因此data所占用字節(jié)數(shù)和成員c長(zhǎng)度一致。選項(xiàng)C)整型和double類型的存儲(chǔ)格式不一致,整數(shù)5在內(nèi)存中的存儲(chǔ)格式和浮點(diǎn)數(shù)5存儲(chǔ)格式不一樣,因此data.c輸出不會(huì)是5.000000;選項(xiàng)D)聯(lián)合和結(jié)構(gòu)體都可以作為函數(shù)實(shí)參。12、以下關(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)解析:本題主要考查函數(shù)的定義和使用。選項(xiàng)A)錯(cuò)誤,main函數(shù)可以調(diào)用其他函數(shù),但是其他函數(shù)不能調(diào)用main函數(shù);選項(xiàng)B)正確;選項(xiàng)C)錯(cuò)誤,只有main函數(shù)可以單獨(dú)運(yùn)行,其他函數(shù)只能被調(diào)用;選項(xiàng)D)錯(cuò)誤,C語(yǔ)言中不能在函數(shù)內(nèi)部定義函數(shù)。13、在C語(yǔ)言中,函數(shù)返回值的類型最終取決于A、函數(shù)定義時(shí)在函數(shù)首部所說(shuō)明的函數(shù)類型B、return語(yǔ)句中表達(dá)式值的類型C、調(diào)用函數(shù)時(shí)主調(diào)函數(shù)所傳遞的實(shí)參類型D、函數(shù)定義時(shí)形參的類型標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:C語(yǔ)言中函數(shù)的返回值類型是由定義函數(shù)時(shí)在函數(shù)首部所聲明的類型確定的。14、當(dāng)用戶要求輸入的字符串中含有空格時(shí),應(yīng)使用的輸入函數(shù)是A、scanf()B、getchar()C、gets()D、getc()標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:本題考查基本輸入輸出函數(shù)。選項(xiàng)A)中的scanf函數(shù)接收輸入字符串時(shí)會(huì)把空格當(dāng)成結(jié)束符;選項(xiàng)B)中的getchar是讀取輸出的一個(gè)字符,不能用作字符串輸入;選項(xiàng)C)中的gets滿足要求;選項(xiàng)D)沒(méi)有g(shù)etc函數(shù)。15、avg函數(shù)的功能是求整型數(shù)組中的前若干個(gè)元素的平均值,設(shè)數(shù)組元素個(gè)數(shù)最多不超過(guò)10,則下列函數(shù)說(shuō)明語(yǔ)句錯(cuò)誤的是A、intavg(int*a,intn);B、intavg(inta[10],intn);C、intavg(inta[],intn);D、intavg(inta,intn);標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查函數(shù)的定義。題目要求計(jì)算數(shù)組的平均值,因此函數(shù)必須獲取數(shù)組的地址(指針),即函數(shù)必須要有一個(gè)指針類型的參數(shù),選項(xiàng)D)中函數(shù)參數(shù)都是整型,錯(cuò)誤。16、以下敘述中正確的是A、函數(shù)名代表該函數(shù)的入口地址B、所有函數(shù)均不能接受函數(shù)名作為實(shí)參傳入C、函數(shù)體中的語(yǔ)句不能出現(xiàn)對(duì)自己的調(diào)用D、如果函數(shù)帶有參數(shù),就不能調(diào)用自己標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:函數(shù)形、實(shí)參傳遞的時(shí)候,要求對(duì)應(yīng)位置類型一致即可,如果實(shí)參為函數(shù)名,可以定義相應(yīng)的形參為指向函數(shù)的指針變量來(lái)獲得該函數(shù)的入口地址,因此選項(xiàng)B)錯(cuò)誤的,在C語(yǔ)言中允許進(jìn)行遞歸調(diào)用,即自己調(diào)用自己,選項(xiàng)C)和選項(xiàng)D)是錯(cuò)誤的。17、以下敘述中正確的是A、函數(shù)既可以直接調(diào)用自己,也可以間接調(diào)用自己B、任何情況下都不能用函數(shù)名作為實(shí)參C、函數(shù)的遞歸調(diào)用不需要額外開(kāi)銷,所以效率很高D、簡(jiǎn)單遞歸不需要明確的結(jié)束遞歸的條件標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:一個(gè)C語(yǔ)言源程序可以由一個(gè)或多個(gè)源文件組成,每個(gè)源文件可由一個(gè)或多個(gè)函數(shù)組成,各函數(shù)之間是平行的,除了主函數(shù)外,函數(shù)之間可以相互調(diào)用,甚至C語(yǔ)言中的函數(shù)可以直接或間接地自己調(diào)用自己,稱之為遞歸調(diào)用,該調(diào)用主要用于把要解決的問(wèn)題轉(zhuǎn)化為一個(gè)新的問(wèn)題,而這個(gè)新問(wèn)題的解決方法仍與原來(lái)的解法相同,只是所處理的對(duì)象有規(guī)律地遞增或遞減,可以應(yīng)用這個(gè)轉(zhuǎn)化過(guò)程使問(wèn)題得到解決,同時(shí)為了有效使用遞歸調(diào)用必定要有一個(gè)明確的結(jié)束遞歸的條件。而每次進(jìn)行遞歸調(diào)用時(shí)候,需要利用棧保存現(xiàn)場(chǎng)信息,因此并不會(huì)提高效率,選項(xiàng)C)和選項(xiàng)D)不正確。函數(shù)名表名了函數(shù)的入口地址,如果函數(shù)的形參為指向函數(shù)的指針變量,那么對(duì)應(yīng)的實(shí)參必須為函數(shù)名,因此函數(shù)名可以為函數(shù)的參數(shù),選項(xiàng)B)錯(cuò)誤。18、以下關(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)解析:return語(yǔ)句主要用于返回函數(shù)的值。在一個(gè)自定義函數(shù)中,可以根據(jù)不同的情況設(shè)置多條return語(yǔ)句返回函數(shù)的值。19、已定義以下函數(shù)intfun(int*p){return*p;}fun函數(shù)返回值是A、不確定的值B、一個(gè)整數(shù)C、形參p中存放的值D、形參p的地址值標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:由函數(shù)intfun(int*p){return*p;}的定義可知,返回值為整型指針變量p所指向的數(shù)據(jù)。20、以下敘述中錯(cuò)誤的是A、用戶定義的函數(shù)中可以沒(méi)有return語(yǔ)句B、用戶定義的函數(shù)中若沒(méi)有return語(yǔ)句,則應(yīng)當(dāng)定義函數(shù)為void類型C、用戶定義的函數(shù)中可以有多個(gè)return語(yǔ)句,以便可以調(diào)用一次返回多個(gè)函數(shù)值D、函數(shù)的return語(yǔ)句中可以沒(méi)有表達(dá)式標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:函數(shù)值通過(guò)return語(yǔ)句返回,return語(yǔ)句的形式如下:return表達(dá)式或return(表達(dá)式);當(dāng)程序執(zhí)行到return語(yǔ)句時(shí),程序的流程就返回到調(diào)用該函數(shù)的地方,并帶回函數(shù)值。在同一函數(shù)內(nèi),可以根據(jù)需要,存多處出現(xiàn)return語(yǔ)句,在函數(shù)體的不同部位退出函數(shù)。無(wú)論函數(shù)體中有多少個(gè)return語(yǔ)句,return語(yǔ)句只可能執(zhí)行一次,返同一個(gè)函數(shù)值。rerurn語(yǔ)句中也可以不含有表達(dá)式,這時(shí)必須定義函數(shù)為void類型,它的作用只是使流程返回到調(diào)用函數(shù),并沒(méi)有確定的函數(shù)值。函數(shù)體內(nèi)可以沒(méi)有return語(yǔ)句,這時(shí)也必須定義函數(shù)為void類型,程序的流程就一直執(zhí)行到函數(shù)末尾的“}”,然后返回調(diào)用函數(shù),也沒(méi)有確定的函數(shù)值帶回。21、以下敘述中錯(cuò)誤的是A、函數(shù)調(diào)用可以作為一個(gè)獨(dú)立的語(yǔ)句存在B、函數(shù)形參的值也可以傳回給對(duì)應(yīng)的實(shí)參C、若函數(shù)有返回值,必須通過(guò)return語(yǔ)句返回D、C程序必須由一個(gè)或一個(gè)以上的函數(shù)組成標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:一個(gè)C程序中可以包含任意多個(gè)不同名的函數(shù),但只能有一個(gè)主函數(shù)。一個(gè)C程序總是從主函數(shù)殲始執(zhí)行。函數(shù)的值通過(guò)return語(yǔ)句返回,return語(yǔ)句中的表達(dá)式的值就是所求的函數(shù)值。在C語(yǔ)言中,數(shù)據(jù)只能從實(shí)參單向傳遞給形參,稱為“按值”傳遞。也即是說(shuō),當(dāng)簡(jiǎn)單變量作為實(shí)參時(shí),用戶不可能在函數(shù)中改變對(duì)應(yīng)實(shí)參的值。22、在函數(shù)調(diào)用過(guò)程中,如果函數(shù)如funA調(diào)用函數(shù)funB,函數(shù)funB又調(diào)用了函數(shù)如funA,則A、稱為函數(shù)的直接遞歸調(diào)用B、稱為函數(shù)的間接遞歸調(diào)用C、稱為函數(shù)的循環(huán)調(diào)用D、C語(yǔ)言中不允許這樣的遞歸調(diào)用標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題考查遞歸的概念,C語(yǔ)言中函數(shù)可以直接或間接調(diào)用自身,稱為遞歸調(diào)用。本題中funA調(diào)用funB,然后funB又調(diào)用funA,即funA間接調(diào)用了自身。23、程序中對(duì)fun函數(shù)有如下說(shuō)明voidfun();此說(shuō)明的含義是A、fun函數(shù)無(wú)返回值B、fun函數(shù)的返回值可以是任意的數(shù)據(jù)類型C、fun函數(shù)的返回值是無(wú)值型的指針類型D、指針fun指向一個(gè)函數(shù),該函數(shù)無(wú)返回值標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題主要考察函數(shù)的聲明,voidfun()表示fun函數(shù)沒(méi)有輸入?yún)?shù),函數(shù)返回void表示函數(shù)無(wú)返回值。24、程序中若有如下說(shuō)明和定義語(yǔ)句charfun(char*);main(){char*s="one",a[5]={0},(*f1)()=fun,ch;……}以下選項(xiàng)中對(duì)函數(shù)fun的正確調(diào)用語(yǔ)句是A、(*f1)(a);B、*f1(*s);C、fun(a);D、ch=*fl(s);標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題主要考查函數(shù)調(diào)用和函數(shù)指針的使用。根據(jù)定義f1是一個(gè)函數(shù)指針,且指向fun函數(shù),因此可以使用函數(shù)指針來(lái)調(diào)用函數(shù)。使用函數(shù)指針調(diào)用函數(shù)的時(shí)候使用*運(yùn)算符,即*fl和fun是一樣的,fun函數(shù)有參數(shù),通過(guò)fl調(diào)用fun函數(shù)寫法為:(*fl)(a),括號(hào)是必須的,這樣才能保證各部分正確結(jié)合。25、以下程序的主函數(shù)中調(diào)用了其前面定義的fun函數(shù)#include<stdio.h>main(){doublea[15],k;k=fun(a);……}則以下選項(xiàng)中錯(cuò)誤的fun函數(shù)首部是A、doublefun(doublea[15])B、doublefun(double*a)C、doublefun(doublea[])D、doublefun(doublea)標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查函數(shù)的定義和調(diào)用。根據(jù)對(duì)fun函數(shù)的調(diào)用可知,fun函數(shù)的返回值為double類型的,輸入?yún)?shù)是一個(gè)double類型的地址(指針),因此選項(xiàng)D)錯(cuò)誤。26、有以下程序intadd(inta,intb)main(){return(a+b);}{intk,(*f)(),a=5,b=10;f=add;……}則以下函數(shù)調(diào)用語(yǔ)句錯(cuò)誤的是A、k=add(a,b);B、k=(*f)(a,b);C、k=*f(a,b);D、k=f(a,b);標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:在語(yǔ)句“k(=*f(a,b)”中,由于“()”的優(yōu)先級(jí)高于“*”,所以“*f(a,b);”表示其返回類型為指針的帶有兩個(gè)整型參數(shù)的函數(shù),而不是整型數(shù)值,因此選項(xiàng)C)為錯(cuò)誤的調(diào)用形式。27、以下敘述中正確的是A、函數(shù)調(diào)用時(shí),不必區(qū)分函數(shù)名稱的大小寫B(tài)、調(diào)用函數(shù)時(shí),函數(shù)名必須與被調(diào)用的函數(shù)名完全一致C、函數(shù)名允許用數(shù)字開(kāi)頭D、在函數(shù)體中只能出現(xiàn)一次return語(yǔ)句標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:在標(biāo)準(zhǔn)C中,函數(shù)的定義形式為:函數(shù)返回值的類型名函數(shù)名(類型名形式參數(shù)1,類型名形式參數(shù)2,…){說(shuō)明部分語(yǔ)句部分}需要說(shuō)明的是函數(shù)名和形式參數(shù)都是由用戶命名的標(biāo)識(shí)符,在同一程序中,函數(shù)名必須惟一,形式參數(shù)名只要在同一函數(shù)中惟一即可,與其他函數(shù)中的變量可以同名。return語(yǔ)句的作用是返回函數(shù)的值,在函數(shù)中可以出現(xiàn)多個(gè)或者沒(méi)有。28、若有以下函數(shù)首部intfun(doublex[10],int,*n)則下面針對(duì)此函數(shù)的函數(shù)聲明語(yǔ)句中正確的是A、intfun(double,int);B、intfun(double*x,intn);C、intfun(double*,int*);D、intfun(doublex,int*n);標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:函數(shù)說(shuō)明的一般形式為:類型名函數(shù)名(參數(shù)類型1,參數(shù)類型2,……)。因?yàn)楹瘮?shù)intfun(doublex[10],int*n)的第1個(gè)形式參數(shù)是一個(gè)雙精度型的一維數(shù)組,第2個(gè)參數(shù)是一個(gè)整型指針,并返回一個(gè)整型值。一維數(shù)組的名字表示的是一維數(shù)組的地址。29、以下選項(xiàng)中敘述錯(cuò)誤的是A、在C程序的同一函數(shù)中,各復(fù)合語(yǔ)句內(nèi)可以定義變量,其作用域僅限本復(fù)合語(yǔ)句內(nèi)B、C程序函數(shù)中定義的賦有初值的靜態(tài)變量,每調(diào)用一次函數(shù),賦一次初值C、C程序函數(shù)中定義的自動(dòng)變量,系統(tǒng)不自動(dòng)賦確定的初值D、C程序函數(shù)的形參不可以說(shuō)明為static型變量標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:在函數(shù)定義的靜態(tài)變量,只需要賦值1次,即可保存初始值,不需要每次調(diào)用時(shí)都賦初始值。國(guó)家二級(jí)C語(yǔ)言機(jī)試(函數(shù)和數(shù)組)模擬試卷第3套一、選擇題(本題共30題,每題1.0分,共30分。)1、有以下程序intf(intx);main(){intn=1,m;m=f(f(f(n)));printf("%d\n",m);}intflintx){returnx*2;}程序運(yùn)行后的輸出結(jié)果是A、1B、2C、4D、8標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:程序考查了函數(shù)的調(diào)用。對(duì)于m=f(f(f(n)));首先“算最內(nèi)層的函數(shù)調(diào)用f(n),執(zhí)行t函數(shù),得到返回值2,然后計(jì)算f(2),得到返回值為4,最后計(jì)算f(4),得到計(jì)算結(jié)果為8。2、有以下程序#include<stdio.h>intfun(intx,inty)main(){if(x==y)return(x);{inta=4,b=5,c=6;elsereturn((x+y)/2);printf("%d\n",fun(2*a,fun(b,c)));}}程序運(yùn)行后的輸出結(jié)果是A、3B、6C、8D、12標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:fun(b,c)即fun(5,6),5!=6,所以返回(5+6)/2=5;fun(2*a,5)即fun(8,5),8!=5,所以返回(8+5)/2=6。3、有以下程序#include<stdio.h>main()intf(intx,inty){inta=3,b=4,c=5,d;{return((y-x)*x);}d=f(f(a,b),f(a,c));printf("%d\n",d);}程序運(yùn)行后的輸出結(jié)果是A、10B、8C、9D、7標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:本題考查函數(shù)的嵌套調(diào)用。首先計(jì)算f(a,b)與f(a,c),f(a,b)=(b—a)*a=3,f(a,c)=(c—a)*a=6,然后計(jì)算f(3,6)=(6—3)*3=9。4、有以下程序#include<stdio.h>doublef(doublex);main()doubleffdoubleX){doublea=0;inti;{returnx*x+1;}for(i=0;i<30;i+=10)a+=f((double)i);printf("%5.0f\n",a);}程序運(yùn)行后的輸出結(jié)果是A、401B、500C、503D、1404標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:由于函數(shù)f的作用是對(duì)形參x求平方再加1,所以在主函數(shù)中,循環(huán)第一次執(zhí)行后變量a的值等于1,第二次執(zhí)行后,變量a的值等于102,第j次執(zhí)行后,變量a的值等于503。5、若函數(shù)調(diào)用時(shí)的實(shí)參為變量時(shí),以下關(guān)于函數(shù)形參和實(shí)參的敘述中正確的是A、形參只是形式上的存在,不占用具體存儲(chǔ)單元B、函數(shù)的形參和實(shí)參分別占用不同的存儲(chǔ)單元C、同名的實(shí)參和形參占同一存儲(chǔ)單元D、函數(shù)的實(shí)參和其對(duì)應(yīng)的形參共占同一存儲(chǔ)單元標(biāo)準(zhǔn)答案:B知識(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í)參單元仍保留并維持原值。6、有以下程序voidfun(inta,intb,intc){a=b;b=c;c=a;}main(){inta=10,b=20,c=30;fun(a,b,C);printf("%d,%d,%d\n",c,b,a);}程序運(yùn)行后的輸出結(jié)果是A、10,20,30B、20,30,10C、30,20,10D、0,0,0標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:函數(shù)fun中采用了變量作為參數(shù),那么參數(shù)傳遞以后,形參a,b,c的變化對(duì)于實(shí)參a,b,c是沒(méi)有影響的,因此主函數(shù)中a,b,c的值經(jīng)過(guò)fun調(diào)用以后,值沒(méi)有變化。7、有以下程序#include<stdio.h>intf(intx);main()intf(intx){inta,b=0;{returnx*x+1;}for(a=0;a<3;a++){b=b+f(a);putchar(’A’+b);}}A、BCDB、BDIC、ABED、BCF標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:在函數(shù)main()中,第一次執(zhí)行for循環(huán)時(shí),b的值等于1,此時(shí)輸出字母B;第二次執(zhí)行for循環(huán)時(shí),b的值等于3,此時(shí)輸出字母D;第三次執(zhí)行for循環(huán)時(shí),b的值等于8,此時(shí)輸出字母I。8、若有以下程序voidf(intx)main(){intZ=123456;{if(x>=10)f(z);}{printf("%d-",x%10);f(x/10);}elseprintf("%d",x);}則程序的輸出結(jié)果是A、6-5-4-3-2-1B、6-5-4-3-2-1-C、1-2-3-4-5-6D、1-2-3-4-5-6-標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:函數(shù)f的主要功能為逆置輸出整數(shù)x的每一位數(shù)據(jù),如果z的值為123456,逆置輸出的結(jié)果為6-5-4-3-2-1。9、以下與函數(shù)fseek(fp,OL,SEEK_SET)有相同作用的是A、feof(fp)B、ftell(fp)C、fgetc(fp)D、rewind(fp)標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題主要考查文件系IO函數(shù)的使用,fseek函數(shù)用于設(shè)置文件指針的位置,feof函數(shù)用于判斷是否已經(jīng)到了文件結(jié)束,ftell函數(shù)返回文件指針的當(dāng)前位置,fgetc從文件讀取一個(gè)字符,rewind函數(shù)將文件指針重新指向文件開(kāi)始。題目當(dāng)中fseek(fp,OL,SEEK_SET)表示把文件指針移動(dòng)到文件的開(kāi)始位置0,和rewilld函數(shù)功能一致。10、以下程序的功能是:給r輸入數(shù)據(jù)后計(jì)算半徑為r的圓面積s。程序在編譯時(shí)出錯(cuò)main()/*Beginning*/{intr;floats;scanf("%d",r);s=*π*r*r;printf("s=%f\n",s);}出錯(cuò)的原因是A、注釋語(yǔ)句書(shū)寫位置錯(cuò)誤B、存放圓半徑的變量r不應(yīng)該定義為整型C、輸出語(yǔ)句中格式描述非法D、計(jì)算圓面積的賦值語(yǔ)句使用了非法變量標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查了C語(yǔ)言的基本輸入輸出函數(shù)。選項(xiàng)A)錯(cuò)誤,代碼里面的注釋是正確的,“/*”和“*/”配對(duì);選項(xiàng)B)錯(cuò)誤,r變量定義為整型是可以的;選項(xiàng)C)輸出語(yǔ)句格式正確;選項(xiàng)D)正確,計(jì)算s的時(shí)候s=*π*r*r使用了未定義變量北。11、以下程序函數(shù)f的功能是:當(dāng)flag為1時(shí),進(jìn)行由小到大排序;當(dāng)flag為0時(shí),進(jìn)行由大到小排序voidf(intb[],intn,intflag)main(){inti,j,t;{inta[10]={5,4,3,2,l,6,7,8,9,10),i;for(i=0;i<n一1;i++)f(&a[2],5,0);f(a,5,1);for(j=i+1;j<n;j++)for(i=0;i<10;i++)printf("%d,",a[i]);if(flag?b[i]>b[j]:b[i]<b[j])}{t=b[i];b[i]=b[j];b[j]=t;}}程序運(yùn)行后的輸出結(jié)果是A、1,2,3,4,5,6,7,8,9,10,B、3,4,5,6,7,2,1,8,9,10,C、5,4,3,2,1,6,7,8,9,10,D、10,9,8,7,6,5,4,3,2,1,標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題主要考查函數(shù)的調(diào)用。在main函數(shù)中,兩次調(diào)用f函數(shù)進(jìn)行排序,f函數(shù)有三個(gè)參數(shù),第一個(gè)參數(shù)是數(shù)組地址,第二個(gè)參數(shù)是需要排序的數(shù)據(jù)個(gè)數(shù),第三個(gè)參數(shù)指定排序依據(jù)。第一次調(diào)用f函數(shù)的時(shí)候,從第三個(gè)元素開(kāi)始對(duì)5個(gè)元素進(jìn)行從大到小的排序,因此調(diào)用f函數(shù)轉(zhuǎn)換數(shù)組a的值分別為:5,4,7,6,3,2,1,8,9,10;第二次調(diào)用f函數(shù)對(duì)數(shù)組a的前5個(gè)元素進(jìn)行從小到大的排序,因此排序完成后數(shù)組a的值變成:3,4,5,6,7,2,1,8,9,10。12、有以下程序,其中k的初值為八進(jìn)制數(shù)#include<stdio.h>>main(){intk=011;printf("%d\n",k++);}程序運(yùn)行后的輸出結(jié)果是A、12B、11C、10D、9標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題主要考查基本數(shù)據(jù)類型和格式化輸出函數(shù)printf。變量k的初值為011,表示8進(jìn)制的11,十進(jìn)制值為9,printf輸出k++的值,++在k的后面表示先使用后自增,因此輸出的值為9。13、有以下程序#include<stdio.h>intfun(intx){intp;if(x==0‖x==1)return(3);p==x-fun(x-2);return(p);}=main(){printf("%d\n",fun(9));}程序運(yùn)行后的輸出結(jié)果是A、5B、9C、4D、7標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:函數(shù)fun的主要功能是:初值x的值為9,因此fun(9)=9-fun(7)=9-(7-(5-(3-3))),因此答案為7。14、有以下程序#include<stdio.h>intfun(intn){inta;main()if(n==1)return1;{a=n+fun(n-1);printf("%d\n",fun(5));return(a);}}程序的輸出結(jié)果是A、14B、10C、15D、9標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:函數(shù)fun為遞歸定義的函數(shù),當(dāng)調(diào)用fun(5)→5+fun(4)→5+4+fun(3)→5+4+3+fun(2)→5+4+3+2+fun(1),因此最后的結(jié)果為15。15、有以下程序#include<stdio.h>intfun(inta,intb){returna+b;}main(){intx=6,y=7,z=8,r;r=fun(fun(x,y),z--);printf("%d\n",r);}程序運(yùn)行后的輸出結(jié)果是A、15B、21C、20D、31標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題考查函數(shù)的調(diào)用,函數(shù)fun功能為求兩個(gè)數(shù)據(jù)的和。主函數(shù)中表達(dá)式r=fun(fun(x,y),z--),首先計(jì)算內(nèi)層調(diào)用fun(x,y),計(jì)算結(jié)果為13,然后外層調(diào)用fun(13,8),結(jié)果為21。16、以下選項(xiàng)中函數(shù)形參不是指針的是A、fun(int&p){…}B、fun(inta[10]){…}C、fun(int*a){…}D、fun(intP[]){…}標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:C語(yǔ)言中形參數(shù)組是指針變量,其數(shù)組中元素的個(gè)數(shù)由傳遞的實(shí)參數(shù)組決定,因此可以在定義的時(shí)候,不給出元素個(gè)數(shù)的說(shuō)明,因此選項(xiàng)B)和D)形參均為指針變量,選項(xiàng)A)的定義在C語(yǔ)言中不存在的。17、設(shè)有如下函數(shù)定義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、4C、3D、5標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:這道題目考查了函數(shù)的遞歸調(diào)用,當(dāng)執(zhí)行調(diào)用語(yǔ)句n=fun(3)時(shí),返回n=fun(2)+1,再執(zhí)行fun(2),返回n=fun(1)+1+1,而fun(1)等于1,所以最后n的值等于3。而函數(shù)fun總共被調(diào)用了3次。即fun(3),fun(2),fun(1)。18、有以下程序#include<stdio.h>intf(intx)main(){inty;{intz;if(x==0‖x==1)return(3);z=f(3);printf("%d\n",z);y=x*x-f(x-2);}returny;}程序的運(yùn)行結(jié)果是A、9B、0C、6D、8標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:主函數(shù)調(diào)用f()函數(shù),將實(shí)參3傳遞給x,進(jìn)行if條件語(yǔ)句的判斷不成立,接著執(zhí)行y=3*3-f(1),再執(zhí)行f(1),而f(1)滿足if條件語(yǔ)句,所以f(1)的值為3,代入y=3*3-f(1)=9-3=6。19、有以下程序(strcat函數(shù)用以連接兩個(gè)字符串)#include<stdio.h>#include<string.h>main(){chara[20]="ABCD\OEFG\0",b[]="IJK";strcat(a,b);printf("%s\n",a);}程序運(yùn)行后的輸出結(jié)果是A、ABCDE\OFG\OIJKB、ABCDIJKC、IJKD、EFGIJK標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:在字符串中字符’\0’表示字符串的結(jié)束標(biāo)志,所以字符串a(chǎn)和b相連接的結(jié)果為ABCDIJK。20、有以下程序intfun(intn)main(){if(n==1)return1;{intx;Elsescanf("%d",&x);x=fun(x);return(n+fun(n—1));printf("%d\n",x);}}執(zhí)行程序時(shí),給變量x輸入10,程序的輸出結(jié)果是A、54B、65C、45D、55標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:在C語(yǔ)言中函數(shù)可以遞歸調(diào)用,即直接或間接地自己調(diào)用自己。本題在函數(shù)intfun(intn)的定義中又出現(xiàn)了對(duì)函數(shù)fun的調(diào)用,所以函數(shù)fun是遞歸函數(shù)。因而在主函數(shù)中調(diào)用x=fun(x)時(shí),當(dāng)輸入10賦給變量x時(shí),遞歸調(diào)用的過(guò)程為:fun(10)=10+fun(9)=10+9+fun(8)=10+9++8+fun(7)=10+9++8+7+fun(6)=10+9++8+7+6+fun(6)=10+9++8+7+6+5+fun(4)=10+9++8+7+6+5+4+fun(3)=10+9++8+7+6+5+4+3+fun(2)=10+9++8+7+6+5+4+3+2+fun(1)=10+9++8+7+6+5+4+3+2+1=5521、有以下程序fun(intx)main(){intp;{if(x==0‖x==1)return(3);printf("%d\n",fun(7));p=x—fun(x-2);}returnp;}執(zhí)行后的輸出結(jié)果是A、3B、7C、0D、2標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:因?yàn)樵诤瘮?shù)fun(intx)中,如果參數(shù)x等于0或等于1時(shí),返回值為“3”。否則“p=x-fun(x-2)”這是一個(gè)遞歸函數(shù),所以在主函數(shù)調(diào)用fun(7)的時(shí)候,其過(guò)程為:“fun(7)=7一fun(5)=7一(5一fun(3))=7一(5一(3一fun(1)))=7一(5一(3一3))=7—5=2”,所以最后的輸出結(jié)果為2。22、若有以下程序intf(inta[],intn)main(){if(n>1){inta[]={8,2,9,1,3,6,4,7,5};{intt;t=f(a,n-1);printf("%d\n",f(a,9));returnt>a[n-1]?t:a[n—1];}}elsereturna[0];}則程序的輸出結(jié)果是A、9B、1C、8D、5標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:主函數(shù)中調(diào)用f(a,9),遞歸函數(shù)的調(diào)用過(guò)程如下:f(a,9)→f(a,8)→f(a,7)→f(a,6)→f(a,5)→f(a,4)→f(a,3)→f(a,2)→f(a,1),f(a,1)得到返回值為a[0],值為8,遞歸過(guò)程開(kāi)始回歸,回歸過(guò)程描述如下:8>a[1],返回8→8>a[2]不成立,返回a[2]的值為9……因此函數(shù)f的主要功能為計(jì)算數(shù)組中的最大值。主函數(shù)中輸出最大值為9。23、在一個(gè)C源程序中所定義的全局變量,其作用域?yàn)锳、所在文件的全部范圍B、所在程序的全部范圍C、所在函數(shù)的全部范圍D、由具體定義位置和extern說(shuō)明來(lái)決定范圍標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查C語(yǔ)言的作用域規(guī)則。在C語(yǔ)言中,全局變量的有效范圍從定義變量的位置開(kāi)始到本源文件結(jié)束。如果需要在其他源文件中使用該全局變量,則可以在其他源文件中使用extern關(guān)鍵寧來(lái)聲明該全局變量,這樣該全局變量的作用域就被擴(kuò)展到以extern聲明了該全局變量的位置開(kāi)始到此源文件結(jié)束。24、以下敘述中正確的是A、只有全局變量才有自己的作用域,函數(shù)中的局部變量沒(méi)有作用域B、只要是用戶定義的標(biāo)識(shí)符,都有一個(gè)有效的作用域C、只有在函數(shù)內(nèi)部定義的變量才是局部變量D、局部變量不能被說(shuō)明為static標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:在函數(shù)內(nèi)定義的變量是局部變量,而存函數(shù)之外定義的變量稱為外部變量,也是全局變量。全局變量可以為源文件中其他函數(shù)所共用,其作用域?yàn)閺亩x變量的位置開(kāi)始到源文件結(jié)束。因此只要用戶定義的標(biāo)識(shí)符,全部都有作用域。局部變量可以說(shuō)明為auto、register以及static。25、以下敘述中正確的是A、對(duì)于變量而言,“定義”和“說(shuō)明”這兩個(gè)詞實(shí)際上是同一個(gè)意思B、在復(fù)合語(yǔ)句中不能定義變量C、全局變量的存儲(chǔ)類別可以是靜態(tài)類D、函數(shù)的形式參數(shù)不屬于局部變量標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:用static說(shuō)明符說(shuō)明全局變量時(shí),此變量可稱作靜態(tài)全局變量。靜態(tài)全局變量只限于本編譯單位使用,不能被其他編譯單位所引用。存一個(gè)函數(shù)內(nèi)部定義的變量(包括形參)是局部變量,它只存本函數(shù)范圍內(nèi)有效。不同函數(shù)中可以使用相同名字的局部變量,它們代表不同的對(duì)象,Ⅱ不影響。在函數(shù)內(nèi)部復(fù)合語(yǔ)句中也可以定義變量,這些變量都是局部變量,只在本復(fù)合語(yǔ)句中有效。26、有以下程序intd=1;voidfun(intP)main(){inta=3;{intd=5;fun(a);d+=p++;d+=a++;printf("%d",d);}printf("%d\n",d);}程序的輸出結(jié)果是A、96B、94C、84D、85標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:代碼考查點(diǎn)為全局變量和局部變量的同名問(wèn)題,若全局變量和某個(gè)函數(shù)中的局部變量同名,則在該函數(shù)中,此全局變量被屏蔽,在該函數(shù)內(nèi),訪問(wèn)的是局部變量,與同名的全局變量不發(fā)生任何關(guān)系。主函數(shù)執(zhí)行fun(3)時(shí)候,執(zhí)行調(diào)用函數(shù)fun,使用局部變量d=5,執(zhí)行d+=p++,相當(dāng)于d=d+(p++),得到d的值為8,輸出。函數(shù)調(diào)用結(jié)束,轉(zhuǎn)到主函數(shù),繼續(xù)執(zhí)行d+=a++,此時(shí)d為全局變量,執(zhí)行語(yǔ)句以后,d值為4。27、有以下程序#include<stdio.h>inta=1,b=2;voidfun1(inta,intb)main(){printf("%d%d",a,b);}{fun1(5,6);fun2();voidfun2()printf("%d%d\n",a,b);{a=3;b:4;}}程序運(yùn)行后的輸出結(jié)果是A、3456B、1256C、5612D、5634標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:函數(shù)fun1()的作用是輸出局部變量a和b的值,在主函數(shù)中執(zhí)行fun1(5,6)的結(jié)果是輸出5,6;函數(shù)。fun2()的作用是給變量a和b分別賦值3,4;執(zhí)行fun2()的作用是輸出3,4。28、在一個(gè)C源程序文件中所定義的全局變量,其作用域?yàn)锳、由具體定義位置和extern說(shuō)明來(lái)決定范圍B、所在程序的全部范圍C、所在函數(shù)的全部范圍D、所在文件的全部范圍標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:全局變量是在函數(shù)外部任意位置上定義的變量,它的作用域是從變量定義的位置開(kāi)始,到整個(gè)源文件結(jié)束止。在同一編譯單位內(nèi)用extern說(shuō)明符擴(kuò)展全局變量的作用域(當(dāng)全局變量定義在后,引用它的函數(shù)在前時(shí),應(yīng)該在引用它的函數(shù)中用extern對(duì)此全局變量進(jìn)行說(shuō)明,以便通知編譯程序:該變量是一個(gè)已在外部定義了的全局變量,已經(jīng)分配了存儲(chǔ)單元,不需要再為它分配存儲(chǔ)單元。這時(shí)全局變量的作用域從extern說(shuō)明處起,延伸到該函數(shù)末尾)。當(dāng)一個(gè)程序由多個(gè)編譯單位構(gòu)成,并且在每個(gè)文件中均需要引用同一個(gè)全局變量,這時(shí)只在其中一個(gè)文件中定義所有的全局變量,而在其他用到這些全局變量的文件中用extern對(duì)這些變量進(jìn)行說(shuō)明。29、有以下程序voidfun2(chara,charb)main(){printf(“%c%c”,a,b);}{fun1();chara=’A’,b=’B’;printf("%c%c",a,b);voidfun1()fun2(’E’,’F’);}{a=’C’;b=’D’;}程序的運(yùn)行結(jié)果是A、ABEFB、CDEFC、ABCDD、CDAB標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:在fun1()函數(shù)之前定義了全局字符變量a和b。這兩個(gè)變量的作用域是從其定義處到整個(gè)程序結(jié)束。在fun1()函數(shù)之內(nèi)定義了兩個(gè)變量a和b,并且分別初始化為字符’C’和’D’。在C語(yǔ)言中,若全局變量和某個(gè)函數(shù)中的局部變量同名,則在該函數(shù)中此全局變量被屏蔽,在該函數(shù)內(nèi)訪問(wèn)的是局部變量,與同名的全局變量不發(fā)生任何關(guān)系。所以在主函數(shù)中,執(zhí)行fun1()后,變量a、b的值分別等于’C’、’D’,打印輸出CD,接著執(zhí)行fun2(’E’,’F’)語(yǔ)句,變量a、b的值變?yōu)椤疎’、’F’并輸出。30、有以下程序#include<stdio.h>main(){intk=4,m=1,p;fun(inta,intb){intstaticm=0,i=2;p=fun(k,m);i=i+m+1;printf("%d,",p);m=i+a+b;p=fun(k,m);returnm;}printf("%d\n",p);}程序運(yùn)行后的輸出結(jié)果是A、8,17B、7,16C、8,8D、7,17標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題考查了靜態(tài)變量以及局部變量的同名問(wèn)題。主函數(shù)中調(diào)用fun函數(shù)兩次,第一次調(diào)用fun(4,1),形參a和b接收以后,i值為3,m的值為8,調(diào)用結(jié)束返回8存放到p中并且輸出p的值為8,除了靜態(tài)變量m和i,變量a,b撤銷。第二次調(diào)用fun(4,1),接收實(shí)參值以后,i為3+8+1,而m為12+4+1,即輸出函數(shù)值17。國(guó)家二級(jí)C語(yǔ)言機(jī)試(函數(shù)和數(shù)組)模擬試卷第4套一、選擇題(本題共29題,每題1.0分,共29分。)1、以下選項(xiàng)中敘述錯(cuò)誤的是A、在C程序的同一函數(shù)中,各復(fù)合語(yǔ)句內(nèi)可以定義變量,其作用域僅限本復(fù)合語(yǔ)句內(nèi)B、C程序函數(shù)中定義的賦有初值的靜態(tài)變量,每調(diào)用一次函數(shù),賦一次初值C、C程序函數(shù)中定義的自動(dòng)變量,系統(tǒng)不自動(dòng)賦確定的初值D、C程序函數(shù)的形參不可以說(shuō)明為static型變量標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:在函數(shù)定義的靜態(tài)變量,只需要賦值1次,即可保存初始值,不需要每次調(diào)用時(shí)都賦初始值。2、有以下程序intflintx);main(){intn=1,m;m=f(f(f(n)));printf("%\n",m);}intf(intx){returnx*2;}程序運(yùn)行后的輸出結(jié)果是A、1B、2C、4D、8標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:程序考查了函數(shù)的調(diào)用。對(duì)于m=f(f(f(n))));首先計(jì)算最內(nèi)層的函數(shù)調(diào)用f(n),執(zhí)行f函數(shù),得到返回值2,然后計(jì)算f(2),得到返回值為4,最后計(jì)算f(4),得到計(jì)算結(jié)果為8。3、有以下程序#includeintfun(intx,inty)main(){if(x==y)return(x);{inta=4,b=5,c=6;elsereturn((x+y)/2);printf("%d\n",fun(2*a,fun(b,c)));}}程序運(yùn)行后的輸出結(jié)果是A、3B、6C、8D、12標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:fun(b,c)即fun(5,6),5!=6,所以返回(5+6)/2=5;fun(2*a,5)即fun(8,5),8!=5,所以返回(8+5)/2=6。4、有以下程序#includemain()intflintx,inty){inta=3,b=4,c=5,d;{return((y-x)*x);)d=f(f(a,b),f(a,c));printf("%d\n",d);}程序運(yùn)行后的輸出結(jié)果是A、10B、8C、9D、7標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:本題考查函數(shù)的嵌套調(diào)用。首先計(jì)算f(a,b)與f(a,c),f(a,b)=(b-a)*a=3,f(a,c)=(c-a)*a=6,然后計(jì)算f(3,6)=(6-3)*3=9。5、有以下程序#includedoublef(doublex);main()doublef(doublex){doublea=0;inti;{returnx*x+1;}for(i=0;i<30;i+=10)a+=f((double)i);printf("%5.0f\n",a);}程序運(yùn)行后的輸出結(jié)果是A、401B、500C、503D、1404標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:由于函數(shù)f的作用是對(duì)形參x求平方再加1,所以在主函數(shù)中,循環(huán)第一次執(zhí)行后變量a的值等于1,第二次執(zhí)行后,變量a的值等于102,第三次執(zhí)行后,變量a的值等于503。6、若函數(shù)調(diào)用時(shí)的實(shí)參為變量時(shí),以下關(guān)于函數(shù)形參和實(shí)參的敘述中正確的是A、形參只是形式上的存在,不占用具體存儲(chǔ)單元B、函數(shù)的形參和實(shí)參分別占用不同的存儲(chǔ)單元C、同名的實(shí)參和形參占同一存儲(chǔ)單元D、函數(shù)的實(shí)參和其對(duì)應(yīng)的形參共占同一存儲(chǔ)單元標(biāo)準(zhǔn)答案:B知識(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í)參單元仍保留并維持原值。7、有以下程序voidfun(inta,intb,intc){a=b;b=c;c=a;}main(){inta=10,b=20,c=30;fun(a,b,c);printf("%d,%d,%d\",c,b,a);}程序運(yùn)行后的輸出結(jié)果是A、10,20,30B、20,30,10C、30,20,10D、0,0,0標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:函數(shù)fun中采用了變量作為參數(shù),那么參數(shù)傳

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論