版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
國家二級(jí)C語言(函數(shù)和數(shù)組)機(jī)試模擬試卷1(共4套)(共113題)國家二級(jí)C語言(函數(shù)和數(shù)組)機(jī)試模擬試卷第1套一、選擇題(本題共28題,每題1.0分,共28分。)1、有以下程序#include<stdio.h>main(){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。2、以下敘述中正確的是A、一條語句只能定義一個(gè)數(shù)組B、數(shù)組說明符的一對(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ù)組的定義格式:類型說明符數(shù)組名[整型常量表達(dá)式],…;可以同時(shí)定義多個(gè)類型相同的數(shù)組,之間以逗號(hào)分隔開,數(shù)組的類型表明了數(shù)組中元素的數(shù)據(jù)類型,數(shù)組中所有元素的類型相同,數(shù)組經(jīng)過定義以后就可使用,編譯程序?qū)?duì)其分配一片連續(xù)的存儲(chǔ)空間進(jìn)行連續(xù)存儲(chǔ)。C語言中只能單個(gè)引用數(shù)組元素而不能一次引用整個(gè)數(shù)組。引用格式為:數(shù)組名[下標(biāo)],引用元素時(shí),需要注意下標(biāo)只能為整型常量或整型表達(dá)式。3、以下敘述中正確的是A、語句inta[]={0};是不合法的,遺漏了數(shù)組的大小B、語句chara[2]={"A","B"};是合法的,定義了一個(gè)包含兩個(gè)字符的數(shù)組C、語句inta[8]={0};是合法的D、語句chara[3];a="AB";是合法的,因?yàn)閿?shù)組有三個(gè)字符空間的容量,可以保存兩個(gè)字符標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:當(dāng)系統(tǒng)為所定義的數(shù)組在內(nèi)存中開辟一串連續(xù)的存儲(chǔ)單元時(shí),這些存儲(chǔ)單元中并沒有確定的值,可以在定義語句中為所定義數(shù)組的各個(gè)元素賦初值。數(shù)組初始化賦值是指在數(shù)組定義時(shí)給數(shù)組元素賦予初值。初始化賦值的一般形式為:類型說明符數(shù)組名[常量表達(dá)式]={值,值,…,值};。需要注意的是當(dāng)所賦初值多于所定義數(shù)組的元素個(gè)數(shù)時(shí),在編譯時(shí)將給出出錯(cuò)信息,在指定初值時(shí),第一個(gè)初值必定賦給下標(biāo)為0的元素,然后按這些數(shù)值的排列順序賦初值,只能給元素逐個(gè)賦值,不能給數(shù)組整體賦值。如果給全部元素賦值,則在數(shù)組說明中,可以不給出數(shù)組元素的個(gè)數(shù)。4、如果定義floata[10],x;則以下敘述中正確的是A、表達(dá)式a+1是非法的B、語句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)解析:定義語句“floata[10],x;”以后,數(shù)組名a表示了數(shù)組元素的首地址,是常量在程序中不能更改,因此選項(xiàng)A)是的描述是正確的。而指向運(yùn)算符和取址運(yùn)算符,是互反運(yùn)算符優(yōu)先級(jí)相同,*&a[1]和}(&a[1])含義相同。5、有以下程序#include<stdio.h>main(){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)語句后,數(shù)組a中的元素的值不變。6、若有以下程序main(){inti,j=0;chara[]="Howareyou!";for(i=0;a[i];i++)if(a[i]!=’’)a[j++]=a[i];a[j]=’\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)訪問字符串的每一個(gè)字符,判斷當(dāng)前字符是否為空格,如果是空格則刪除。因此刪除字符串”Howareyou!”中空格以后,字符串為:Howareyou!。7、若有以下程序#include<stdio-h>main(){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)訪問字符串a(chǎn)的每一個(gè)字符,判斷當(dāng)前字符是否為空格,如果是空格則保存該空格后面的一個(gè)字符存放到字符數(shù)組b中。在字符串"Howareyou!"中,第一個(gè)空格后面字符為’a’,第二個(gè)空格后面字符為’y’,8、若有以下程序#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;aD]!:’\0’;j++){if(a[j]!=*p)break;p++;}if(a[j]=’\0’)break;}}pfintf("%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ù)輸出則從該位置開始一直輸出到字符串b的結(jié)尾。9、以下能正確定義二維數(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語言中定義二維數(shù)組,必須指定二維數(shù)組每一維的大小。選項(xiàng)A)沒有指定數(shù)組a行的大小,錯(cuò)誤;選項(xiàng)B),雖然沒有指定行大小,但是可以通過大括號(hào)里面的元素個(gè)數(shù)計(jì)算出行的大小為1,因此是正確的;選項(xiàng)C)同樣沒有指定行的大小,也不能通過元素個(gè)數(shù)計(jì)算行的個(gè)數(shù),錯(cuò)誤;選項(xiàng)D)定義的是二行三列數(shù)組,但是后面數(shù)據(jù)是三行,超出范圍,所以錯(cuò)。10、若有以下說明和語句intc[4][5],(*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)是取出該元素的值。11、若有定義語句:intk[2][3],*pk[3];,則以下語句中正確的是A、pk=k;B、pk[0]=k[1][2];C、pk=k[0];D、pk[1]=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ù)組首地址。12、若有定義語句: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[1][3]。13、若有定義語句:inta[2][3],*p[3];,則以下語句中正確的是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ù)組首地址。14、若有定義:inta[2][3];,以下選項(xiàng)中對(duì)a數(shù)組元素正確引用的是A、a[2][11]B、a[2][3]C、a[0][3]D、a[1>2][!1]標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查數(shù)組的使用,C語言中數(shù)組的下標(biāo)從0開始。本題中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í)際是訪問a[0][0]。15、以下數(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ò)。16、有以下程序#include<stdio.h>#defineN4voidfun(inta[][N],intb[]){inti;for(i=0;i<N;i++)b[i]=a[i][i]-a[i][N-1-i];}voidmain(){intx[N][N]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},y[N],i;fun(x,y);for(i=0;i<N;i++)printf("%d,",y[i]);printf("\n");}程序運(yùn)行后的輸出結(jié)果是A、-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中元素的值。17、有以下程序#includemain(){intb[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;for(i=0;i<=i;j++)t+=b[i][b[j][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)語句中,每次執(zhí)行變量t的累加時(shí),二維數(shù)組元素b的第二下標(biāo)的值與第一下標(biāo)相同的值,所以程序執(zhí)行的過程為t=1+b[1][1]+b[2][2]=1+1+2=4。18、以下定義數(shù)組的語句中錯(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ù)組。19、有下列程序:main(){intx[3][2]={0},i;for(i=0;i<3;i++)scanf("%d",x[i]);printf("%3d%3d%3d\n",x[0][0],x[0][1],x[1][0]);}若運(yùn)行時(shí)輸入:246<CI>,則輸出結(jié)果為A、200B、240C、204D、246標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:語句x[3][2]={0}表示將二維數(shù)組x的所有元素賦初值0,而循環(huán)語句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<CR>時(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。20、有以下程序#include<stdio.h>intfun(int(*s)[4],intn,intk){intm,i;m=s[0][k];for(i=1;i<n;i++)if(s[i][k]>m)m=s[i][k];returnm;}main(){inta[4][4]={{1,2,3,4),{11,12,13,14},{21,22,23,24},{31,32,33,34}};printf("%d\n",fun(a,4,0));}程序的運(yùn)行結(jié)果是A、31B、34C、4D、32標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:函數(shù)fun(int(*s)[4],intn,intk)的功能是返回二維數(shù)組第k列的最大元素。在主函數(shù)中由于二維數(shù)組a[4][4]已經(jīng)初始化,所以fun(a,4,0)的值是二維數(shù)組a[][]第1列中的最大元素31。21、有下列程序: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++)for(j=0;j<3,j++)for(k=j+1;k<4;k++)if(a[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語句的自變量i是列下標(biāo),而內(nèi)部的兩個(gè)for語句的自變量j和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語句的功能是輸出數(shù)組a[4][4]主對(duì)角線上的元素,因而輸出為1,6,5,7。22、有下列程序: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。23、有下列程序: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[k][k]){t=a[i][i];a[i][i]=a[k][k];a[k][k]=t;}for(i=0;i<4;i++)printf("%d,",a[0][i]);}程序運(yùn)行后的輸出結(jié)果是A、6,2,1,1,B、1,1,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。24、若有定義: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語言中,二維數(shù)組的名字表示的是二維數(shù)組的地址,對(duì)于二維數(shù)組intw[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ù)組的邊界,取值也就是非法的了。25、以下錯(cuò)誤的定義語句是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、intx[][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)。26、以下敘述中正確的是A、語句inta[4][3]:{1,2,4,5};是錯(cuò)誤的初始化形式B、語句inta[][3]={1,2,4,5};是錯(cuò)誤的初始化形式C、在邏輯上,可以把二維數(shù)組看成是一個(gè)具有行和列的表格或矩陣D、語句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ù)組初始化也是在類型說明時(shí)給各下標(biāo)變量賦以初值。二維數(shù)組可按行分段賦值,也可按行連續(xù)賦值。27、設(shè)有定義:intx[2][3];則以下關(guān)于二維數(shù)組x的敘述錯(cuò)誤的是A、數(shù)組x可以看作是由x[0]和x[1]兩個(gè)元素組成的一維數(shù)組B、可以用x[0]=0;的形式為數(shù)組所有元素賦初值oC、元素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。28、有以下程序#include<stdio.h>#defineN3voidfun(inta[][N],intb[]){inti,j;for(i=0;i<N;i++){b[i]=a[i][0];for(j=1.j<N;j++)if(b[i]<a[i][j])}}main(){intx[N][N]={1,2,3,4,5,6,7,8,9},y[N],i;fun(x,y);for(i=0;i<N;i++)printf("%d,",y[i]);printf("\n");b[i]=a[i][j];}A、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í)行完funn(x,y)后,數(shù)組y中的元素為二維數(shù)組x[N][N]每一行的最大元素。國家二級(jí)C語言(函數(shù)和數(shù)組)機(jī)試模擬試卷第2套一、選擇題(本題共27題,每題1.0分,共27分。)1、以下選項(xiàng)中敘述錯(cuò)誤的是A、在C程序的同一函數(shù)中,各復(fù)合語句內(nèi)可以定義變量,其作用域僅限本復(fù)合語句內(nèi)B、C程序函數(shù)中定義的賦有初值的靜態(tài)變量,每調(diào)用一次函數(shù),賦一次初值C、C程序函數(shù)中定義的自動(dòng)變量,系統(tǒng)不自動(dòng)賦確定的初值D、C程序函數(shù)的形參不可以說明為static型變量標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:在函數(shù)定義的靜態(tài)變量,只需要賦值1次,即可保存初始值,不需要每次調(diào)用時(shí)都賦初始值。2、有以下程序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)));首先計(jì)算最內(nèi)層的函數(shù)調(diào)用f(n),執(zhí)行f函數(shù),得到返回值2,然后計(jì)算f(2),得到返回值為4,最后計(jì)算f(4),得到計(jì)算結(jié)果為8。3、有以下程序#include<stdio.h>intfun(intx,inty){if(x==y)return(x);elsereturn((x+y)/2);}main(){inta=4,b=5,c=6;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、有以下程序#include<stdio.h>intf(intx,inty){return((y-x)*x);}main(){inta=3,b=4,c=5,d;d=f(f(a,b),f(a,c));printf("%\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、有以下程序#include<stdio.h>doublef(doublex);main(){doublea=0;inti;for(i=0;i<30;i+=10)a+=f(double)i);Drintf("%5.0fkn",a);}doublef(doublex){returnx*x+1;}程序運(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語言中,函數(shù)的實(shí)參單元與形參單元在內(nèi)存中分配不同的存儲(chǔ)單元。在調(diào)用函數(shù)時(shí),給形參分配臨時(shí)存儲(chǔ)單元,并將實(shí)參對(duì)應(yīng)的值傳遞給形參,在被調(diào)用函數(shù)中對(duì)形參存儲(chǔ)單元中的值進(jìn)行運(yùn)算,最后通過return語句把函數(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);pfintf("%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是沒有影響的,因此主函數(shù)中a,b,c的值經(jīng)過劬調(diào)用以后,值沒有變化。8、有以下程序#include<stdio.h>intf(intx);main(){inta,b=0;for(a=0;a<3;a++){b=b+f(a);putchar(’A’+b);}}intf(intx){returnx*x+1;}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。9、若有以下程序voidflintx){if(x>=10)f(z);}{printf("%d-",x%10);f(x/10);}main(){int}z=123456;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。10、以下與函數(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ù)將文件指針重新指向文件開始。題目當(dāng)中fseek(fp,OL,SEEK_SET)表示把文件指針移動(dòng)到文件的開始位置0,和rewind函數(shù)功能一致。11、以下程序的功能是:給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、注釋語句書寫位置錯(cuò)誤B、存放圓半徑的變量r不應(yīng)該定義為整型C、輸出語句中格式描述非法D、計(jì)算圓面積的賦值語句使用了非法變量標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查了C語言的基本輸入輸出函數(shù)。選項(xiàng)A)錯(cuò)誤,代碼里面的注釋是正確的,“/*”和“*/”配對(duì);選項(xiàng)B)錯(cuò)誤,r變量定義為整型是可以的;選項(xiàng)C)輸出語句格式正確;選項(xiàng)D)正確,計(jì)算s的時(shí)候s=*π*r*r使用了未定義變量π。12、以下程序函數(shù)f的功能是:當(dāng)flag為1時(shí),進(jìn)行由小到大排序;當(dāng)flag為0時(shí),進(jìn)行由大到小排序voidf(intb[],intn,intflag){intid,t;for(i=0;i<n=1;i++)for(j=i+1;j<n;j++)if(flag?b[i]>b[i]:b[i]<b[j]){t=b[i];b[i]=b[i];b[i]=t;}}main(){inta[10]={5,4,3,2,1,6,7,8,9,10},i;1j[&a[2],5,0);f(a,5,1);for(i=0;i<10;i++)printf("%d,",a[i]);}程序運(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è)元素開始對(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。13、有以下程序,其中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。14、有以下程序#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ù)劬的主要功能是:初值x的值為9,因此fim(9)=9-fun(7)=9-(7-(5-(3-3))),因此答案為7。15、有以下程序#include<stdio.h>intfun(intn){inta;if(n==1)return1;a=n+fun(n-1);return(a);}main(){printf("%d\n",fun(5));}程序的輸出結(jié)果是A、14B、10C、15D、9標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:函數(shù)fhn為遞歸定義的函數(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。16、有以下程序#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。17、以下選項(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語言中形參數(shù)組是指針變量,其數(shù)組中元素的個(gè)數(shù)由傳遞的實(shí)參數(shù)組決定,因此可以在定義的時(shí)候,不給出元素個(gè)數(shù)的說明,因此選項(xiàng)B)和D)形參均為指針變量,選項(xiàng)A)的定義在C語言中不存在的。18、設(shè)有如下函數(shù)定義intfun(intk){if(k<1)return0;elseif(k==1)return1;elsereturnfun(k-1)+1;}若執(zhí)行調(diào)用語句:n=fun(3);,則函數(shù)fun總共被調(diào)用的次數(shù)是A、2B、4C、3D、5標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:這道題目考查了函數(shù)的遞歸調(diào)用,當(dāng)執(zhí)行調(diào)用語句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),ftm(2),fun(1)。19、有以下程序#include<stdio.h>intflint{inty;if(x==0||x==1)return(3);y=xx-f(x-2);returny:}main(){intz;z=f(3);printf("%d\n",z);}程序的運(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條件語句的判斷不成立,接著執(zhí)行y=3+3*3-f(1),再執(zhí)行f(1),而f(1)滿足if條件語句,所以f(1)的值為3,代入y=3*3-f(1)=9-3=6。20、有以下程序(strcat函數(shù)用以連接兩個(gè)字符串)#include<stdio.h>#include<string.h>main(){chara[201="ABCD\OEFG\0",b[]="IJK";strcat(a,b);printf("%s\n",a);}程序運(yùn)行后的輸出結(jié)果是A、ABCDE\0FG\0IJKB、ABCDIJKC、IJKD、EFGIJK標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:在字符串中字符’\0’示字符串的結(jié)束標(biāo)志,所以字符串a(chǎn)和b.相連接的結(jié)果為ABCDIJK。21、有以下程序intfun(intn){if(n==1)return1;Elsereturn(n+fun(n-1));}main(){intx;scanf("%d",&x);x=fun(x);printf("%d\n",x);}執(zhí)行程序時(shí),給變量x輸入10,程序的輸出結(jié)果是A、54B、65C、45D、55標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:在C語言中函數(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)用的過程為: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=5522、有以下程序fun(intx){intp;if(x==0||x==1)return(3);p=x-fun(x-2);returnp;}main(){printf("%d\n",fun(7));}執(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í)候,其過程為:“fun(7)=7-fun(5)=7-(5-fun(3))=7-(5-(3-fun(1)))=7-(5-(3-3))=7-5=2”,所以最后的輸出結(jié)果為2。23、若有以下程序intflinta[],intn){if(n>1){intt;t=f(a,n-1);returnt>a[n-1]?t:a[n-1];)elsereturna[0];}main(){inta[]={8,2,9,1,3,6,4,7,5};printf("%d\n",f(a,9));}則程序的輸出結(jié)果是A、9B、1C、8D、5標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:主函數(shù)中調(diào)用f(a,9),遞歸函數(shù)的調(diào)用過程如下: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,遞歸過程開始回歸,回歸過程描述如下:8>a[1],返回8->8>a[2]不成立,返回a[2]的值為9……因此函數(shù)f的主要功能為計(jì)算數(shù)組中的最大值。主函數(shù)中輸出最大值為9。24、在一個(gè)C源程序中所定義的全局變量,其作用域?yàn)锳、所在文件的全部范圍B、所在程序的全部范圍C、所在函數(shù)的全部范圍D、由具體定義位置和extern說明來決定范圍標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查C語言的作用域規(guī)則。在C語言中,全局變量的有效范圍從定義變量的位置開始到本源文件結(jié)束。如果需要在其他源文件中使用該全局變量,則可以在其他源文件中使用extem關(guān)鍵字來聲明該全局變量,這樣該全局變量的作用域就被擴(kuò)展到以extem聲明了該全局變量的位置開始到此源文件結(jié)束。25、以下敘述中正確的是A、只有全局變量才有自己的作用域,函數(shù)中的局部變量沒有作用域B、只要是用戶定義的標(biāo)識(shí)符,都有一個(gè)有效的作用域C、只有在函數(shù)內(nèi)部定義的變量才是局部變量D、局部變量不能被說明為static標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:在函數(shù)內(nèi)定義的變量是局部變量,而在函數(shù)之外定義的變量稱為外部變量,也是全局變量。全局變量可以為源文件中其他函數(shù)所共用,其作用域?yàn)閺亩x變量的位置開始到源文件結(jié)束。因此只要用戶定義的標(biāo)識(shí)符,全部都有作用域。局部變量可以說明為auto、register以及static。26、以下敘述中正確的是A、對(duì)于變量而言,“定義”和“說明”這兩個(gè)詞實(shí)際上是同一個(gè)意思B、在復(fù)合語句中不能定義變量C、全局變量的存儲(chǔ)類別可以是靜態(tài)類D、函數(shù)的形式參數(shù)不屬于局部變量標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:用static說明符說明全局變量時(shí),此變量可稱作靜態(tài)全局變量。靜態(tài)全局變量只限于本編譯單位使用,不能被其他編譯單位所引用。在一個(gè)函數(shù)內(nèi)部定義的變量(包括形參)是局部變量,它只在本函數(shù)范圍內(nèi)有效。不同函數(shù)中可以使用相同名字的局部變量,它們代表不同的對(duì)象,互不影響。在函數(shù)內(nèi)部復(fù)合語句中也可以定義變量,這些變量都是局部變量,只在本復(fù)合語句中有效。27、有以下程序intd=1;voidfun(intp){intd=5;d+=p++;printf("%d",d);’}main(){inta=3;fun(a);d+=a++;printf("%d\n",d);}程序的輸出結(jié)果是A、96B、94C、84D、85標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:代碼考查點(diǎn)為全局變量和局部變量的同名問題,若全局變量和某個(gè)函數(shù)中的局部變量同名,則在該函數(shù)中,此全局變量被屏蔽,在該函數(shù)內(nèi),訪問的是局部變量,與同名的全局變量不發(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í)行語句以后,d值為4。國家二級(jí)C語言(函數(shù)和數(shù)組)機(jī)試模擬試卷第3套一、選擇題(本題共28題,每題1.0分,共28分。)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的值為“a2yz”。2、若各選項(xiàng)中所用變量己正確定義,函數(shù)fun中通過return語句返回一個(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語言規(guī)定,函數(shù)必須先定義,后調(diào)用(函數(shù)的返回值類型為int或chaz。時(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)用庫函數(shù)B、不同函數(shù)的形式參數(shù)不能使用相同名稱的標(biāo)識(shí)符C、在C語言的函數(shù)內(nèi)部,可以定義局部嵌套函數(shù)D、實(shí)用的C語言源程序總是由一個(gè)或多個(gè)函數(shù)組成標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:一個(gè)C語言源程序可以由一個(gè)或多個(gè)源文件組成,每個(gè)源文件可由一個(gè)或多個(gè)函數(shù)組成,這些函數(shù)可以是自定義函數(shù),也可以是庫函數(shù),各個(gè)函數(shù)之間沒有主從關(guān)系,不能嵌套定義函數(shù)。4、若有定義語句:chars[10]="1234567\0\0";則strlen(s)的值是A、8B、7C、9D、10標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:字符串長度函數(shù)strlen(s)表示計(jì)算出以s為起始地址的字符串的長度,并作為函數(shù)值返回。這個(gè)長度值不包括串尾的結(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[]連接起來,此時(shí)字符數(shù)組p[]的有效字符長度為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[]的有效字符長度為6。6、若有定義語句:char*s1="OK",*s2="ok";以下選項(xiàng)中,能夠輸出"OK"的語句是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ì)于本題來說,能夠輸出“OK”的語句是選項(xiàng)A)所指的語句。7、有以下程序,程序中庫函數(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、若有以下定義和語句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)義字符的問題,在字符串s2中,有兩個(gè)轉(zhuǎn)義字符,分別是回車換行符和反斜線。所以其字符串長度等于5。9、有以下程序#include<stdio-h>intfun(inta,intb){if(b==0)returna;elsereturn(fun(--a,--b));}main(){printf("%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í)行過程如下:fun(4,2)->fun(3,1)->fun(2,0),其返回值為2。10、下列選項(xiàng)中,能夠滿足“只要字符串s1等于字符串s2,則執(zhí)行ST”要求的是A、if(s1==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語言中要對(duì)兩個(gè)字符串的大小進(jìn)行比較,就需要調(diào)用字符串比較函數(shù)strcmp(),如果這個(gè)函數(shù)的返回值等于0,說明兩個(gè)字符串相等。11、若有以下說明和定義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)合的長度等于長度最長成員的長度,在data中,成員c是double類型,長度為8個(gè)字節(jié)最長,因此data所占用字節(jié)數(shù)和成員c長度一致。選項(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語言中不能在函數(shù)內(nèi)部定義函數(shù)。13、在C語言中,函數(shù)返回值的類型最終取決于A、函數(shù)定義時(shí)在函數(shù)首部所說明的函數(shù)類型B、return語句中表達(dá)式值的類型C、調(diào)用函數(shù)時(shí)主調(diào)函數(shù)所傳遞的實(shí)參類型D、函數(shù)定義時(shí)形參的類型標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:C語言中函數(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)沒有g(shù)etc函數(shù)。15、avg函數(shù)的功能是求整型數(shù)組中的前若干個(gè)元素的平均值,設(shè)數(shù)組元素個(gè)數(shù)最多不超過10,則下列函數(shù)說明語句錯(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ù)體中的語句不能出現(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ù)的指針變量來獲得該函數(shù)的入口地址,因此選項(xiàng)B)錯(cuò)誤的,在C語言中允許進(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)用不需要額外開銷,所以效率很高D、簡單遞歸不需要明確的結(jié)束遞歸的條件標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:一個(gè)C語言源程序可以由一個(gè)或多個(gè)源文件組成,每個(gè)源文件可由一個(gè)或多個(gè)函數(shù)組成,各函數(shù)之間是平行的,除了主函數(shù)外,函數(shù)之間可以相互調(diào)用,甚至C語言中的函數(shù)可以直接或間接地自己調(diào)用自己,稱之為遞歸調(diào)用,該調(diào)用主要用于把要解決的問題轉(zhuǎn)化為一個(gè)新的問題,而這個(gè)新問題的解決方法仍與原來的解法相同,只是所處理的對(duì)象有規(guī)律地遞增或遞減,可以應(yīng)用這個(gè)轉(zhuǎ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語句的敘述中正確的是A、一個(gè)自定義函數(shù)中必須有一條return語句B、一個(gè)自定義函數(shù)中可以根據(jù)不同情況設(shè)置多條return語句C、定義成void類型的函數(shù)中可以有帶返回值的return語句D、沒有return語句的自定義函數(shù)在執(zhí)行結(jié)束時(shí)不能返回到調(diào)用處標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:return語句主要用于返回函數(shù)的值。在一個(gè)自定義函數(shù)中,可以根據(jù)不同的情況設(shè)置多條return語句返回函數(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ù)中可以沒有return語句B、用戶定義的函數(shù)中若沒有return語句,則應(yīng)當(dāng)定義函數(shù)為void類型C、用戶定義的函數(shù)中可以有多個(gè)return語句,以便可以調(diào)用一次返回多個(gè)函數(shù)值D、函數(shù)的return語句中可以沒有表達(dá)式標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:函數(shù)值通過return語句返回,return語句的形式如下:return表達(dá)式或return(表達(dá)式):當(dāng)程序執(zhí)行到return語句時(shí),程序的流程就返回到調(diào)用該函數(shù)的地方,并帶回函數(shù)值。在同一函數(shù)內(nèi),可以根據(jù)需要,在多處出現(xiàn)return語句,在函數(shù)體的不同部位退出函數(shù)。無論函數(shù)體中有多少個(gè)return語句,return語句只可能執(zhí)行一次,返回一個(gè)函數(shù)值。return語句中也可以不含有表達(dá)式,這時(shí)必須定義函數(shù)為void類型,它的作用只是使流程返回到調(diào)用函數(shù),并沒有確定的函數(shù)值。函數(shù)體內(nèi)可以沒有return語句,這時(shí)也必須定義函數(shù)為void類型,程序的流程就一直執(zhí)行到函數(shù)末尾的“}”,然后返回調(diào)用函數(shù),也沒有確定的函數(shù)值帶回。21、以下敘述中錯(cuò)誤的是A、函數(shù)調(diào)用可以作為一個(gè)獨(dú)立的語句存在B、函數(shù)形參的值也可以傳回給對(duì)應(yīng)的實(shí)參C、若函數(shù)有返回值,必須通過return語句返回D、C程序必須由一個(gè)或一個(gè)以上的函數(shù)組成標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:一個(gè)C程序中可以包含任意多個(gè)不同名的函數(shù),但只能有一個(gè)主函數(shù)。一個(gè)C程序總是從主函數(shù)開始執(zhí)行。函數(shù)的值通過return語句返回,return語句中的表達(dá)式的值就是所求的函數(shù)值。在C語言中,數(shù)據(jù)只能從實(shí)參單向傳遞給形參,稱為“按值”傳遞。也即是說,當(dāng)簡單變量作為實(shí)參時(shí),用戶不可能在函數(shù)中改變對(duì)應(yīng)實(shí)參的值。22、在函數(shù)調(diào)用過程中,如果函數(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語言中不允許這樣的遞歸調(diào)用標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題考查遞歸的概念,C語言中函數(shù)可以直接或間接調(diào)用自身,稱為遞歸調(diào)用。本題中funA調(diào)用funB,然后funB又調(diào)用funA,即funA間接調(diào)用了自身。23、程序中對(duì)fun函數(shù)有如下說明voidfun();此說明的含義是A、fun函數(shù)無返回值B、fun函數(shù)的返回值可以是任意的數(shù)據(jù)類型C、fun函數(shù)的返回值是無值型的指針類型D、指針fun指向一個(gè)函數(shù),該函數(shù)無返回值標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題主要考察函數(shù)的聲明,voidfun()表示fun函數(shù)沒有輸入?yún)?shù),函數(shù)返回void表示函數(shù)無返回值。24、程序中若有如下說明和定義語句charfun(char*);main(){char*s="one",a[5]={0},(*f1)()==fun,ch;……}以下選項(xiàng)中對(duì)函數(shù)fun的正確調(diào)用語句是A、(*f1)(a);B、*f1(*s);C、fun(a);D、ch=*f1(s);標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題主要考查函數(shù)調(diào)用和函數(shù)指針的使用。根據(jù)定義f1是一個(gè)函數(shù)指針,且指向fun函數(shù),因此可以使用函數(shù)指針來調(diào)用函數(shù)。使用函數(shù)指針調(diào)用函數(shù)的時(shí)候使用*運(yùn)算符,即*f1和fun是一樣的,劬函數(shù)有參數(shù),通過f1調(diào)用fun函數(shù)寫法為:(*f1)(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){return(a+b);}main(){intk,(*f)(),*5,b=10;f=add;……}則以下函數(shù)調(diào)用語句錯(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)解析:在語句“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ù)字開頭D、在函數(shù)體中只能出現(xiàn)一次return語句標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:在標(biāo)準(zhǔn)C中,函數(shù)的定義形式為:函數(shù)返回值的類型名函數(shù)名(類型名形式參數(shù)1,類型名形式參數(shù)2,…){說明部分語句部分}需要說明的是函數(shù)名和形式參數(shù)都是由用戶命名的標(biāo)識(shí)符,在同一程序中,函數(shù)名必須惟一,形式參數(shù)名只要在同一函數(shù)中惟一即可,與其他函數(shù)中的變量可以同名。return語句的作用是返回函數(shù)的值,在函數(shù)中可以出現(xiàn)多個(gè)或者沒有。28、若有以下函數(shù)首部intfun(doublex[10],intn)則下面針對(duì)此函數(shù)的函數(shù)聲明語句中正確的是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ù)說明的一般形式為:類型名函數(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ù)組的地址。國家二級(jí)C語言(函數(shù)和數(shù)組)機(jī)試模擬試卷第4套一、選擇題(本題共30題,每題1.0分,共30分。)1、有以下程序#include<stdio.h>inta=1;b=2;voidfun1(inta,intb){printf("%d%d",a,b);}voidfun2(){a=3;b=4;}main(){funl(5,6);fun2();printf("%d%d\n",a,b);}程序運(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。2、在一個(gè)C源程序文件中所定義的全局變量,其作用域?yàn)锳、由具體定義位置和extem說明來決定范圍B、所在程序的全部范圍C、所在函數(shù)的全部范圍D、所在文件的全部范圍標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:全局變量是在函數(shù)外部任意位置上定義的變量,它的作用域是從變量定義的位置開始,到整個(gè)源文件結(jié)束止。在同一編譯單位內(nèi)用extern說明符擴(kuò)展全局變量的作用域(當(dāng)全局變量定義在后,引用它的函數(shù)在前時(shí),應(yīng)該在引用它的函數(shù)中用extern對(duì)此全局變量進(jìn)行說明,以便通知編譯程序:該變量是一個(gè)已在外部定義了的全局變量,已經(jīng)分配了存儲(chǔ)單元,不需要再為它分配存儲(chǔ)單元。這時(shí)全局變量的作用域從extern說明處起,延伸到該函數(shù)末尾)。當(dāng)一個(gè)程序由多個(gè)編譯單位構(gòu)成,并且在每個(gè)文件中均需要引用同一個(gè)全局變量,這時(shí)只在其中一個(gè)文件中定義所有的全局變量,而在其他用到這些全局變量的文件中用extern對(duì)這些變量進(jìn)行說明。3、有以下程序voidfun2(chara,charb){printf("%c%c",a,b);}chara---’A’,b=’B’;voidfun1(){a=’C’:b=’D’;}main(){fun1();printf("%c%c",a,b);fun2(’E’,’F’);}程序的運(yùn)行結(jié)果是A、ABEFB、CDEFC、ABCDD、CDAB標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:在funl()函數(shù)之前定義了全局字符變量a和b。這兩個(gè)變量的作用域是從其定義處到整個(gè)程序結(jié)束。在fun1()函數(shù)之內(nèi)定義了兩個(gè)變量a和b,并且分別初始化為字符’C’和’D’。在C語言中,若全局變量和某個(gè)函數(shù)中的局部變量同名,則在該函數(shù)中此全局變量被屏蔽,在該函數(shù)內(nèi)訪問的是局部變量,與同名的全局變量不發(fā)生任何關(guān)系。所以在主函數(shù)中,執(zhí)行fun1()后,變量a、b的值分別等于’C’、’D’,打印輸出CD,接著執(zhí)行fun2(’E’,’F’)語句,變量a、b的值變?yōu)椤疎’、’F’并輸出。4、有以下稗序#include<stdio.h>fun(inta,intb){intstaticm=0,i=2;main(){intk=4,m=1,p;p=fun(k,m);i=i+m+1;m=i+a+b;returnm;}printf("%d,",p);P=fun(k,m);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)變量以及局部變量的同名問題。主函數(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。5、有以卞程序#include<stdio.h>func(intn){staticintnum=1;num=num+n;printf("%d",num);}voidmain(){func(3);func(4);printf("\n");}程序運(yùn)行后的輸出是A、45B、35C、48D、34標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:在函數(shù)func(intn)中定義了局部靜態(tài)變量num,,其初始值等于1,所以在主函數(shù)中執(zhí)行func(3),輸出4,此時(shí)靜態(tài)變量num的值等于4,當(dāng)退出函數(shù)func(3)時(shí),其值不會(huì)丟失,所以當(dāng)在執(zhí)行func(4)時(shí),輸出8。6、有以下程序fun(intx,inty){staticintm=0,i=2;i+=m+1;m=i+x+y;returnm;}main(){intj=1,m=1,k;k=fun(j,m);printf("%d,",k);k=fun(j,m);printf("%d\n",k);}執(zhí)行后的輸出結(jié)果是A、5,5B、5,11C、11,11D、11,5標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:子函數(shù)fun(intx,inty),將變量m和i聲明為局部靜態(tài)變量,因此第1次調(diào)用主函數(shù)后,局部靜態(tài)變量m和i的值為5和3,第1次函數(shù)調(diào)用結(jié)束時(shí),它們的值不釋放保持不變,所以第2次調(diào)用時(shí),局部靜態(tài)變量m和i的初始值分別為5和3,即在執(zhí)行“i+=m+1”時(shí),i的值為9,因此最終m的值為11。7、在C語言中,只有在使用時(shí)才占用內(nèi)存單元的變量,其存儲(chǔ)類型是A、extrn和registerB、auto和staticC、static和registerD、auto和register標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:在C語言中,動(dòng)態(tài)變量(auto)存儲(chǔ)在內(nèi)存中的動(dòng)態(tài)存儲(chǔ)區(qū),在程序運(yùn)行中,只有當(dāng)調(diào)用變量所在的函數(shù)時(shí),系統(tǒng)才臨時(shí)給變量分配內(nèi)存單元;全局變量(extern)一經(jīng)定義,系統(tǒng)為其分配固定的內(nèi)存單元:靜態(tài)變量(static),編譯系統(tǒng)為其分配固定的存儲(chǔ)空間;寄存器變量(register)不保存在內(nèi)存上,而是直接存儲(chǔ)在CPU的寄存器中。8、有以下程序#include<stdio.h>intfun(){staticintx=1;x*=2;returnx;}main(){inti,s=1;for(i=1;i<:3;i++)s*=fun();printf("%d\n",s);}程序運(yùn)行后的輸出結(jié)果是A、0B、10C、30D、64標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查了靜態(tài)局部變量,該局部變量的值在函數(shù)調(diào)用結(jié)束后如果不消失而保留原值。函數(shù)fun的功能返回2的乘方,主函數(shù)fun函數(shù)調(diào)用3次,因此第一次s累乘2,第二次累乘4,第三次累乘8,即為2*4*8,值為64。9、有以下程序#include<stdio.h>intf(intn):main(){inta=3,s;s=f(a);s=s+f(a);pfintf("%d\n",s);}intf(intn){staticinta=1;n+=a++;returnn;}程序運(yùn)行后的輸出結(jié)果是A、9B、8C、7D、10標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:在主函數(shù)中第一次調(diào)用f(a)時(shí),得到變量s的值等于4,在第二次調(diào)用f(a)時(shí),在子函數(shù)f中由于變量a是一個(gè)局部靜態(tài)變量,所以這次其值等于2,因而在主函數(shù)中第二次調(diào)用f(a)后,其返回值等于5,最后變量s的值等于9。10、有以下程序#include<stdio.h>intfun(){staticintx=1;x+=1;retu
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國禮儀課件教學(xué)課件
- 開學(xué)課件模板教學(xué)課件
- 灌腸護(hù)理課件教學(xué)課件
- 2024年農(nóng)用搬運(yùn)機(jī)械項(xiàng)目資金籌措計(jì)劃書代可行性研究報(bào)告
- 精神病醫(yī)院藥劑科相關(guān)
- 3.2.3酸堿中和滴定 課件高二上學(xué)期化學(xué)人教版(2019)選擇性必修1
- DB1304T 480-2024商品煤采樣技術(shù)規(guī)范
- 社團(tuán)的活動(dòng)部部門介紹
- 靜脈輸液治療在臨床中的應(yīng)用
- 白血病飲食宣教
- 教育研究方法觀察設(shè)計(jì)案例
- (2024年)消防安全主題班會(huì)
- 工程量清單及招標(biāo)控制價(jià)編制服務(wù)采購服務(wù)方案
- 導(dǎo)游業(yè)務(wù)復(fù)習(xí)題庫
- 做情緒的主人拒絕精神內(nèi)耗
- 藥學(xué)大學(xué)生職業(yè)規(guī)劃
- 心理放松訓(xùn)練
- 客戶需求及層次
- 海綿城市完整
- 力敏傳感器教學(xué)課件
- 強(qiáng)奸罪起訴狀
評(píng)論
0/150
提交評(píng)論