國家二級C語言(函數(shù)和數(shù)組)機(jī)試模擬試卷2(共228題)_第1頁
國家二級C語言(函數(shù)和數(shù)組)機(jī)試模擬試卷2(共228題)_第2頁
國家二級C語言(函數(shù)和數(shù)組)機(jī)試模擬試卷2(共228題)_第3頁
國家二級C語言(函數(shù)和數(shù)組)機(jī)試模擬試卷2(共228題)_第4頁
國家二級C語言(函數(shù)和數(shù)組)機(jī)試模擬試卷2(共228題)_第5頁
已閱讀5頁,還剩60頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

國家二級C語言(函數(shù)和數(shù)組)機(jī)試模擬試卷2(共8套)(共228題)國家二級C語言(函數(shù)和數(shù)組)機(jī)試模擬試卷第1套一、選擇題(本題共28題,每題1.0分,共28分。)1、以下敘述中正確的是A、用戶自己定義的函數(shù)只能調(diào)用庫函數(shù)B、不同函數(shù)的形式參數(shù)不能使用相同名稱的標(biāo)識符C、在C語言的函數(shù)內(nèi)部,可以定義局部嵌套函數(shù)D、實用的C語言源程序總是由一個或多個函數(shù)組成標(biāo)準(zhǔn)答案:D知識點解析:一個C語言源程序可以由一個或多個源文件組成,每個源文件可由一個或多個函數(shù)組成,這些函數(shù)可以是自定義函數(shù),也可以是庫函數(shù),各個函數(shù)之間沒有主從關(guān)系,不能嵌套定義函數(shù)。2、若有以下定義和語句chars1[10]="abcd!",*s2="\n123\\";printf("%d%d\n",strlen(s1),strlen(s2));則輸出結(jié)果是A、105B、107C、55D、58標(biāo)準(zhǔn)答案:C知識點解析:本題要注意的是轉(zhuǎn)義字符的問題,在字符串s2中,有兩個轉(zhuǎn)義字符,分別是回車換行符和反斜線。所以其字符串長度等于5。3、在C語言中,函數(shù)返回值的類型最終取決于A、函數(shù)定義時在函數(shù)首部所說明的函數(shù)類型B、retum語句中表達(dá)式值的類型C、調(diào)用函數(shù)時主調(diào)函數(shù)所傳遞的實參類型D、函數(shù)定義時形參的類型標(biāo)準(zhǔn)答案:A知識點解析:C語言中函數(shù)的返回值類型是由定義函數(shù)時在函數(shù)首部所聲明的類型確定的。4、以下關(guān)于return語句的敘述中正確的是A、一個自定義函數(shù)中必須有一條return語句B、一個自定義函數(shù)中可以根據(jù)不同情況設(shè)置多條return語句C、定義成void類型的函數(shù)中可以有帶返回值的retum語句D、沒有return語句的自定義函數(shù)在執(zhí)行結(jié)束時不能返回到調(diào)用處標(biāo)準(zhǔn)答案:B知識點解析:return語句主要用于返回函數(shù)的值。在一個自定義函數(shù)中,可以根據(jù)不同的情況設(shè)置多條return語句返回函數(shù)的值。5、程序中對fun函數(shù)有如下說明voidfun();此說明的含義是A、fun函數(shù)無返回值B、fun函數(shù)的返同值可以是任意的數(shù)據(jù)類型C、fun函數(shù)的返回值是無值型的指針類型D、指針fun指向一個函數(shù),該函數(shù)無返回值標(biāo)準(zhǔn)答案:A知識點解析:本題主要考察函數(shù)的聲明,voidfun()表示fun函數(shù)沒有輸入?yún)?shù),函數(shù)返回void表示函數(shù)無返回值。6、若有以下函數(shù)首部intfun(doublex[10],int*n)則下面針對此函數(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ù)說明的一般形式為:類型名函數(shù)名(參數(shù)類型1.參數(shù)類型2,……)。因為函數(shù)intfun(doublex[10],int*n)的第1個形式參數(shù)是一個雙精度型的一維數(shù)組,第2個參數(shù)是一個整型指針。并返回一個整型值。一維數(shù)組的名寧表示的足維數(shù)組的地址。7、有以下程序#include<stdio.h>doublef(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ù)f的作用是對形參x求平方再加1,所以在主函數(shù)中,循環(huán)第一次執(zhí)行后變量a的值等于1,第二次執(zhí)行后,變量a的值等于102,第三次執(zhí)行后,變量a的值等于503。8、以下與函數(shù)fseek(fp,OL,SEEK_SET)有相同作用的是A、feof(fp)B、ftell(fp)C、fgetc(fp)D、rewind(fp)標(biāo)準(zhǔn)答案:D知識點解析:本題主要考查文件系IO函數(shù)的使用,fseek函數(shù)用于設(shè)置文件指針的位置,feof函數(shù)用于判斷是否已經(jīng)到了文件結(jié)束,ftell函數(shù)返回文件指針的當(dāng)前位置,fgetc從文件讀取一個字符,rewind函數(shù)將文件指針重新指向文件開始。題目當(dāng)中fseek(fp,OL,SEEK_SET)表示把文件指針移動到文件的開始位置0,和rcwind函數(shù)功能一致。9、有以下程序#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ù)fun為遞歸定義的函數(shù),當(dāng)調(diào)用fun(5)→5+fun(4)→5+4+fun(3)→5+4+3+fIun(2)→5+4+3+2+fun(1)。因此最后的結(jié)果為15。10、有以下程序(strcat函數(shù)用以連接兩個字符串)#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\0FG\0IJKB、ABCDIJKC、IJKD、EFGIJK標(biāo)準(zhǔn)答案:B知識點解析:在字符串中字符’\0’表示字符串的結(jié)束標(biāo)志,所以字符串a(chǎn)和b相連接的結(jié)果為ABCDUK。11、以下敘述中正確的是A、只有全局變量才有自己的作用域,函數(shù)中的局部變量沒有作用域B、只要是用戶定義的標(biāo)識符,都有一個有效的作用域C、只有在函數(shù)內(nèi)部定義的變量才是局部變量D、局部變量不能被說明為static標(biāo)準(zhǔn)答案:B知識點解析:在函數(shù)內(nèi)定義的變量是局部變量,而在函數(shù)之外定義的變量稱為外部變量,也是全局變量。全局變量可以為源文件中其他函數(shù)所共用,其作用域為從定義變量的位置開始到源文件結(jié)束。因此只要用戶定義的標(biāo)識符,全部都有作用域。局部變量可以說明為auto、register以及static。12、有以下程序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知識點解析:在fun1()函數(shù)之前定義了全局字符變量a和b。這兩個變量的作用域是從其定義處到整個程序結(jié)束。在fun1()函數(shù)之內(nèi)定義了兩個變量a和b,并且分別初始化為字符’C’和’D’。在C語言中,若全局變量和某個函數(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’并輸出。13、有以下程序#include<stdio.h>main(){inti,s=1;intfun(){staticintx=1;for(i=1;i<=3;i++)x*=2;s*=fun();returnx;}printf("%d\n",s);}程序運(yùn)行后的輸出結(jié)果是A、0B、10C、30D、64標(biāo)準(zhǔn)答案:D知識點解析:本題考查了靜態(tài)局部變量,該局部變量的值在函數(shù)調(diào)用結(jié)束后如果不消失而保留原值。函數(shù)fun的功能返回2的乘方,主函數(shù)fun函數(shù)調(diào)用3次,因此第一次s累乘2,第二次累乘4,第三次累乘8,即為2*4*8,值為64。14、有以下程序#include<stdio.h>main()intfun(){inti,s=1;{staticintx=1;for(i=1;i<=2;i++)s=fun();x*=2;returnx;}printf("%d\n",s);}程序運(yùn)行后的輸出結(jié)果是A、4B、1C、0D、8標(biāo)準(zhǔn)答案:A知識點解析:在子函數(shù)fun(中)定義局部靜態(tài)變量x,其初值等于1,然后再把其值擴(kuò)大1倍后返回。在主函數(shù)中執(zhí)行for循環(huán)語句2次,調(diào)用函數(shù)fun()兩次,所以變量s的值等于4。這里要強(qiáng)調(diào)的一點是當(dāng)函數(shù)。fun()執(zhí)行完畢后,局部靜態(tài)變量x的值不會丟失,仍然有效。15、若有定義語句:doublex[5]={1.0,2.0,3.0,4.0,5.0},*p=x;則錯誤引用x數(shù)組元素的是A、*pB、x[5]C、*(p+1)D、*x標(biāo)準(zhǔn)答案:B知識點解析:本題考查數(shù)組和指向數(shù)組的指針。x是一個二維double類型的數(shù)組,長度為5,下標(biāo)范圍是0-4,指針p指向數(shù)組x。選項A)中*p是取數(shù)組首元素x[0]的值:選項B)下標(biāo)超出范圍:選項C),p+1表示x[1]的地址,因此*(p+1)是取x[1]元素值;選項D)中,數(shù)組名x本身代表數(shù)組的首地址,因此*x表示取元素x[0]的值。16、有以下程序#include<stdioh>voidmain(){Inta□={2,3,5,4),i;for(i=0;i<4;i++)switch(i%2){case0:switch(a[i]%2){case0:a[i]++;break;case1:a[i]--;}break;case1:a[i]=0;]for(i=0;i<4;i++)printf("%d",a[i]);printf("\n");}程序運(yùn)行后的輸出結(jié)果是A、2050B、3344C、3040D、0304標(biāo)準(zhǔn)答案:C知識點解析:在主函數(shù)的for循環(huán)語句中,當(dāng)循環(huán)變量i的值等于0,2時,執(zhí)行switch中的case0語句,分別對數(shù)組元素a[0]和a[2]加1和減1,所以a[0]的值等于3,a[2]等于4。當(dāng)循環(huán)變量i的值等于1,3時,執(zhí)行switch中的case1語句,把數(shù)組元素a[1]和a[3]的值賦為0。所以輸出數(shù)組a的元素,其結(jié)果為3040。17、下列程序中函數(shù)f的功能是:當(dāng)flag為1時,進(jìn)行由小到大排序;當(dāng)flag為0時,進(jìn)行由大到小排序voidflintb[],intn,intflag)main(){inti,j,t;{inta[10]={5,4,3,2,1,6,7,8,9,10},i;for(i=0;i<n-1;i++)f(&a[2],5,0);for(j=i+1;j<n;j++)f(a,5,1);if(flag?b[i]>b[j];b[i]<b[j])for(i=0;i<10;i++){t=b[i];b[i];b[j];b[j]=t;}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ù)中進(jìn)行了兩次f函數(shù)的調(diào)用。第一次傳遞給形參數(shù)組b的地址為元素a[2]的地址,n接收數(shù)據(jù)位5,因此數(shù)組b中元素為3,2,1,6.7.此時flag的值為0,進(jìn)行由大到小排序,而數(shù)組b和實參數(shù)組a共用一段存儲空間,第一次調(diào)用結(jié)束以后,數(shù)組a的值為5,4,7,6,3,2.1,8,9,10。第二次調(diào)用f函數(shù),形參數(shù)組接收實參數(shù)組a的首地址,取5個元素,由小到大排序,調(diào)用結(jié)束以后,數(shù)組a的值為3,4,5,6,7,2,1,8,9,10。18、以下敘述中正確的是A、語句inta[]={0};是不合法的,遺漏了數(shù)組的大小B、語句chara[2]t={"A","B"};是合法的,定義了一個包含兩個字符的數(shù)組C、語句inta[8]={0};是合法的D、語句chara[3];a="AB";是合法的,因為數(shù)組有三個字符空間的容量,可以保存兩個字符標(biāo)準(zhǔn)答案:C知識點解析:當(dāng)系統(tǒng)為所定義的數(shù)組在內(nèi)存中開辟一串連續(xù)的存儲單元時,這些存儲單元中并沒有確定的值,可以在定義語句中為所定義數(shù)組的各個元素賦初值。數(shù)組初始化賦值是指在數(shù)組定義時給數(shù)組元素賦予初值。初始化賦值的一般形式為:類型說明符數(shù)組名[常量表達(dá)式]={值,值,…,值},…;。需要注意的是當(dāng)所賦初值多于所定義數(shù)組的元素個數(shù)時,在編譯時將給出出錯信息,在指定初值時,第一個初值必定賦給下標(biāo)為0的元素,然后按這些數(shù)值的排列順序賦初值,只能給元素逐個賦值,不能給數(shù)組整體賦值。如果給全部元素賦值,則在數(shù)組說明中,可以不給出數(shù)組元素的個數(shù)。19、若有以下程序#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知識點解析:程序中循環(huán)部分的主要功能是,在字符串b中尋找是否含有子串a(chǎn),如果含有則退出,字符指針D指向該匹配子串后面的位置,利用printf函數(shù)輸出則從該位置開始一直輸出到字符串b的結(jié)尾。20、若有定義語句: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ù)組和數(shù)組指針。a是一個二維數(shù)組,p是一個指針數(shù)組,該數(shù)組有3個元素,每個元素都是一個指向整型對象的指針。選項A)錯誤,等號的左邊是一個數(shù)組地址,不是變量;選項B)數(shù)據(jù)類型不匹配,p[0]是指向一個整型對象,而a是一個二維數(shù)組首地址;選項C)正確,是把元素a[1][2]賦值給p[0];選項D)和選項B)一樣屬于數(shù)據(jù)類型不匹配,p[1]是指向一個整型對象。而a是一個二維數(shù)組首地址。21、以下定義數(shù)組的語句中錯誤的是A、int=num[][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知識點解析:在選項D)的數(shù)組定義中,賦值號左邊定義了一個2行4列的二維數(shù)組,而在右邊定義了一個3行2列的二維數(shù)組。22、有下列程序: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知識點解析:利用二重for循環(huán)對二維數(shù)組af4][4]的主對角線上的元素{1,6,2,1}實現(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。23、有以下程序#include<stdio.h>#defineN3voidfun(inta[][N],intb[])main(){inti,j;{intx[N][N]={1,2,3,4,5,6,7,8,9},y[N],i;for(i=0;i<N;i++)fun(x,y);{b[i]=a[i][0];for(i=0;i<N;i++)printf("%d,",y[i]);for(j=1;j<N;j++)printf("\n");if(b[i]<a[i][j])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ù)fun()的作用是求出二維數(shù)組a[][N]中每一行中的最大元素,所以在main()函數(shù)中執(zhí)行完fun(x,y)后,數(shù)組y中的元素為二維數(shù)組x[N][N]每一行的最大元素。24、以下選項中,能正確進(jìn)行字符串賦值的是A、chars[5]={’A’,’B’,’C’,’D’,’E’};B、char*s="ABCDE";C、chars[4][5]={"ABCDE"};D、char*s;gets(s);標(biāo)準(zhǔn)答案:B知識點解析:對于選項A)字符串中無法存放字符串結(jié)束標(biāo)志’\0’,選項C)每行僅僅存放5個字符,同樣的不能存放字符串結(jié)束標(biāo)志,選項D)中指針變量s沒有實際的內(nèi)存空間,無法存放輸入的字符串。因此正確的選項為B),相當(dāng)于char*s;s="ABCDE",把字符串常量的首地址存放到指針變量中存儲。25、以下敘述中正確的是A、函數(shù)調(diào)用“strlen(s);”會返回字符串s實際占用內(nèi)存的大小(以字節(jié)為單位)B、兩個字符串可以用關(guān)系運(yùn)算符進(jìn)行大小比較C、當(dāng)拼接兩個字符串時,結(jié)果字符串占用的內(nèi)存空間是兩個原串占用空間的和D、C語言本身沒有提供對字符串進(jìn)行整體操作的運(yùn)算符標(biāo)準(zhǔn)答案:D知識點解析:C語言中沒有運(yùn)算符可以處理字符串,要調(diào)用“string”庫中的函數(shù)來處理字符串,其中strlen函數(shù)主要測試字符串中實際字符的個數(shù),比實際占用的內(nèi)存至少要少一個。Strcat(s1,s2涵數(shù)用于連接兩個字符串,是把字符串s2連接到s1的后面。26、以下選項中,沒有編譯錯誤的是A、charstr3[]={’d’,’e’,’b’,’u’,’g’,’\0’);B、charstr1[5]="pass",str2[6];str2=str1;C、charname[10];name="china";D、charstr4[];str4="helloworld";標(biāo)準(zhǔn)答案:A知識點解析:選項A)是定義了字符數(shù)組str3[];并對其賦初值。選項B)中語句str2=str1非法,字符數(shù)組不能直接賦值。選項C),D)和選項B)一致。27、有以下程序#include<stdio.h>voidmain(){chars[]="012xy\08s34f4w2";inti,n=0;for(i=0;s[i]!=0;i++)if(s[i]>=’0’&&s[i]<=’9’)n++;printf("%d\n",n);}程序運(yùn)行后的輸出結(jié)果是A、0B、7C、3D、8標(biāo)準(zhǔn)答案:C知識點解析:在主函數(shù)中的for循環(huán)語句中,當(dāng)s[i]的值不等于0~9之間的數(shù)字時,結(jié)束循環(huán)語句的執(zhí)行。由字符數(shù)組s的初值可以得到for循環(huán)語句執(zhí)行了三次,所以變量n的值等于3。28、以下能正確定義字符串的語句是A、charstr="kx43";B、charstr[]:"\0";C、charstr=";D、charstr[]={’\064’};標(biāo)準(zhǔn)答案:B知識點解析:字符串常量是用一對雙括號括起來的一串字符。它用字符數(shù)組來存放,不用一對大括號對括起來。國家二級C語言(函數(shù)和數(shù)組)機(jī)試模擬試卷第2套一、選擇題(本題共29題,每題1.0分,共29分。)1、設(shè)有定義:intx[2][3];則以下關(guān)于二維數(shù)組x的敘述錯誤的是A、數(shù)組X可以看作是由x[0]和x[1]兩個元素組成的一維數(shù)組B、可以用x[0]=0;的形式為數(shù)組所有元素賦初值0C、元素x[0]可看作是由3個整型元素組成的一維數(shù)組D、x[0]和x[1]是數(shù)組名,分別代表一個地址常量標(biāo)準(zhǔn)答案:B知識點解析:二維數(shù)組的元素在內(nèi)存中占一系列連續(xù)的存儲單元。數(shù)組元素在內(nèi)存中的排列順序是先存放第0行的元素,再存放第1行的元素……稱這種存放順序為按行存放。可以把一個二維數(shù)組看成是一個一維數(shù)組,每個數(shù)組元素又是包含有符號元素的一維數(shù)組。另外在給二維數(shù)組賦初值時可以不用含化括號對。例如。inta[4][3]={1,2,4,5};在編譯時,系統(tǒng)將按a數(shù)組元素在內(nèi)存中排列的順序,將花括號內(nèi)的數(shù)據(jù)一一對應(yīng)地賦給各個元素,若數(shù)據(jù)不足,系統(tǒng)將給后而的元素自動補(bǔ)初值0。以上將給a數(shù)組第一行的元素和第二行的第一個元素依次賦予1、2、4、5,其他元素的初值都為0。2、有以下程序#inclUde#defineN3voidfun(inta[][N],intb[]){inti,j;for(i=0;iA、1,3,5,B、2,4,8,C、3,5,7D、3,6,9,標(biāo)準(zhǔn)答案:D知識點解析:函數(shù)fun()的作用是求出二維數(shù)組a[][N]中每一行中的最大元素,所以在main()函數(shù)中執(zhí)行完fun(x,y)后,數(shù)組y中的元素為二維數(shù)組x[N][N]每一行的最大元素。3、以下語句中存在語法錯誤的是A、charss[][20]={"right?"};B、char*ss[6];ss[1]="right?";C、char*ss[]={"right?"};D、charss[61120];ss[1]="right?";標(biāo)準(zhǔn)答案:A知識點解析:選項A)中定義了二維數(shù)組ss,可以用于存儲字符串,但是字符串的存儲不能通過賦值,僅可以初始化或者輸入得到,而選項C)和A)不同,選項C)為指針數(shù)組,對于指針變量可以保存常量字符串的地址。4、下列敘述中正確的是A、兩個連續(xù)的單引號(")是合法的字符常量B、可以對字符串進(jìn)行關(guān)系運(yùn)算C、兩個連續(xù)的雙引號("")是合法的字符串常量D、空字符串不占用內(nèi)存,其內(nèi)存空間大小是0標(biāo)準(zhǔn)答案:C知識點解析:兩個連續(xù)的雙引號:"",是一個字符串常量,稱為“空串”。5、以下選項中,能正確進(jìn)行字符串賦值的是A、chars[5]={’A’,’B’,’C’,’D’,’E’};B、char*s="ABCDE";C、chars[4][5]={"ABCDE"};D、char*s;gets(s);標(biāo)準(zhǔn)答案:B知識點解析:對丁選項A)字符串中無法存放字符串結(jié)束標(biāo)志‘\0’,選項C)每行僅僅存放5個字符,同樣的不能仔放字符串結(jié)束標(biāo)忐,選項D)中指針變量s沒有實際的內(nèi)存空間,無法存放輸入的字符串。因此正確的選項為B),相當(dāng)于char*s:s="ABCDE",把字符串常量的首地址存放到指針變量中存儲。6、有以下程序#includeintfun(chars[]){char*p=s;while(*p!=0)p++;return(p-s);}main(){printf("%d\n",fun("0ABCDEF"));}程序運(yùn)行后的輸出結(jié)果是A、6B、7C、1D、0標(biāo)準(zhǔn)答案:B知識點解析:函數(shù)fun的土要功能是計算字符串中實際字符的個數(shù).因此主函數(shù)中調(diào)用fun得到結(jié)果為7。7、若有以下程序段charstr[4][12]={"as","bbb","ccccc","d"),*strp[4];inti;for(i=0;i<4;i++)strp[i]=str[i];不能正確引用字符串的選項是A、strpB、str[0]C、strp[3]D、*strp標(biāo)準(zhǔn)答案:A知識點解析:程序段中定義指針數(shù)組*strp,含有4個元素,for循環(huán)strp分別保存了二維數(shù)組str中的4個字符串的首地址,因此strp為二級地址,不能保存字符串的首地址,*strp或者strp[0]中存放了字符串"aa"的首地址。所以不能正確引用字符串的為選項A)。8、以下敘述中正確的是A、下面的語句用賦初值方式來定義字符串,其中,’\0’是必須的charstrl[]={’s’,’t’,’r’,’l’,’\0’}:B、有定義語句:charstrl[]="str!";,數(shù)組strl將包含4個元素C、字符串常量"strl"的類型是:字符串?dāng)?shù)據(jù)類型D、字符數(shù)組的每個元素可存放一個字符,并且最后一個元素必須是’\0’字符標(biāo)準(zhǔn)答案:B知識點解析:選項B)中除了字符串中實際字符之外,還要存儲字符串結(jié)束標(biāo)志,應(yīng)為5個元素。在C語言中沒有字符串?dāng)?shù)據(jù)類型,因此選項C)不正確,選項D)字符數(shù)組不一定必須存放字符串,因此沒有規(guī)定最后一個元素為字符串結(jié)束標(biāo)志。9、以下敘述中正確的是A、charca[3][5]={"A","BB","CCC"};是不合語法的B、字符串?dāng)?shù)組,是指數(shù)組中的每個元素都是一個存放字符串的一維數(shù)組C、charca[][5]={"A","BB","CCC"};是不合語法的D、char*ca[3]={"A","BB","CCC"};是不合語法的標(biāo)準(zhǔn)答案:B知識點解析:字符串?dāng)?shù)組,也就是二維字符數(shù)組,其中每個元素為一個字符串,選項B)的說法正確。選項A)和C)對于ca的定義是正確的。選項D)定義一個指針數(shù)組,可以保存多個字符串的首地址。10、以下敘述中正確的是A、函數(shù)調(diào)用strlen(s);會返回字符串S實際占用內(nèi)存的大小(以字節(jié)為單位)B、兩個字符串可以用關(guān)系運(yùn)算符進(jìn)行大小比較C、當(dāng)拼接兩個字符串時,結(jié)果字符串占用的內(nèi)存空間是兩個原串占用空間的和D、C語言本身沒有提供對字符串進(jìn)行整體操作的運(yùn)算符標(biāo)準(zhǔn)答案:D知識點解析:C語言中沒有運(yùn)算符可以處理字符串,要調(diào)用“string庫中的函數(shù)來處理字符串,其中strlen函數(shù)主要測試字符串中實際字符的個數(shù),比實際占用的內(nèi)存至少要少一個。Strcat(s1,s2)函數(shù)用于連接兩個字符串,是把字符串s2連接劍s1的后面。11、以下敘述中正確的是A、不能用字符串常量對字符數(shù)組名進(jìn)行整體賦值操作B、字符串常量"Hello"會被隱含處理成一個無名字符型數(shù)組,它有5個元素C、charstr[7]="string!";在語法上是合法的,運(yùn)行也是安全的D、char*str;str="Hello";與charstr[];str="Hello":效果是一樣的標(biāo)準(zhǔn)答案:A知識點解析:字符數(shù)組僅僅可以采用定義時仞始化以及輸入得劍數(shù)據(jù),在程序其他部分不允許對其進(jìn)行賦值。字符串常最中除了實際字符之外還有結(jié)束標(biāo)志,選項B)錯誤,而選項C)中,沒有空間存放字符串結(jié)束標(biāo)志,因此運(yùn)行是不安全的。選項D)中第一個str為指針,叫以賦值,而后面的為數(shù)組,在程序中賦值出錯。12、以下敘述中正確的是A、語句charstr[10]="string?";和charstr[10]={"string?"};并不等價B、對于一維字符數(shù)組,不能使用字符串常量來賦初值C、對于字符串常量"string?",系統(tǒng)已自動在最后加入了’\0’字符,表示串結(jié)尾D、在語句charstr[]="string!";中,數(shù)組str的大小等于字符串的長度標(biāo)準(zhǔn)答案:C知識點解析:存C語言中,字符串是借助于字符型一維數(shù)組來存放的,可以借助在定義時初始化以及輸入來把字符串存入數(shù)組,并規(guī)定以字符’\0’作為“字符串結(jié)束標(biāo)志”?!?’是一個轉(zhuǎn)義字符,稱為空值,它的ASCII碼值為0。’\0’作為標(biāo)志占用存儲空間,但不計入字符串的實際長度。在C語言中,系統(tǒng)在每個字符串的最后自動加入一個字符(’\0’)作為字符串的結(jié)束標(biāo)志。13、設(shè)有定義charstr[]="Hello";則語句pfintf("%d%d",sizeof(str),strlen(str));的輸出結(jié)果是A、66B、65C、55D、56標(biāo)準(zhǔn)答案:B知識點解析:sizeof主要用于測試變量所占的實際內(nèi)存,而strlen函數(shù)主要測試字符串中實際字符的個數(shù),字符串"Hello"占有內(nèi)存6個字節(jié),而字符串中共有5個字符。14、設(shè)有定義語句:char*aa[2]={"abcd","ABCD"};則以下敘述正確的是A、aa數(shù)組的兩個元素只能存放含有4個字符的一維數(shù)組的首地址B、aa數(shù)組的值分別是字符串"abcd"和"ABCD"C、aa是指針變量,它指向含有兩個元素的字符型數(shù)組D、aa[0]存放了字符串"abcd"的首地址標(biāo)準(zhǔn)答案:D知識點解析:題目中char*aa[2],定義了指針數(shù)組aa,有兩個元素,aa[0]存放"abcd"地址,而aa[1]存放”ABCD"地址。15、以下選項中,沒有編譯錯誤的是A、charstr3[]={’d’,’e’,’b’,’u’,’g’,’\0’};B、charstrl[5]="pass",str2[6];str2=str1;C、charname[10];name="china";D、charstr4[];str4="helloworld";標(biāo)準(zhǔn)答案:A知識點解析:選項A)是定義了字符數(shù)組str3[],并對其賦初值。選項B)中語句str2=str1非法,字符數(shù)組不能直接賦值。選項C),D)和選項B)一致。16、有以下程序main(){chara[5][10]={"one","two","three","four","five");inti,j;Chart;for(i=0;i<4;i++)for(j=i+1;j<5;j++)if(a[i][0]>a[j][0]){t=a[i][0];a[i][0]=a[j][0];a[j][0]=t;)puts(a[1]);}程序運(yùn)行后的輸出結(jié)果是A、fwoB、owoC、twoD、fix標(biāo)準(zhǔn)答案:A知識點解析:這個程序的執(zhí)行過程是當(dāng)i=0時,j=1,a[0][0]=0a[3][0]=f;置換a[2][0]=f,a[3][0]=t;此時,a[2][0]=Ca[1][0]=t,再置換a[2][0]=t,a[1][0]=f,;當(dāng)i=3時,j=4,a[3][0]=f=a43][0]=f;不置換;所以a[1]的結(jié)果為fwo。17、設(shè)有定義:chars[81];inti=0;以下不能將一行(不超過80個字符)帶有空格的字符串正確讀入的語句或語句組是A、while((s[i++]=getchar())?=’\n’)=s[i]=’\0’;B、scanf("%s",s);C、gets(s);D、do{scanf("%c",&s[i]);}while(s[i++]!=’\n’);s[i]=’\0’;標(biāo)準(zhǔn)答案:B知識點解析:本題考查標(biāo)準(zhǔn)輸入輸出函數(shù)和循環(huán)語句。gets(s)函數(shù)的作用是將輸入的字符讀入字符串s,直到遇到回車。而scanf7()函數(shù)接收字符串時的結(jié)束標(biāo)志為回車或者空格。18、設(shè)有定義:charp[]={’1’,’2’,’3’},*q=p;以下不能計算出一個char型數(shù)據(jù)所占字節(jié)數(shù)的表達(dá)式是A、sizeof(p)B、sizeof(char)C、sizeof(*q)D、sizeof(p[0])標(biāo)準(zhǔn)答案:A知識點解析:選項A)計算的是p[]字符數(shù)組首地址所占的內(nèi)存字節(jié)數(shù),返回值數(shù)組中所有元素占有的空間。*q和p[0]分別表示數(shù)組p中下標(biāo)為0的字符元素,選項B)和D)都可以計算char型數(shù)據(jù)占有的字節(jié)數(shù)。19、有以下程序#include#includevoidmain(){charstr[][20]={"One*World","One*Dream!"},*p=str[1];printf("%d,",strlen(p));printf("%s\n",p);}程序運(yùn)行后的輸出結(jié)果是A、9.One*Dream!B、10.One*Dream?C、9.One*WorldD、10.One*World標(biāo)準(zhǔn)答案:B知識點解析:在主函數(shù)中定義了二維字符數(shù)組str,并對它賦初值。定義字符指針p,并把字符串str[1]的地址賦給它。所以這時字符指針p指向字符串“One*Dream!”,然后在兩個輸出語句中,分別輸出這個字符串的長度10和字符串本身。20、有以下程序#includevoidmain(){chars[]="012xy\08s34f4w2";inti,n=0;for(i=0;s[i]!=0;i++)if(S[i]>=’0’&&S[i]<=’9’)n++;printf("%d\n",n);}程序運(yùn)行后的輸出結(jié)果是A、0B、7C、3D、8標(biāo)準(zhǔn)答案:C知識點解析:在主函數(shù)中的for循環(huán)語句中,當(dāng)s[i]的值不等于0~9之間的數(shù)字時,結(jié)束循環(huán)語句的執(zhí)行。由字符數(shù)組s的初值可以得到for循環(huán)語句執(zhí)行了三次,所以變量n的值等于3。21、以下不能將S所指字符串正確復(fù)制到t所指存儲空間的是A、for(i=0;t[i]=s[i];i++);B、while(*t=*s){t++;s++;}C、for(i=0,j=0;t[i++]=s[j++];);D、do{*t++=*s++;}while(*s);標(biāo)準(zhǔn)答案:D知識點解析:在選項D)中,不能把s所指字符串的結(jié)束標(biāo)志符賦給字符串t。22、下列語句組中,正確的是A、char*s;s="Olympic";B、chars[7];s="Olympic";C、char*s;s={"Olympic"};D、chars[7];s={"Olympic"};標(biāo)準(zhǔn)答案:A知識點解析:選項A)中定義了指針變量s,通過賦值語句保存字符串常量的地址,而字符數(shù)組絕對不能賦值,而只能初始化或者輸入。23、有以下程序main(){charch[]="uvwxyz",*pc;pc=ch;printf("%c\n",*(pc+5));}程序運(yùn)行后的輸出結(jié)果是A、0B、元素ch[5]的地址C、zD、字符Y的地址標(biāo)準(zhǔn)答案:C知識點解析:在程序中語句pc=ch;的功能是字符指針pc指向字符串?dāng)?shù)組ch[]的地址,而*(ps+5)表示字符串?dāng)?shù)組ch[]中第6個字符z。24、有以下程序#includevoidmain(){chars[]={"012xy"};inti,n=0;for(i=0;s[i]!=0;i++)if(s[i]>=’a’&&s[i]<=’z’)n++;printf("%d\n",n);}程序運(yùn)行后的輸出結(jié)果是A、0B、3C、5D、2標(biāo)準(zhǔn)答案:D知識點解析:這段程序的功能求出字符串s中字符在小寫字符a到z之間字符的個數(shù)。在程序中字符串s的值為“012xy”,所以在字符串s中符合要求的字符的個數(shù)等于2。25、以下能正確定義字符串的語句是A、charstr="\x43":B、charstr[]="\0";C、charstr=";D、charstr[]={’\064’};標(biāo)準(zhǔn)答案:B知識點解析:字符串常量是用一對雙括號括起來的一串字符。它用字符數(shù)組來存放,不用一對大括號對括起來。26、以下關(guān)于字符串的敘述中正確的是A、兩個字符串中的字符個數(shù)相同時才能進(jìn)行字符串大小的比較B、可以用關(guān)系運(yùn)算符對字符串的大小進(jìn)行比較C、空串比空格打頭的字符串小D、C語言中有字符串類型的常量和變量標(biāo)準(zhǔn)答案:C知識點解析:C語言本身并沒有設(shè)置一利,類型來定義字符串變量,卻允許使用“字符串常量”。字符串常量是由雙引號括起來的一串字符。任意兩個字符串的大小比較要調(diào)用字符串比較函數(shù)strcmp(s1,s2)來進(jìn)行,其比較的方法是依次對s1和s2中對應(yīng)位置上的字符兩兩進(jìn)行比較,當(dāng)出現(xiàn)第一對不相同的字符時,即由這兩個字符決定所在串的大小(比較字符大小的依據(jù)是其ASCII碼值)。27、若要求從鍵盤讀入含有空格字符的字符串,應(yīng)使用函數(shù)A、getc()B、gets()C、getchar()D、scanf()標(biāo)準(zhǔn)答案:B知識點解析:scanf()語句中用“空格”間隔不同的字符串,空格將被全部忽略掉,所以用scanf()函數(shù)不能輸入空格;getchar()函數(shù)用于輸入字符,其調(diào)用形式為:ch=getchar(),getchar()函數(shù)從終端讀入一個字符作為函數(shù)值,把讀入的一個字符賦給變量ch。在輸入時,空格、回車符都將用于字符讀入,而且只有在用戶敲入Enter鍵時,讀入才開始執(zhí)行。gets()函數(shù)的調(diào)用形式為:gets(str_adr),其中str_adr是存放輸入字符串的起始地址,可以是字符數(shù)組名、字符數(shù)組元素的地址或字符指針變量。gets()函數(shù)用來從終端鍵盤讀入字符串(包括空格符),直到讀入一個換行符為止。getc()函數(shù)的調(diào)用形式為:ch=getc(pD其中pf是文件指針。函數(shù)的功能是從pf指定的文件中讀入一個字符,并把它作為函數(shù)值返回。28、有以下程序main(){chars[]="abcde";s+=2:printf("%d\n",s[0]);執(zhí)行后的結(jié)果是A、輸出字符C的ASCII碼B、輸出字符CC、輸出字符a的ASCII碼D、程序出錯標(biāo)準(zhǔn)答案:D知識點解析:因為字符數(shù)組s[]中的數(shù)組名s表示的是一個地址常量。所以語句“s+=2;”不能將指針在當(dāng)前位置的基礎(chǔ)上再向后移動兩位。因而程序編譯時出錯。29、有下列程序:fun(charp[][10]){intn=0,i;for(i=0;i<7;i++)if(p[i][0]==’T’)n++;returnn;}main(){charstr[][10]={"Mon","Tue","Wed","Thu","Fri","Sat","Sun");printf("%d\n",fun(str));}程序執(zhí)行后的輸出結(jié)果是A、1B、3C、0D、2標(biāo)準(zhǔn)答案:D知識點解析:本題在主函數(shù)中定義了一個字符二維數(shù)組str[][10],并用{“Mon”,“Tue”,“Wed”,“Thu”,“Fri”,“Sat”,“Sun”}初始化。函數(shù)fun(charp[][10])的功能是統(tǒng)計出p[][10]中p[i][0]等十字符T的個數(shù)。所以fun(str)的功能是統(tǒng)計一周七天中英文名稱首7母為“T”的個數(shù)。因為字符串“Tue”和“Thu”的首字符是“T”,所以n=2。國家二級C語言(函數(shù)和數(shù)組)機(jī)試模擬試卷第3套一、選擇題(本題共28題,每題1.0分,共28分。)1、有以下程序#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])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");}A、1,3,5,B、2,4,8,C、3,5,7D、3,6,9,標(biāo)準(zhǔn)答案:D知識點解析:函數(shù)fun()的作用是求出二維數(shù)組a[][N]中每一行中的最大元素,所以在main()函數(shù)中執(zhí)行完fun(x,y)后,數(shù)組y中的元素為二維數(shù)組x[N][N]每一行的最大元素。2、以下語句中存在語法錯誤的是A、charss[][20]={"right?"};B、char*ss[6];ss[1]="right?";C、char*ss[]={"right?"};D、charss[6][20];ss[1]="right?";標(biāo)準(zhǔn)答案:A知識點解析:選項A中定義了二維數(shù)組ss,可以用于存儲字符串,但是字符串的存儲不能通過賦值,僅可以初始化或者輸入得到,而選項C和A不同,選項C為指針數(shù)組,對于指針變量可以保存常量字符串的地址。3、下列敘述中正確的是A、兩個連續(xù)的單引號(’’)是合法的字符常量B、可以對字符串進(jìn)行關(guān)系運(yùn)算C、兩個連續(xù)的雙引號("")是合法的字符串常量D、空字符串不占用內(nèi)存,其內(nèi)存空間大小是0標(biāo)準(zhǔn)答案:A知識點解析:兩個連續(xù)的雙引號:"",是一個字符串常量,稱為“空串”。4、以下選項中,能正確進(jìn)行字符串賦值的是A、chars[5]={’A’,’B’,’C’,’D’,’E’};B、char*s="ABCDE";C、chars[4][5]={"ABCDE"};D、char*s;gets(s);標(biāo)準(zhǔn)答案:B知識點解析:對于選項A字符串中無法存放字符串結(jié)束標(biāo)志‘\0’,選項C每行僅僅存放5個字符,同樣的不能存放字符串結(jié)束標(biāo)志,選項D中指針變量s沒有實際的內(nèi)存空間,無法存放輸入的字符串。因此正確的選項為B,相當(dāng)于char*s;s="ABCDE",把字符串常量的首地址存放到指針變量中存儲。5、有以下程序#include<stdio.h>intfun(chars[]){char*p=s;while(*p!=0)p++;return(p-s);}main(){printf("%d\n",fun("0ABCDEF"));}程序運(yùn)行后的輸出結(jié)果是A、6B、7C、1D、0標(biāo)準(zhǔn)答案:B知識點解析:函數(shù)fun的主要功能是計算字符串中實際字符的個數(shù),因此主函數(shù)中調(diào)用fun得到結(jié)果為7。6、若有以下程序段charstr[4][12]={"aa","bbb","ccccc","d"},*strp[4];inti;for(i=0;i<4;i++)strp[i]=str[i];不能正確引用字符串的選項是A、strpB、str[0]C、strp[3]D、*strp標(biāo)準(zhǔn)答案:A知識點解析:程序段中定義指針數(shù)組*strp,含有4個元素,for循環(huán)strp分別保存了二維數(shù)組str中的4個字符串的首地址,因此strp為二級地址,不能保存字符串的首地址,*strp或者strp[0]中存放了字符串"aa"的首地址。所以不能正確引用字符串的為選項A。7、以下敘述中正確的是A、下面的語句用賦初值方式來定義字符串,其中,’\0’是必須的charstr1[]={’s’,’t’,’r’,’1’,’\0’};B、有定義語句:charstr1[]="str1";,數(shù)組str1將包含4個元素C、字符串常量"str1"的類型是:字符串?dāng)?shù)據(jù)類型D、字符數(shù)組的每個元素可存放一個字符,并且最后一個元素必須是’\0’字符標(biāo)準(zhǔn)答案:B知識點解析:選項B中除了字符串中實際字符之外,還要存儲字符串結(jié)束標(biāo)志,應(yīng)為5個元素。在C語言中沒有字符串?dāng)?shù)據(jù)類型,因此選項C不正確,選項D字符數(shù)組不一定必須存放字符串,因此沒有規(guī)定最后一個元素為字符串結(jié)束標(biāo)志。8、以下敘述中正確的是A、charca[3][5]={"A","BB","CCC"};是不合語法的B、字符串?dāng)?shù)組,是指數(shù)組中的每個元素都是一個存放字符串的一維數(shù)組C、charca[][5]={"A","BB","CCC"};是不合語法的D、char*ca[3]={"A","BB","CCC"};是不合語法的標(biāo)準(zhǔn)答案:B知識點解析:字符串?dāng)?shù)組,也就是二維字符數(shù)組,其中每個元素為一個字符串,選項B的說法正確。選項A和C對于ca的定義是正確的。選項D定義一個指針數(shù)組,可以保存多個字符串的首地址。9、以下敘述中正確的是A、函數(shù)調(diào)用strlen(s);會返回字符串s實際占用內(nèi)存的大?。ㄒ宰止?jié)為單位)B、兩個字符串可以用關(guān)系運(yùn)算符進(jìn)行大小比較C、當(dāng)拼接兩個字符串時,結(jié)果字符串占用的內(nèi)存空間是兩個原串占用空間的和D、C語言本身沒有提供對字符串進(jìn)行整體操作的運(yùn)算符標(biāo)準(zhǔn)答案:D知識點解析:C語言中沒有運(yùn)算符可以處理字符串,要調(diào)用“string庫中的函數(shù)來處理字符串,其中strlen函數(shù)主要測試字符串中實際字符的個數(shù),比實際占用的內(nèi)存至少要少一個。Strcat(s1,s2)函數(shù)用于連接兩個字符串,是把字符串s2連接到s1的后面。10、以下敘述中正確的是A、不能用字符串常量對字符數(shù)組名進(jìn)行整體賦值操作B、字符串常量"Hello"會被隱含處理成一個無名字符型數(shù)組,它有5個元素C、charstr[7]="string!";在語法上是合法的,運(yùn)行也是安全的D、char*str;str="Hello";與charstr[];str="Hello";效果是一樣的標(biāo)準(zhǔn)答案:A知識點解析:字符數(shù)組僅僅可以采用定義時初始化以及輸入得到數(shù)據(jù),在程序其他部分不允許對其進(jìn)行賦值。字符串常量中除了實際字符之外還有結(jié)束標(biāo)志,選項B錯誤,而選項C中,沒有空間存放字符串結(jié)束標(biāo)志,因此運(yùn)行是不安全的。選項D中第一個str為指針,可以賦值,而后面的為數(shù)組,在程序中賦值出錯。11、以下敘述中正確的是A、語句charstr[10]="string!";和charstr[10]={"string!"};并不等價B、對于一維字符數(shù)組,不能使用字符串常量來賦初值C、對于字符串常量"string!",系統(tǒng)已自動在最后加入了’\0’字符,表示串結(jié)尾D、在語句charstr[]="string!";中,數(shù)組str的大小等于字符串的長度標(biāo)準(zhǔn)答案:C知識點解析:在C語言中,字符串是借助于字符型一維數(shù)組來存放的,可以借助在定義時初始化以及輸入來把字符串存入數(shù)組,并規(guī)定以字符’\0’作為“字符串結(jié)束標(biāo)志”?!痋0’是一個轉(zhuǎn)義字符,稱為空值,它的ASCII碼值為0。’\0’作為標(biāo)志占用存儲空間,但不計入字符串的實際長度。在C語言中,系統(tǒng)在每個字符串的最后自動加入一個字符(’\0’)作為字符串的結(jié)束標(biāo)志。12、設(shè)有定義charstr[]="Hello";則語句printf("%d%d",sizeof(str),strlen(str));的輸出結(jié)果是A、66B、65C、55D、56標(biāo)準(zhǔn)答案:B知識點解析:sizeof主要用于測試變量所占的實際內(nèi)存,而strlen函數(shù)主要測試字符串中實際字符的個數(shù),字符串"Hello"占有內(nèi)存6個字節(jié),而字符串中共有5個字符。13、設(shè)有定義語句:char*aa[2]={"abcd","ABCD"};則以下敘述正確的是A、aa數(shù)組的兩個元素只能存放含有4個字符的一維數(shù)組的首地址B、aa數(shù)組的值分別是字符串"abcd"和"ABCD"C、aa是指針變量,它指向含有兩個元素的字符型數(shù)組D、aa[0]存放了字符串"abcd"的首地址標(biāo)準(zhǔn)答案:D知識點解析:題目中char*aa[2],定義了指針數(shù)組aa,有兩個元素,aa[0]存放"abcd"地址,而aa[1]存放"ABCD"地址。14、以下選項中,沒有編譯錯誤的是A、charstr3[]={’d’,’e’,’b’,’u’,’g’,’\0’};B、charstr1[5]="pass",str2[6];str2=str1;C、charname[10];name="china";D、charstr4[];str4="helloworld";標(biāo)準(zhǔn)答案:A知識點解析:選項A是定義了字符數(shù)組str3[],并對其賦初值。選項B中語句str2=str1非法,字符數(shù)組不能直接賦值。選項C,D和選項B一致。15、有以下程序main(){chara[5][10]={"one","two","three","four","five"};inti,j;chart;for(i=0;i<4;i++)for(j=i+1;j<5;j++)if(a[i][0]>a[j][0]){t=a[i][0];a[i][0]=a[j][0];a[j][0]=t;}puts(a[1]);}程序運(yùn)行后的輸出結(jié)果是A、fwoB、owoC、twoD、fix標(biāo)準(zhǔn)答案:A知識點解析:這個程序的執(zhí)行過程是當(dāng)i=0時,j=1,a[0][0]=o<a[1][0]=t;不置換;當(dāng)i=1時,j=2,a[1][0]=t=a[2][0]=t;不置換;當(dāng)i=2時,j=3,a[2][0]=t>a[3][0]=f;置換a[2][0]=f,a[3][0]=t;此時,a[2][0]=f,a[1][0]=t,再置換a[2][0]=t,a[1][0]=f,;當(dāng)i=3時,j=4,a[3][0]=f=a43][0]=f;不置換;所以a[1]的結(jié)果為fwo。16、設(shè)有定義:chars[81];inti=0;以下不能將一行(不超過80個字符)帶有空格的字符串正確讀入的語句或語句組是A、while((s[i++]=getchar())!=’\n’);s[i]=’\0’;B、scanf("%s",s);C、gets(s);D、do{scanf("%c",&s[i]);}while(s[i++]!=’\n’);s[i]=’\0’;標(biāo)準(zhǔn)答案:B知識點解析:本題考查標(biāo)準(zhǔn)輸入輸出函數(shù)和循環(huán)語句。gets(s)函數(shù)的作用是將輸入的字符讀入字符串s,直到遇到回車。而scanf()函數(shù)接收字符串時的結(jié)束標(biāo)志為回車或者空格。17、設(shè)有定義:charp[]={’1’,’2’,’3’},*q=p;以下不能計算出一個char型數(shù)據(jù)所占字節(jié)數(shù)的表達(dá)式是A、sizeof(p)B、sizeof(char)C、sizeof(*q)D、sizeof(p[0])標(biāo)準(zhǔn)答案:A知識點解析:選項A計算的是p[]字符數(shù)組首地址所占的內(nèi)存字節(jié)數(shù),返回值數(shù)組中所有元素占有的空間。*q和p[0]分別表示數(shù)組p中下標(biāo)為0的字符元素,選項B和D都可以計算char型數(shù)據(jù)占有的字節(jié)數(shù)。18、有以下程序#include<stdio.h>#include<string.h>voidmain(){charstr[][20]={"One*World","One*Dream!"},*p=str[1];printf("%d,",strlen(p));printf("%s\n",p);}程序運(yùn)行后的輸出結(jié)果是A、9,One*Dream!B、10,One*Dream!C、9,One*WorldD、10,One*World標(biāo)準(zhǔn)答案:B知識點解析:在主函數(shù)中定義了二維字符數(shù)組str,并對它賦初值。定義字符指針p,并把字符串str[1]的地址賦給它。所以這時字符指針p指向字符串“One*Dream!”,然后在兩個輸出語句中,分別輸出這個字符串的長度10和字符串本身。19、有以下程序#include<stdio.h>voidmain(){chars[]="012xy\08s34f4w2";inti,n=0;for(i=0;s[i]!=0;i++)if(s[i]>=’0’&&s[i]<=’9’)n++;printf("%d\n",n);}程序運(yùn)行后的輸出結(jié)果是A、0B、7C、3D、8標(biāo)準(zhǔn)答案:C知識點解析:在主函數(shù)中的for循環(huán)語句中,當(dāng)s[i]的值不等于0~9之間的數(shù)字時,結(jié)束循環(huán)語句的執(zhí)行。由字符數(shù)組s的初值可以得到for循環(huán)語句執(zhí)行了三次,所以變量n的值等于3。20、以下不能將s所指字符串正確復(fù)制到t所指存儲空間的是A、for(i=0;t[i]=s[i];i++);B、while(*t=*s){t++;s++;}C、for(i=0,j=0;t[i++]=s[j++];);D、do{*t++=*s++;}while(*s);標(biāo)準(zhǔn)答案:D知識點解析:在選項D中,不能把s所指字符串的結(jié)束標(biāo)志符賦給字符串t。21、下列語句組中,正確的是A、char*s;s="Olympic";B、chars[7];s="Olympic";C、char*s;s={"Olympic"};D、chars[7];s={"Olympic"};標(biāo)準(zhǔn)答案:A知識點解析:選項A中定義了指針變量s,通過賦值語句保存字符串常量的地址,而字符數(shù)組絕對不能賦值,而只能初始化或者輸入。22、有以下程序main(){charch[]="uvwxyz",*pc;pc=ch;printf("%c\n",*(pc+5));}程序運(yùn)行后的輸出結(jié)果是A、0B、元素ch[5]的地址C、zD、字符y的地址標(biāo)準(zhǔn)答案:C知識點解析:在程序中語句pc=ch;的功能是字符指針pc指向字符串?dāng)?shù)組ch[]的地址,而*(ps+5)表示字符串?dāng)?shù)組ch[]中第6個字符z。23、有以下程序#include<stdio.h>voidmain(){chars[]={"012xy"};inti,n=0;for(i=0;s[i]!=0;i++)if(s[i]>=’a’&&s[i]<=’z’)n++;printf("%d\n",n);}程序運(yùn)行后的輸出結(jié)果是A、0B、3C、5D、2標(biāo)準(zhǔn)答案:D知識點解析:這段程序的功能求出字符串s中字符在小寫字符a到z之間字符的個數(shù)。在程序中字符串s的值為“012xy”,所以在字符串s中符合要求的字符的個數(shù)等于2。24、以下能正確定義字符串的語句是A、charstr="\x43";B、charstr[]="\0";C、charstr=’’;D、charstr[]={’\064’};標(biāo)準(zhǔn)答案:B知識點解析:字符串常量是用一對雙括號括起來的一串字符。它用字符數(shù)組來存放,不用一對大括號對括起來。25、以下關(guān)于字符串的敘述中正確的是A、兩個字符串中的字符個數(shù)相同時才能進(jìn)行字符串大小的比較B、可以用關(guān)系運(yùn)算符對字符串的大小進(jìn)行比較C、空串比空格打頭的字符串小D、C語言中有字符串類型的常量和變量標(biāo)準(zhǔn)答案:C知識點解析:C語言本身并沒有設(shè)置一種類型來定義字符串變量,卻允許使用“字符串常量”。字符串常量是由雙引號括起來的一串字符。任意兩個字符串的大小比較要調(diào)用字符串比較函數(shù)strcmp(s1,s2)來進(jìn)行,其比較的方法是依次對s1和s2中對應(yīng)位置上的字符兩兩進(jìn)行比較,當(dāng)出現(xiàn)第一對不相同的字符時,即由這兩個字符決定所在串的大?。ū容^字符大小的依據(jù)是其ASCⅡ碼值)。26、若要求從鍵盤讀入含有空格字符的字符串,應(yīng)使用函數(shù)A、getc()B、gets()C、getchar()D、scanf()標(biāo)準(zhǔn)答案:B知識點解析:scanf()語句中用“空格”間隔不同的字符串,空格將被全部忽略掉,所以用scanf()函數(shù)不能輸入空格;getchar()函數(shù)用于輸入字符,其調(diào)用形式為:ch=getchar(),getchar()函數(shù)從終端讀入一個字符作為函數(shù)值,把讀入的一個字符賦給變量ch。在輸入時,空格、回車符都將用于字符讀入,而且只有在用戶敲入Enter鍵時,讀入才開始執(zhí)行。gets()函數(shù)的調(diào)用形式為:gets(str_adr),其中str_adr是存放輸入字符串的起始地址,可以是字符數(shù)組名、字符數(shù)組元素的地址或字符指針變量。gets()函數(shù)用來從終端鍵盤讀入字符串(包括空格符),直到讀入一個換行符為止。getc()函數(shù)的調(diào)用形式為:ch=getc(pf)其中pf是文件指針。函數(shù)的功能是從pf指定的文件中讀入一個字符,并把它作為函數(shù)值返回。27、有以下程序#include<stdio.h>main(){chars[]="abcde";s+=2;printf("%d\n",s[0]);}執(zhí)行后的結(jié)果是A、輸出字符c的ASCII碼B、輸出字符cC、輸出字符a的ASCII碼D、程序出錯標(biāo)準(zhǔn)答案:D知識點解析:因為字符數(shù)組s[]中的數(shù)組名s表示的是一個地址常量。所以語句“s+=2;”不能將指針在當(dāng)前位置的基礎(chǔ)上再向后移動兩位。因而程序編譯時出錯。28、有下列程序:fun(charp[][10]){intn=0,i;for(i=0;i<7;i++)if(p[i][0]==’T’)n++;returnn;}main(){charstr[][10]={"Mon","Tue","Wed","Thu","Fri","Sat","Sun"};printf("%d\n",fun(str));}程序執(zhí)行后的輸出結(jié)果是A、1B、3C、0D、2標(biāo)準(zhǔn)答案:D知識點解析:本題在主函數(shù)中定義了一個字符二維數(shù)組str[][10],并用{“Mon”,“Tue”,“Wed”,“Thu”,“Fri”,“Sat”,“Sun”}初始化。函數(shù)fun(charp[][10])的功能是統(tǒng)計出p[][10]中p[i][0]等于字符’T’的個數(shù)。所以fun(str)的功能是統(tǒng)計一周七天中英文名稱首字母為“T”的個數(shù)。因為字符串“Tue”和“Thu”的首字符是“T”,所以n=2。國家二級C語言(函數(shù)和數(shù)組)機(jī)試模擬試卷第4套一、選擇題(本題共28題,每題1.0分,共28分。)1、有以下程序(strcpy為字符串復(fù)制函數(shù),strcat為字符串連接函數(shù))#include#includemain(){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知識點解析:程序執(zhí)行strcpy(a+1,b+2)后,字符數(shù)組a的值為“a2”,再進(jìn)行字符串的連接strcat(a,c+1),此時字符數(shù)細(xì)a的值為“a2yz”。2、若各選項中所用變量已正確定義,函數(shù)fun中通過return語句返回一個函數(shù)值,以下選項中錯誤的程序是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知識點解析:C語言規(guī)定,函數(shù)必須先定義,后調(diào)用(函數(shù)的返回值類型為int或char時除外)。在選項A中,調(diào)用的子函數(shù)在調(diào)用后面定義,所以不正確。在選項B、C中,被調(diào)用函數(shù)在主函數(shù)之前定義,再在主函數(shù)中調(diào)用,所以是正確的;在選項D中,在主函數(shù)中先對子函數(shù)floatfun(inti,inti)進(jìn)行了聲明,然后進(jìn)行調(diào)用。3、以下敘述中正確的是A、用戶自己定義的函數(shù)只能調(diào)用庫函數(shù)B、不同函數(shù)的形式參數(shù)不能使用相同名稱的標(biāo)識符C、在C語言的函數(shù)內(nèi)部,可以定義局部嵌套函數(shù)D、實用的C語言源程序總是由一個或多個函數(shù)組成標(biāo)準(zhǔn)答案:D知識點解析:一個C語言源程序可以由一個或多個源文件組成,每個源文件可由一個或多個函數(shù)組成,這些函數(shù)可以是自定義函數(shù),也可以是庫函數(shù),各個函數(shù)之問沒有主從關(guān)系,不能嵌套定義函數(shù)。4、若有定義語句:chars[10]="1234567\0\0";則strlen(s)的值是A、8B、7C、9D、10標(biāo)準(zhǔn)答案:B知識點解析:寧符串長度函數(shù)strlen(s)表示計算出以s為起始地址的字符串的長度,并作為函數(shù)值返回。這個長度值不包括串尾的結(jié)束標(biāo)志’\0’。5、有以下程序#includemain(){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ù)strcat(p,r)的功能是把字符數(shù)組p[]和r[]連接起來,此時字符數(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ù)制時把字符串結(jié)束標(biāo)志’\null’也復(fù)制到字符數(shù)組p[]中,這時字符函數(shù)strlen(p)返回字符數(shù)組p[]的有效字符長度為6。6、若有定義語句:char*s1="OK",*s2="ok";以下選項中,能夠輸出"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ù)strcmp的功能是對s1和s2所指字符串進(jìn)行比較。如果s1s2,返回正數(shù),所以對于本題來說,能夠輸出“OK”的語句是選項A所指的語句。7、有以下程序,程序中庫函數(shù)islower(ch)用以判斷ch中的字母是否為小寫字母#include#includevoidfun(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ù)fun(char*p)的功能是如果p[i]指向的字符為空寧符并且其前一個字符是小寫字母,則把小寫字母變成大字母,所以在主函數(shù)中,執(zhí)行fun(s1)后,小寫字母b,d都改成大字母。8、若有以下定義和語句charsl[10]="abcd!",*s2="\n123\\";printf("%d%d\n",strlen(s1),strlen(s2));則輸出結(jié)果是A、105B、107C、55D、58標(biāo)準(zhǔn)答案:C知識點解析:本題要注意的是轉(zhuǎn)義字符的問題,在字符串s2中,有兩個轉(zhuǎn)義字符,分別是回車換行符和反斜線。所以其字符串長度等于5。9、有以下程序#includeintfun(inta,intb){if(b==0)returna;elsereturn(fun(--a,--b));}main(){printf("%dha",fun(4,2));)程序的運(yùn)行結(jié)果是A、1B、2C、3D、4標(biāo)準(zhǔn)答案:B知識點解析:由程序可知函數(shù)fun(inta,intb)是一個遞歸函數(shù)。所以當(dāng)主函數(shù)中調(diào)用fun(4,2)時,其執(zhí)行過程如下:fun(4,2)->fun(3,1)->fun(2,0),其返回值為2。10、下列選項中,能夠滿足“只要字符串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知識點解析:在C語言中要對兩個字符串的人小進(jìn)行比較,就需要調(diào)用字符串比較函數(shù)strcmp(),如果這個函數(shù)的返回值等于0,說明兩個字符串相等。11、以下敘述中正確的是A、函數(shù)名代表該函數(shù)的入口地址B、所有函數(shù)均不能接受函數(shù)名作為實參傳入C、函數(shù)體中的語句不能出現(xiàn)對自己的調(diào)用D、如果函數(shù)帶有參數(shù),就不能調(diào)用自己標(biāo)準(zhǔn)答案:A知識點解析:函數(shù)形、實參傳遞的時候,要求對應(yīng)位置類型一致即可,如果實參為函數(shù)名,可以定義相應(yīng)的形參為指向函數(shù)的指針變量來獲得該函數(shù)的入口地址,因此選項B錯誤的,在C語言中允許進(jìn)行遞歸調(diào)用,即自己調(diào)用自己,選項C和選項D是錯誤的。12、以下敘述中正確的是A、函數(shù)既可以直接調(diào)用自己,也可以間接調(diào)用自己B、任何情況下都不能用函數(shù)名作為實參C、函數(shù)的遞歸調(diào)用不需要額外開銷,所以效率很高D、簡單遞歸不需要明確的結(jié)束遞歸的條件標(biāo)準(zhǔn)答案:A知識點解析:一個C語言源程序可以由一個或多個源文件組成,每個源文件可由一個或多個函數(shù)組成,各函數(shù)之間是平行的,除了主函數(shù)外,函數(shù)之間可以相互調(diào)用,甚至C語言中的函數(shù)可以直接或間接地自己調(diào)用自己,稱之為遞歸調(diào)用,該調(diào)用主要用于把要解決的問題轉(zhuǎn)化為一個新的問題,而這個新問題的解決方法仍與原來的解法相同,只是所處理的對象有規(guī)律地遞增或遞減,可以應(yīng)用這個轉(zhuǎn)化過程使問題得到解決,同時為了有效使用遞歸調(diào)用必定要有一個明確的結(jié)束遞歸的條件。而每次進(jìn)行遞歸調(diào)用時候,需要利用棧保存現(xiàn)場信息,因此并不會提高效率,選項C和選項D不正確。函數(shù)名表名了函數(shù)的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論