國家二級(C語言)筆試模擬試卷66(題后含答案及解析)_第1頁
國家二級(C語言)筆試模擬試卷66(題后含答案及解析)_第2頁
國家二級(C語言)筆試模擬試卷66(題后含答案及解析)_第3頁
國家二級(C語言)筆試模擬試卷66(題后含答案及解析)_第4頁
國家二級(C語言)筆試模擬試卷66(題后含答案及解析)_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

國家二級(C語言)筆試模擬試卷66(題后含答案及解析)題型有:1.選擇題2.填空題選擇題(1-10、21-40每題2分,11-20每題1分,共70分)下列各題A、B、C、D四個選項中,只有一個選項是正確的,請將正確選項涂寫在答題卡相應位置上。1.設有棧S和隊列Q,其初始狀態(tài)為空,元素a1、a2、a3、a4、a5、a6依次入棧,出棧的元素進入隊列Q,若6個元素出隊列的順序是a2、a4、a3、a6、a5、a1,則棧的容量至少是______。A.6B.4C.3D.2正確答案:C2.一個存儲結點存放一個______。A.數據項B.數據元素C.數據結構D.數據類型正確答案:B3.在數據結構中,從邏輯結構上看可以分成______。A.動態(tài)結構和靜態(tài)結構B.線性結構和非線性結構C.內部結構和外部結構D.緊湊結構和非緊湊結構正確答案:B4.若待排序序列中元素非常多,而且它們的排列是完全無序的,那么最好選用下列排序方法中的______。A.冒泡排序B.簡單選擇排序C.直接插入排序D.快速排序正確答案:D5.軟件文檔不僅是軟件開發(fā)各階段的重要依據,而且也影響軟件的______。A.可維護性B.可移植性C.可擴展性D.可用性正確答案:A6.設有系和學生2個實體集,一個學生只能在一個系里注冊,而一個系有很多學生。系和學生的關系是______。A.多對多聯(lián)系B.多對一聯(lián)系C.一對多聯(lián)系D.一對一聯(lián)系正確答案:C7.下列程序的輸出結果是______。main(){intn;(n=6*4,n+6),n*2;printf(“n=%d\n”,n);}A.22B.23C.24D.25正確答案:C8.下列描述中,錯誤的一條是______。A.C語言中,二維數組或多維數組的排列順序是按行存放的B.賦值表達式b[1][2]=a[2][3]/2*a[0][0]是正確的C.表達式3==4>2!=5<2的值為0D.數組名后的方括弧內可以為常量表達式,也可以為變量正確答案:D9.下列程序(注意:ch[0]在低字節(jié),ch[1]在高字節(jié))的輸出結果是______。#include<stdio.h>unionpw{inti;charch[2];}a;main(){a.ch[0]=13;a.ch[1]=0;printf(“%d\n”,a.i);}A.13B.14C.208D.209正確答案:A10.下列程序的輸出結果是______。#include<stdio.h>main(){inti,j,k,a=3,b=2;i=(--a==b++)?--a;++b;j=a++;k=b;printf(“i=%d,j=%d,k=%d\n”,i,j,k);}A.i=2,j=1,k=3B.i=1,j=1,k=2C.i=4,j=2,k=4D.i=1,j=1,k=3正確答案:D11.設有如下的變量定義,以下符合C語言語法的表達式是______。inti=8,k,a,b;unsignedlongw=5;doublex=1,42,y=5.2;A.a+=a-=(b=4)*(a=3);B.x%(-3);C.a=a*3=2;D.y=float(i);正確答案:A12.設語句inta=3;,當執(zhí)行了以下語句后,變量a的值是______。a+=a-=a*a;A.3B.0C.9D.-12正確答案:B13.C語言中運算對象必須是整型的運算符是______。A.%=B./C.=D.<=正確答案:A14.若a為int類型,且其值為3,則執(zhí)行完表達式a+=a-=a*a后,a的值是______。A.-3B.9C.-12D.6正確答案:C15.下列程序的運行結果為______。main(){intn;for(n=1;n<=10;n++){if(n%3==0)continue;printf(“%d”,n);}}A.12457810B.369C.12D.12345678910正確答案:A16.用語句scanf(“%c%c%c”,&c1,&c2,&c3)輸入a、b、c時,變量c1、c2、c3的值分別為______。A.’a’,’b’,’c’B.’a’,’b’,’’C.’a’,’’,’b’D.’a’,’’,’c’正確答案:C17.當輸入a1b2c3d4e時,下列程序的運行結果為______。main(){charstr[40];printf(“請輸入含有4個數字字符的字符串:\n”);scanf(“%s”,&str);insert(str);}insert(str)charstr[];{inti;for(i=strlen(str);i>0;i--){str[2*i)=str[i];str[2*i-1)=‘‘;}printf(“\n結果是:%s”,str);}A.a1b2c3d4eB.1234C.a1b2D.因輸入錯誤,程序出錯正確答案:A18.下列程序運行后,輸出結果是______。main(){charch[2][5]={“693”,”825”),*p[2];inti,j,s=0;for(i=0;i<2;i++)p[i]=ch[i];for(i=0;i<2;i++)for(j=0;p[i][j]>=‘0’&&p[i][j]<=‘9’;j+=2)s=10*s+p[i][j]-’0’;printf(“%d\n”,s);}A.6385B.22C.33D.693825正確答案:A19.下列程序的輸出結果是______。main(){inti,x[3][3]=(1,2,3,4,5,6,7,8,9};for(i=0;i<3;i++)printf(“%d,”,x[i][2-i]);}A.1,5,9B.1,4,7C.3,5,7D.3,6,9正確答案:C20.下列程序的輸出結果是______。main(){intw=5;fun(w);printf(“\n”);}fun(intk){if(k>0)fun(k-1);printf(“%d”,k);}A.54321B.012345C.12345D.543210正確答案:B21.為了避免在嵌套的條件語句if-else中產生二義性,C語言中規(guī)定的if-else配對原則是______。A.else子句與縮排位置相同的if配對B.else子句與其之前最近的未被配對的if配對C.else子句與其之后最近的if配對D.else子句與同一行上的if配對正確答案:B22.C語言程序的基本單位是______。A.程序行B.語句C.函數D.字符正確答案:C解析:每一個C語言程序都是由若干個函數構成的。23.若有說明:intx[][3]={1,3,5,7,9,11,13};,則x數組的行數為______。A.2B.3C.4D.無確定值正確答案:B解析:計算行數的方法是用數組的元素個數除以列數,尾數為小數直接進一位。24.以下能正確進行字符串賦值操作的是______。A.char*sss;*sss=“hello!”;B.char*sss;sss=“hello!”;C.charsss[8];sss=“hello!”;D.charsss[8];*sss=“hello!”;正確答案:B25.若調用一個函數,且此函數中沒有return語句,則以下正確的說法是______。A.該函數沒有返回值B.該函數返回若干個系統(tǒng)默認值C.該函數能返回一個用戶所希望的函數值D.該函數返回一個不確定的值正確答案:D解析:函數體可以沒有return語句,程序執(zhí)行到末尾為“}”時結束,然后返回調用函數,但沒有確定的函數值返回。26.若定義staticinta[2][2]={1,2,3,4},則a數組的各數組元素分別為______。A.a[0][0]=1,a[0][1]=2,a[1][0]=3,a[1][1]=4B.a[0][0]=1,at0][1]=3,a[1][0]=2,a[1][1]=4C.a[0][0]=4,a[0][1]=3,a[1][0]=2,a[1][1]=1D.a[0][0]=4,a[0][1]=2,a[1][0]=3,a[1][1]=1正確答案:A解析:C語言中二維數組數組元素的排列順序是按行依次存放的,所以A是正確選項。27.下列語句中,不正確的是______。A.staticchara[]={“Jack”};B.staticchara[]=“Jack”;C.printf(“%s”,a[0]);D.scanf(“%s”,a);正確答案:C解析:當用%s格式符輸出字符串時,printf中的輸出項是字符數組名,不是數組元素名。28.給出以下定義:charx[]=“abcdefg”;chary[]={‘a’,’b’,’c’,’d’,’e’,’f’,’g’};則正確的敘述為______。A.數組x和數組y等價B.數組x和數組y的長度相同C.數組x的長度大于數組y的長度D.數組x的長度小于數組y的長度正確答案:C解析:在C語言中,字符串以’\0’作為結束符,因此數組x的長度為7+1=8,而數組y的長度等于7。29.已知p為指針變量,a為數組名,i為整型變量,下列語句中,不正確的是______。A.p=&i;B.p=a;C.p=&a[i];D.p=10;正確答案:D解析:不能把一個整數賦給指針變量,只能將變量已分配的地址賦給指針變量。30.在C程序中,可把整型數以二進制形式存放到文件中的函數是______。A.fprintf函數B.fread函數C.fwrite函數D.fputc函數正確答案:C解析:fprintf是格式文件格式化輸出函數,fread是讀文件,fputc輸出單個字符到文件。只有fwrite可以通過參數來設置以二進制形式寫文件。31.以下程序段運行時______。charx[10],y[]=“China”;x=y;printf(“%s”,x);A.將輸出ChinaB.將輸出ChC.將輸出ChiD.編譯出錯正確答案:D解析:數組名可以認為是一個存放地址值的指針變量,這個指針變量中的地址值不可改變。因此,可以認為數組名是一個地址常量,所以不能將它隨意改變。32.下列程序段的輸出結果是______。voidfun(int*x,int*y){printf(“%d%d”,*x,*y);*x=3;*y=4;}main(){intx=1,y=2;fun(&y,&x);printf(“%d%d”,x,y);}A.2143B.1212C.1234D.2112正確答案:A解析:實參的個數必須與形參的個數一致,實參可以是表達式,在類型上應按位置與形參一一對應匹配。33.以下敘述中不正確的是______。A.C程序中的預處理命令行都以#號開始B.宏定義中的宏名可用大寫字母或小寫字母C.宏替換不占用運行時間,只占用編譯時間D.使用帶參數的宏時,參數的類型應與宏定義時的一致正確答案:D解析:宏替換和函數調用有相似之處,但在替換時,對參數沒有類型的要求。34.設有語句:“inta=1,b=2,*p1=&a,*p2=&b;”,則使指針p1指向變量b的賦值語句是______。A.p1=*p2B.*p1=p2C.p1=p2D.*p1=*p2正確答案:D解析:對于定義int*p,*q;,可以通過賦值語句p=q;,把指針變量q中的地址值賦給指針變量p,從而使這兩個指針變量指向同一地址。35.以下程序的輸出結果是______。#include<stdio.h>main(){intk=4,m=1,p;p=func(k,m);printf(“%d,”,p);p=func(k,m);printf(“%d\n”,p);}func(a,b)inta,b;{staticintm=0,i=2;i+=m+1;m=i+a+b;return(m);}A.8,17B.8,16C.8,20D.8,8正確答案:A36.若有以下定義和語句:inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;則不能表示a數組元素的表達式是______。A.*pB.a[10]C.*aD.a[p-a]正確答案:B解析:選項B越界,因為該數組元素只有a[0]~a[9]。37.以下程序的輸出結果是______。#defineTIMES(X)X*Xmain(){inta=16,k=2,m=1;a/=TIMES(k+m)/TIMES(k+m);printf(“d\n”,a);}A.16B.2C.9D.1正確答案:B解析:宏定義的作用是進行字符的替換,應先將賦值語句的右邊進行宏替換,即等號右邊為:k+m*k+m/k+m*k+m=2+1*2+1/2+1*2+1=2+2+0+2+1=7,然后計算a/=7,即a=a/7=16/7=2。38.下列程序的輸出結果是______。main(){chara[10]={1,2,3,4,5,6,7,8,9,0},*p=a+5;printf(“%d”,*--p);}A.非法B.a[4]的地址C.5D.7正確答案:C解析:p是一個指向字符的指針,在定義時,指向a[5]。執(zhí)行--p時,p就指向了a[4],那么*--p就是5。39.以下程序的運行結果為______。main(){intx,*p,**q;x=10;p=&x;q=&p;printf(“%d\n”,**q);}A.10B.9C.8D.11正確答案:A解析:程序中的p指向變量x,q被定義為二級指針,即指向指針的指針,其值為指針p的地址,因此,**q即是x,打印結果為10。40.下列定義不正確的有______。A.#definePI3.141592B.#defineS345;C.intmax(x,y);intx,y;{}D.intmax(int,int);正確答案:C解析:定義函數時,函數頭后不能加分號。41.設有結構體類型定義:structtry{intone;floattwo;}*str;若要動態(tài)開辟一個結構單元,使指針str指向其首地址,正確的語句是______。A.str=(try*)malloc(sizeof(try));B.*str=(structtry*)malloc(sizeof(structtry));C.str=(strucytry*)malloc(sizeof(structtry));D.str=(structry)malloc(sizeof(structtry));正確答案:C解析:由于在ANSIC中malloc函數返回的地址為void,故在調用函數時,必須利用強制類型轉換將其轉換成所需的類型。42.以下對結構體變量mix中成員x的正確引用是______。struct{intt;intx;}mix,*p;p=&mix;A.(*p).mix.xB.(*p).xC.p->mix.xD.p.mix.x正確答案:B解析:結構體變量中的成員有3種引用方式:①結構體變量名.成員名;②指針變量名->成員名:③(*指針變量名).成員名。43.設有以下語句:structst{intn;structst*next;};staticstructsta[3]={5,&a[1],7,&a[2],9,’\0’},*p;p=&a[0];則表達式的值是6的為______。A.p++->nB.p->n++C.(*p).n++D.++p->n正確答案:D解析:本題主要考查結構體變量的定義和應用,以及運算符的優(yōu)先級。44.以下程序的輸出結果是______。longfun(intn){longs;if(n==1||n==2)s=2;elses=n-fun(n-1);returns;}main(){printf(“%1d\n”,fun(3));}A.1B.2C.3D.4正確答案:A解析:本題兩次執(zhí)行fun函數,第一次執(zhí)行得f(3)=s=n-f(n-1)=3-f(2):第二次執(zhí)行得s=2,通過傳遞返回值f(2)=2,所以s=3-2=1,即f(3)=1。45.以下對C語言函數的有關描述中,正確的是______。A.在C程序中,調用函數時,只能把實參的值傳送給形參,形參的值不能傳送給實參B.函數既可以嵌套定義又可以遞歸調用C.函數必須有返回值,否則不能使用函數D.C程序中有調用關系的所有函數必須放在同一個源程序文件中正確答案:A解析:在C語言中,提供了許多庫函數供用戶使用,因此選項D錯誤。46.以下程序的輸出結果是______。fun(int**s,intp[2][3]){**s=p[1][1];}main(){inta[2][3]={1,3,5,7,9,11},*p;p=(int*)malloc(sizeof(int));fun(&p,a);printf(“%d\n”,*p);}A.1B.7C.9D.11正確答案:C47.若有以下定義和語句,則對w數組元素非法引用的是______。intw[2][3],(*pw)[3];pw=w;A.w[0]+2B.*(pw+1)[2]C.pw[0][0]D.*(pw[1]+2)正確答案:B解析:選項A表示元素w[0][2],選項C表示元素w[0][0],選項D表示元素w[1][2],而選項B中pw+1表示第2行元素的地址,(pw+1)[2]相當于(pw+1)+2,表示第4行元素的地址,顯然超出該二維數組的范圍。48.設有以下定義:char*st=“howareyou”;下列程序段中正確的是______。A.chara[11],*p;strcpy(p=a+1,&st[4]);B.chara[11];strcpy(++a,st);C.chara[11];strcpy(a,st);D.chara[],*p;srtcpy(p=&a[1],st+2);正確答案:A解析:選項A表示把st所指串的第5個字符開始的后面的元素賦值給數組a的第2個元素開始的后面元素,形式正確;選項B中出現對數組名進行自加運算,因此錯誤:選項C中st所指字符串有11個字符,再加上’\0’,有12個字符,超過數組長度,所以也是錯誤的;選項D的情況和選項C相似,也是形式正確,但超過了數組的長度。49.以下函數返回a所指數組中最小的值所在的下標值:fun(int*a,intn){inti,j=0,p;p=j;for(i=j;i<n;i++)If(a[i]<a[p])______,return(p);}在橫線處應填入的是______。A.i=pB.a[p]=a[i]C.p=jD.p=i正確答案:D解析:首先,p=0是假設數組的第1個元素為最小,然后在循環(huán)里將數組中的每一個元素a[i]與當前最小元素a[p]比較,如果前者小,那么就要更新p的值,使p=i。50.下面程序的輸出結果是______。main(){inta[]={1,2,3,4,5,6,7,8,9,0},*p;p=a;printf(“%d\n”,*(p+9));}A.0B.1C.10D.9正確答案:A解析:p指向a[0],則p+9指向a[9],*(p+9)=a[9]=0。填空題(每空2分,共30分)請將每一個空的正確答案寫在答題卡上。注意:以命令關鍵字填空的必須拼寫完整。51.一張3.5英寸軟盤大約能存儲140萬個ASCⅡ字符,若存放漢字大約能存放【】個。正確答案:70萬52.一個算法的空間復雜度是指該算法所耗費的【】。正確答案:存儲空間解析:空間復雜度是指算法在執(zhí)行過程中臨時占用的存儲空間大小,包括:①算法本身所占用的存儲空間;②算法的輸入輸出數據所占用的存儲空間;③算法在運行過程中臨時占用的存儲空間。53.當所有結點的權值都相等時,用這些結點構造的二叉排序樹是【】。正確答案:右子樹(單支樹)解析:二叉排序樹對于任意新結點,若大于等于根結點,則在右子樹上建立。54.軟件危機的核心問題是【】和軟件開發(fā)效率低。正確答案:軟件質量差解析:大約在20世紀60年代末人們在計算機軟件的開發(fā)和維護過程中,遇到了一系列嚴重問題,從而認識到軟件危機的存在。軟件危機的核心問題是軟件開發(fā)的質量太差和軟件系統(tǒng)開發(fā)的效率太低。55.棧滿時,再作入棧操作會產生【】,??諘r,刪除操作會產生【】。正確答案:上溢下溢56.程序的運行結果為【】。main(){charc1=‘a’,c2=‘b’,c3=‘c’;printf(“a%cb%c\tc%c\n”,c1,c2,c3);}正確答案:aabbcc解析:printf函數先輸出a,遇%c,接著輸出變量c1的值a,然后輸出bb,遇%t,從第9個位置開始輸出cc。57.執(zhí)行下面程序段后,k值是【】。k=1;n=263;do{k*=n%10;n/=10;}while(n);正確答案:36解析:本題循環(huán)體共執(zhí)行了3次。第一次:k=3,n=26:第二次:k=18,n=2;第三次:k=36,n=0。58.函數mystrlen(char*s)的功能是求字符串s的長度,請?zhí)羁?。mystrlen(char*s){char*t:t=s;while(【】)t++;return(t-s);}正確答案:*t解析:通過while循環(huán)掃描字符串,遇到字符‘\0’結束,并用t統(tǒng)計字符串的長度。59.在對文件進行操作的過程中,若要求文件的位置回到文件的開頭,應當調用的函數是【】函數。正確答案:rewind()或fseek()60.設有以下定義的語句:inta[3][2]={10,20,30,40,50,60},(*p)[2];p=a;則*(*(P+2)+1)值為【】。正確答案:60解析:p是指向整型數組的指針變量,p=a使得p指向數組a的第1行。p+2是數組a第3行的地址,*(p+2)是數組a第3行{50,60},其實*(p+2)為數組a第3行的首地址,*(p+2)+1為數組a第3行第2個元素

溫馨提示

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

評論

0/150

提交評論