版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
國家二級(C語言)筆試模擬試卷28(題后含答案及解析)題型有:1.選擇題2.填空題選擇題(1-10、21-40每題2分,11-20每題1分,共70分)下列各題A、B、C、D四個(gè)選項(xiàng)中,只有一個(gè)選項(xiàng)是正確的,請將正確選項(xiàng)涂寫在答題卡相應(yīng)位置上。1.?dāng)?shù)據(jù)結(jié)構(gòu)作為計(jì)算機(jī)的一門學(xué)科,主要研究數(shù)據(jù)的邏輯結(jié)構(gòu)、對各種數(shù)據(jù)結(jié)構(gòu)進(jìn)行的運(yùn)算以及()。A.?dāng)?shù)據(jù)的存儲結(jié)構(gòu)B.計(jì)算方法C.?dāng)?shù)據(jù)映象D.邏輯存儲正確答案:A解析:數(shù)據(jù)結(jié)構(gòu)是研究數(shù)據(jù)元素及其之間的相互關(guān)系和數(shù)據(jù)運(yùn)算的一門學(xué)科,它包含三個(gè)方面的內(nèi)容,即數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)和數(shù)據(jù)的運(yùn)算。2.串的長度是()。A.串中不同字符的個(gè)數(shù)B.串中不同字母的個(gè)數(shù)C.串中所含字符的個(gè)數(shù)且字符個(gè)數(shù)大于0D.串中所含字符的個(gè)數(shù)正確答案:D解析:串的長度是指串中字符的個(gè)數(shù),且其字符個(gè)數(shù)可以為0。3.在計(jì)算機(jī)中,算法是指()。A.加工方法B.解題方案的準(zhǔn)確而完整的描述C.排序方法D.查詢方法正確答案:B解析:計(jì)算機(jī)算法是指解題方案的準(zhǔn)確而完整的描述,它有以下幾個(gè)基本特征:可行性、確定性、有窮性和擁有足夠的情報(bào)。4.以下不屬于面向?qū)ο蟮幕咎攸c(diǎn)的是()。A.分類性B.多態(tài)性C.繼承性D.封裝性正確答案:A解析:封裝性、繼承性、多態(tài)性是面向?qū)ο蟮娜筇攸c(diǎn)。5.開發(fā)軟件所需高成本和產(chǎn)品的低質(zhì)量之間有著尖銳的矛盾,這種現(xiàn)象稱作()。A.軟件投機(jī)B.軟件危機(jī)C.軟件工程D.軟件產(chǎn)生正確答案:B解析:軟件工程概念的出現(xiàn)源自軟件危機(jī)。所謂軟件危機(jī)是泛指在計(jì)算機(jī)軟件的開發(fā)和維護(hù)過程中所遇到的一系列嚴(yán)重問題。總之,可以將軟件危機(jī)歸結(jié)為成本、質(zhì)量、生產(chǎn)率等問題。6.下面不屬于軟件設(shè)計(jì)原則的是()。A.抽象B.模塊化C.自底向上D.信息隱蔽正確答案:C解析:軟件設(shè)計(jì)遵循軟件工程的基本目標(biāo)和原則,建立了適用于在軟件設(shè)計(jì)中應(yīng)該遵循的基本原理和與軟件設(shè)計(jì)有關(guān)的概念,它們是抽象、模塊化、信息隱蔽和數(shù)據(jù)獨(dú)立性。自底向上是集成測試中增量測試的一種。7.開發(fā)大型軟件時(shí),產(chǎn)生困難的根本原因是()。A.大系統(tǒng)的復(fù)雜性B.人員知識不足C.客觀世界千變?nèi)f化D.時(shí)間緊、任務(wù)重正確答案:A解析:軟件的顯著特點(diǎn)是規(guī)模龐大,復(fù)雜度超線性增長。在開發(fā)大型軟件時(shí),要保證高質(zhì)量極端復(fù)雜困難,不僅涉及技術(shù)問題,更重要的是必須要有嚴(yán)格而科學(xué)的管理。8.下列SQL語句中,用于修改表結(jié)構(gòu)的是()。A.ALTERB.CREATEC.UPDATED.INSERT正確答案:A解析:在SQL語句中,創(chuàng)建用CREATE,刪除用DROP,改變用ALTER,后面跟類型和名字,附加子句。9.?dāng)?shù)據(jù)庫、數(shù)據(jù)庫系統(tǒng)和數(shù)據(jù)庫管理系統(tǒng)之間的關(guān)系是()。A.?dāng)?shù)據(jù)庫包括數(shù)據(jù)庫系統(tǒng)和數(shù)據(jù)庫管理系統(tǒng)B.?dāng)?shù)據(jù)庫系統(tǒng)包括數(shù)據(jù)庫和數(shù)據(jù)庫管理系統(tǒng)C.?dāng)?shù)據(jù)庫管理系統(tǒng)包括數(shù)據(jù)庫和數(shù)據(jù)庫系統(tǒng)D.三者沒有明顯的包含關(guān)系正確答案:B解析:數(shù)據(jù)庫系統(tǒng)包括數(shù)據(jù)庫和數(shù)據(jù)庫管理系統(tǒng)。10.關(guān)系模型允許定義三類數(shù)據(jù)約束,下列不屬于數(shù)據(jù)約束的是()。A.實(shí)體完整性約束B.參照完整性約束C.域完整性約束D.用戶自定義的完整性約束正確答案:C解析:關(guān)系模型允許定義三類數(shù)據(jù)約束,它們是實(shí)體完整性約束、參照完整性約束及用戶自定義的完整性約束。前兩種完整性約束由關(guān)系數(shù)據(jù)庫系統(tǒng)支持,用戶自定義的完整性約束則由關(guān)系數(shù)據(jù)庫系統(tǒng)提供完整性約束語言,用戶利用該語言給出約束條件,運(yùn)行時(shí)由系統(tǒng)自動檢查。11.下列選項(xiàng)中,不能用作標(biāo)識符的是()。A._1234_B._1_2C.int_2_D.2_int_正確答案:D解析:標(biāo)識符只能由字母、數(shù)字和下劃線三種字符組成,且第一個(gè)字符必須為字母或下劃線。12.以下定義語句中正確的是()。A.chara=‘A‘b=‘B’;B.floata=b=10.0;C.inta=10,*b=&a;D.float*a,b=&a;正確答案:C解析:選項(xiàng)A)中,字符型變量a,b中間缺少逗號;如果對幾個(gè)變量賦以同一個(gè)初值,不能在定義變量時(shí)進(jìn)行,應(yīng)寫成:floata=10.0,b=10.0;所以選項(xiàng)B)不正確;選項(xiàng)D)中,執(zhí)行b=&a相當(dāng)于將地址轉(zhuǎn)換成了浮點(diǎn)型,編譯時(shí)將提示出錯(cuò)信息“無效的類型轉(zhuǎn)換”,所以選項(xiàng)D)不正確。13.程序中對fun函數(shù)有如下說明:void*fun();此說明的含義是()。A.fun函數(shù)無返回值B.fun函數(shù)的返回值可以是任意的數(shù)據(jù)類型C.fun函數(shù)的返回值是無值型的指針類型D.指針fun指向一個(gè)函數(shù),該函數(shù)無返回值正確答案:C解析:運(yùn)算符中,()的優(yōu)先級高于。,所以由void*fun()聲明的函數(shù)。fun(),其返回值是指向無值型變量的指針,故本題答案為選項(xiàng)C)。14.與十進(jìn)制數(shù)200等值的十六進(jìn)制數(shù)為();A.A8B.A4C.C8D.C4正確答案:C解析:將十進(jìn)制數(shù)200轉(zhuǎn)換為十六進(jìn)制數(shù)的方法是用200除以16,取余數(shù),再用商除以16,取余數(shù),以此類推,最后用所有余數(shù)組成十六進(jìn)制數(shù)。所以,結(jié)果為C8。15.以下程序的功能是:建立一個(gè)帶有頭結(jié)點(diǎn)的單向鏈表,并將存儲在數(shù)組中的字符依次轉(zhuǎn)存到鏈表的各個(gè)結(jié)點(diǎn)中,請為下劃線處選擇正確的選項(xiàng)。#include<stdlib.h>stuctnodechardata;structnode*next;};()CreatList(char*s)struetnode*h,*p,*q;h=(struetnode*)ma]loc(sizeof(structnode));p=q=h;while(*s!=‘\0’)p=(structnode*)ma]loc(sizeof(structnode));p->data=*s;q->next=p;q=p;s++;}p->next=‘\0’;returnhmain()charstr[]=“l(fā)inklist”;struetnode*head;head=CreatList(str);A.char*B.struetnodeC.structnode*D.char正確答案:C解析:本題要求建立一個(gè)structnode類型的數(shù)據(jù)鏈表,從main函數(shù)可知,h是“頭指針”變量,它指向所建立的表的第一個(gè)數(shù)據(jù),函數(shù)的類型應(yīng)該與h的類型一致,所以應(yīng)該填streetnode*。16.有以下程序:#include<stdio.h>main(){intm=3,n=4,x;x=-m++;x=x+8/++n;prinff(“%d\n”,x);}程序運(yùn)行后的輸出結(jié)果是()。A.3B.5C.-1D.-2正確答案:D解析:程序中x=-m++執(zhí)行后x=-3,執(zhí)行x=x+8/++n相當(dāng)于執(zhí)行x=-3+8/5,即n先增加1,再代入表達(dá)式運(yùn)算,結(jié)果為-2。17.有以下程序:#include<stdio.h>main(){chara:’a’,b;printf(“%c,”,++a);printf(“%c\n”,b=a++);}程序運(yùn)行后的輸出結(jié)果是()。A.b,bB.b,cC.a(chǎn),bD.a(chǎn),c正確答案:A解析:程序中pdntf(“%c”,++a)是先將a加1,再輸a,因此輸出的是’b’,而pfintf(“%c\n”,b=a++)是先將a的值賦給b,a再加1,所以輸出的也是’b’。18.結(jié)構(gòu)化程序由三種基本結(jié)構(gòu)組成,三種基本結(jié)構(gòu)組成的算法()。A.可以完成任何復(fù)雜的任務(wù)B.只能完成部分復(fù)雜的任務(wù)C.只能完成符合結(jié)構(gòu)化的任務(wù)D.只能完成一些簡單的任務(wù)正確答案:C解析:C語言的算法由三種基本結(jié)構(gòu)(順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu))組成,用三種基本結(jié)構(gòu)組成的程序是結(jié)構(gòu)化的程序,結(jié)構(gòu)化的程序完成的是符合結(jié)構(gòu)化的任務(wù)。19.有以下程序:#include<stdio.h>main(){intx[]={1,3,5,7,2,4,6,0},i,j,k;for(i=0;i<3;i++)for(j=2;j>=i;j—)if(x[j+1]>x[j]){k=x[j];x[j]=x[j+1];x[j+1]=k;}for(i=0;i<3;i++)for(j=4;j<7-i;j++)if(x[j]>x[j+1]){k=x[j];x[j]=x[j+1];x[j+1]=k;}for(i=0;i<8;i++)printf(“%d”,x[i]);prinff(“\n”);}程序運(yùn)行后的輸出結(jié)果是()。A.75310246B.1234567C.76310462D.13570246正確答案:A解析:本題考查的是排序算法。for(i=0;i<3;i++)for(j=2;j>i;j--)if(x[j+1],x[j]){k=x[j];x[j];x[j+1);x[j+1]=k;}該段程序的作用是將數(shù)組元素x[0]~x[3]中的數(shù)由大到小排列,得到x[]{7,5,3,1,2,4,6,0}。for(i=0;i<3;i++)for(j=4;j<7-i;j++)if(x[j]>x[j+1]){k=x[j];x[j]=x[j+1];x[j+1]=k;}該段程序的作用是將數(shù)組元素x[4]~x[7]中的數(shù)由小到大排列,得到x[]={7,5,3,1,0,2,4,6}。因此輸出結(jié)果為75310246。20.有定義語句doublda,b;intw;longc;若各變量已正確賦值,則下列選項(xiàng)中正確的表達(dá)式是()。A.a(chǎn)=a+b=b++B.w%((int)a+b)C.(c+w)%(int)aD.w=a==b;正確答案:C解析:賦值運(yùn)算符的左邊只能是變量,不能是表達(dá)式,選項(xiàng)A)錯(cuò)誤;由于“%”兩邊表達(dá)式值的類型必須為整型,所以選項(xiàng)B)錯(cuò)誤;題目要求的是正確的表達(dá)式,而表達(dá)式后面不能有“;”,選項(xiàng)D)錯(cuò)誤。21.對表達(dá)式for(表達(dá)式1;;表達(dá)式3)可理解為()。A.for(表達(dá)式1;0;表達(dá)式3)B.for(表達(dá)式1;1;表達(dá)式3)C.for(表達(dá)式1;表達(dá)式1;表達(dá)式3)D.for(表達(dá)式1;表達(dá)式3;表達(dá)式3)正確答案:B解析:本題中,省略了for語句的第二個(gè)表達(dá)式,表示第二個(gè)表達(dá)式始終為真,即為1。22.以下程序的輸出結(jié)果是()。#include<stdio.h>main(){inta,i;a=0;for(i=1;i<5;i++){switch(i){case0:case3:a+=2;case1:case2:a+=3;default:a+=5;}}printf(“%d\n”,a);}A.31B.13C.10D.20正確答案:A解析:多分支選擇switch語句的一般形式為:switch(表達(dá)式){case常量表達(dá)式1:語句1;case常量表達(dá)式2:語句2;┆case常量表達(dá)式n:語句n;default:語句n+1;}其語義是:計(jì)算表達(dá)式的值,并逐個(gè)與其后的常量表達(dá)式值相比較,當(dāng)表達(dá)式的值與某個(gè)常量表達(dá)式的值相等時(shí),即執(zhí)行其后的語句,不再進(jìn)行判斷,繼續(xù)執(zhí)行后面所有case后的語句。如果表達(dá)式的值與所有case后的常量表達(dá)式均不相同時(shí),則執(zhí)行default后的語句。23.若有如下語句:intx=3;do{printf(“%d\n”,x-=2);}wbile(!(--x));則上面程序段()。A.輸出的是1B.輸出的是1和-2C.輸出的是3和0D.是死循環(huán)正確答案:B解析:do-while語句的一般格式為:do{循環(huán)體語句}while(表達(dá)式);先執(zhí)行循環(huán)體語句一次,再判斷表達(dá)式的值,若值為真,則繼續(xù)執(zhí)行循環(huán),否則終止循環(huán)。本題中,先執(zhí)行printf(“%d\n”,x-=2),值為x=x-2,即為1。然后判斷表達(dá)式的值,!(--x)為真,x=0,繼續(xù)循環(huán)。再次執(zhí)行循環(huán)體語句后,x=-2,此時(shí)表達(dá)式!(--x)的值為0,結(jié)束循環(huán)。24.判斷char型變量cl是否為大寫字母的正確表達(dá)式是()。A.’A’<=cl<=‘Z’B.(cl>=A)&&(cl<=Z)C.(‘A’>=cl)||(‘Z’<=cl)D.(cl>=‘A’)&&(cl<=‘Z’)正確答案:D解析:字符型數(shù)據(jù)在計(jì)算機(jī)內(nèi)部是以ASCII碼存儲的,英文大寫字母和小寫字母在ASCII碼表中都是連續(xù)的。大寫字母A到Z是從65到90,所以只要變量c1大于A并且小于Z就能保證其為大寫字母。A)、C)表示形式錯(cuò)誤,B)的字符A、Z沒有用單引號括起來。25.下面程序的功能是將從鍵盤輸入的兩個(gè)數(shù)由小到大排序輸出,當(dāng)輸入一對相等數(shù)時(shí)結(jié)束循環(huán)。請選擇填空。#include<stdio.h>main(){inta,b,t;scanf(“%d%d”,&a,&b);while(______)}if(a>b){t=a;a=b;b=t;}printf(“%d,%d\n”,a,b);scanf(“%d%d”,&a,&b);}}A.!a=bB.a(chǎn)!=bC.a(chǎn)==bD.a(chǎn)=b正確答案:B解析:根據(jù)本題提出的條件可知,控制循環(huán)的表達(dá)式應(yīng)該是所輸入的兩數(shù)互不相等(相等時(shí)結(jié)束循環(huán)),也即只有滿足這一條件時(shí),才對兩數(shù)進(jìn)行排序輸出操作,由此得出循環(huán)的控制表達(dá)式應(yīng)該為a!=b。26.以下對C語言函數(shù)的有關(guān)描述中,正確的是()。A.在C語言中調(diào)用函數(shù)時(shí),只能把實(shí)參的值傳給形參,形參的值不能傳送給實(shí)參B.C函數(shù)既可以嵌套定義又可以遞歸調(diào)用C.函數(shù)必須有返回值,否則不能使用函數(shù)D.函數(shù)必須有返回值,返回值類型不定正確答案:A解析:C語言中的函數(shù)可以進(jìn)行遞歸調(diào)用,但不能在函數(shù)中定義函數(shù),即函數(shù)不能嵌套定義。函數(shù)可以沒有返回值,若有返回值,則返回值類型必須確定。27.有以下程序:#include<stdio.h>voidfun(inta,intb,intc){a=456,b=567,c=678;}main(){intx=10,y=20,z=30;fun(x,y,z);printf(“%d,%d,%d\n”,x,y,z);}此程序的輸出結(jié)果是()。A.30,20,10B.10,20,30C.456,567,678D.678,567,456正確答案:B解析:本題考查函數(shù)中變量的作用范圍,在主函數(shù)中給變量x,y,z賦值,然后將其作為實(shí)參傳遞給函數(shù)fun,在函數(shù)fun中雖然改變了這三個(gè)變量的值,但兩個(gè)函數(shù)中的x,y,z只是同名的局部變量,互不影響,所以調(diào)用函數(shù)fun后,主函數(shù)中x,y,z的值并未改變,即變量作形參時(shí),其值的改變不能影響實(shí)參的值。28.有如下程序段:int*p,a=10,b=1;p=&a;a=*p+b;執(zhí)行該程序段后,a的值為()。A.12B.11C.10D.編譯出錯(cuò)正確答案:B解析:p=&a表達(dá)式的含義是將變量a的地址賦給指針變量p;a=*p+b表達(dá)式的含義是指針變量p所指內(nèi)存的值10與b的和賦給a。29.有如下說明:inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;則數(shù)值為9的表達(dá)式是()。A.*p+9B.*(p+8)C.*p+=9D.p+8正確答案:B解析:數(shù)組元素a[0]可以用表達(dá)式。(p+0),即*p來引用;數(shù)組元素a[1]可以用表達(dá)式*(p+1)來引用,在這里,p+1的值就是數(shù)組元素a[1]的地址,*(p+1)就代表存儲單元a[1],這里的一對圓括號不可少。同樣,數(shù)組元素a[9]可以用表達(dá)式。(p+9)引用。因此,當(dāng)指針變量p指向a數(shù)組的起始地址時(shí),若0≤i<10,則數(shù)組元素a[i]可以用*(p+i)來表示。30.以下程序調(diào)用scanf函數(shù)給變量a輸入數(shù)值的方法是錯(cuò)誤的,其錯(cuò)誤原因是()。#include<stdio.h>main(){int*p,*q,a,b;p=&a;printf(“inputa:”);scanf(“%d”,*p);}A.*p表示的是指針變量p的地址B.*p表示的是變量a的值,而不是變量a的地址C.*p表示的是指針變量p的值D.*p只能用來說明p是一個(gè)指針變量正確答案:B解析:本題經(jīng)過定義語句和賦值后,p表示的是變量a的地址,*p表示的是變量a的值。31.對以下說明語句的正確理解是()。inta[10]={6,7,8,9,10};A.將5個(gè)初值依次賦給a[1]至a[5]B.將5個(gè)初值依次賦給a[0]至a[4]C.將5個(gè)初值依次賦給a[6]至a[10]D.因?yàn)閿?shù)組長度與初值的個(gè)數(shù)不相同,所以此語句不正確正確答案:B解析:本題中,表達(dá)式將5個(gè)初值分別賦給a[0]至a[4],系統(tǒng)自動給后面的元素a[5]至a[9]賦0。32.若有說明:inta[][4]={0,0};則下面不正確的敘述是()。A.?dāng)?shù)組a的每個(gè)元素都可得到初值0B.二維數(shù)組a的第一維大小為1C.當(dāng)初值的個(gè)數(shù)能被第二維的常量表達(dá)式的值除盡時(shí),所得商數(shù)就是第一維的大小D.只有元素a[0][0]和a[0][1]可得到初值,其余元素均得不到確定的初值正確答案:D解析:本題考查二維數(shù)組的基本概念。對于二維數(shù)組,只可以省略第一個(gè)括號中的常量表達(dá)式,而不能省略第二個(gè)括號中的常量表達(dá)式。數(shù)組中未賦初值的元素系統(tǒng)會自動對它們賦初值0。33.有以下程序:#include<stdio.h>#include<string.h>main(){chara[]={‘a(chǎn)’,’b’,’c’,’d’,’e’,’f’,’g’,’h’,’\0’};inti,j;i=sizeof(a);j=strlen(a);printf(“%d,%d\n”,i,j);}程序運(yùn)行后的輸出結(jié)果是()。A.9,9B.8,9C.1,8D.9,8正確答案:D解析:sizeof是求字節(jié)運(yùn)算符,在字符數(shù)組a中,“\0”也作為字節(jié)保存,是a數(shù)組的一個(gè)成員,所以sizeof(a)的值應(yīng)為9;strlen是測試字符串長度的函數(shù),函數(shù)的值為字符串中的實(shí)際長度,不包括“\0”在內(nèi),所以strlen(a)的值為8。34.假定int類型變量占用兩個(gè)字節(jié),若有定義:intx[10]={0,2,4};則數(shù)組x在內(nèi)存中所占字節(jié)數(shù)是()。A.3B.6C.10D.20正確答案:D解析:x數(shù)組共有10個(gè)元素,在花括號內(nèi)只提供3個(gè)初值,這表示只給前面的3個(gè)元素賦值,后7個(gè)元素的值為0,所以,一共有20個(gè)字節(jié)。35.已知學(xué)生記錄描述為:structstudent{intno;charname[20],sex;struct{intyear,month,day;}birth;};structstudents;設(shè)變量s中的“生日”是“1984年11月12日”,對“birth”正確賦值的程序段是()。A.year=1984;month=11;day=12;B.s.year=1984;s.month=11;s.day=12;C.birth.year=1984;birth.month=11;birth.day=12;D.s.birth.year=1984;s.birth.month=11;s.birth.day=12;正確答案:D解析:本題考查結(jié)構(gòu)體變量的基本概念。引用結(jié)構(gòu)體成員的方式為:結(jié)構(gòu)體變量名.成員名“.”是“成員運(yùn)算符”(分量運(yùn)算符),如果成員本身又是一個(gè)結(jié)構(gòu)體類型,則要用若干個(gè)成員運(yùn)算符,一級一級地找到最低一級的成員。只能對最低級的成員進(jìn)行賦值或存取以及運(yùn)算,所以選項(xiàng)D)正確。36.以下程序的運(yùn)行結(jié)果是()。#include<stdio.h>#defineMIN(x,y)(x)<(y)?(x):(y)main(){inti=10,j=15,k;k=10*MIN(i,j);printf(“%d\n”,k);}A.10B.15C.100D.150正確答案:B解析:該題考查函數(shù)的宏定義及三目運(yùn)算符。表達(dá)式10*MIN(i,j)利用宏展開后為:10*i<j?i:j,即100<15?10:15,其值為15,然后將15賦給k。37.有如下程序:#include<stdio.h>intfunc(inta,intb){return(a+b):}main(){intx=2,y=5,z=8,r;r=func(func(x,y),z);printf(“%d\n”,r);}該程序的輸出結(jié)果是()。A.12B.13C.14D.15正確答案:D解析:在表達(dá)式r=func(func(x,y),z)中,func(x,y)是第一次調(diào)用函數(shù),它的返回值7作為func函數(shù)第二次調(diào)用的實(shí)參,結(jié)果為15。38.設(shè)有以下說明語句:typedefstruct{intn;charch[8];}PER;則下面敘述中正確的是()。A.PER是結(jié)構(gòu)體變量名B.PER是結(jié)構(gòu)體類型名C.typedefstruct是結(jié)構(gòu)體類型D.struct是結(jié)構(gòu)體類型名正確答案:B解析:本題用typedef聲明新的類型名PER來代替已有的類型名,PER代表上面指定的一個(gè)結(jié)構(gòu)體類型,此時(shí),也可以用PER來定義變量。39.有如下定義:structperson{charname[9];intage;};structpersonclass[10]={“John”,17,”paul”,19,”Mary”,18,”Adam”,16};根據(jù)上述定義,能輸出字母M的語句是()。A.printf(“%c\n”,class[3].name);B.printf(“%c\n”,class[3].name[1]);C.printf(“%c\n”,class[2].name[1]);D.printf(“%c\n”,class[2].name[0]);正確答案:D解析:本題的關(guān)鍵是弄清楚給結(jié)構(gòu)體數(shù)組賦初值的問題。初始值將按數(shù)組的各個(gè)元素在內(nèi)存中的存放次序逐個(gè)地賦給各元素。結(jié)構(gòu)體數(shù)組的各個(gè)元素在內(nèi)存中的存放次序是:class[0].name,class[0].age,class[1].name,class[1].age,…,由此可知,包含字符“M”的字符串“Mary”賦值給了元素class[2].name,則與字符“M”相對應(yīng)的表達(dá)式是class[2].name[0]。40.以下程序執(zhí)行后x的值是()。#include<stdio.h>main(){intx,y=252,i=386,*m=&y,*z=&i;x=(z==m);printf(“%d”,x);}A.252B.1C.0D.運(yùn)行時(shí)出錯(cuò),x無定值正確答案:C解析:指針變量m和z分別指向整型變量y,i,所以這兩個(gè)指針變量中存儲的地址是不同的,變量x接受的是一個(gè)關(guān)系運(yùn)算結(jié)果0(因?yàn)閙和z兩個(gè)地址是不同的),所以x為0。41.閱讀下列程序,當(dāng)運(yùn)行程序時(shí),輸入asdafaaz67,則輸出為()。#include<sldio.h>intfun(char*str){inti,j=0;for(i=0;str[i]!=‘\0’;i++)if(str[i]!=“)str[j++]=str[i];str[j]=‘\0’;}main(){charstr[81];intn;printf(“Inputastring:”);gets(str);fun(str);printf(“%s\n”,str);}A.a(chǎn)sdafaaz67B.a(chǎn)sdafaaz67C.a(chǎn)sdD.z67正確答案:A解析:本題題意是刪除字符串中所有空格。由于C語言中沒有直接刪除字符的操作,所以刪除字符的操作都是采用“留下”字符的算法來實(shí)現(xiàn)。從串頭str[0]到串尾逐一比較,判斷其是否為空格,若不是空格,則將其保存在str[j]中,最后加串結(jié)束符“\0”。42.下列程序的輸出結(jié)果是()。#include<stdio.h>structabc{inta,b,c,s;};main(){structabcs[2]={{1,2,3},{4,5,6}};intt;t=s[0].a+s[1].b;printf(“%d\n”,t);}A.5B.6C.7D.8正確答案:B解析:在本題中,s[0].a=1,s[1].b=5,所以輸出結(jié)果為6。43.有以下函數(shù):fun(char*p){returnp;}該函數(shù)的返回值是()。A.無確切值B.形參p中存放的地址值C.一個(gè)臨時(shí)存儲單元的地址D.形參p自身的地址值正確答案:B解析:return中返回的是指針p的值,也就是形參p中存放的地址值。44.若有定義: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;strcpy(p=&a[1],st+2);正確答案:A解析:C語言不能用賦值語句將一個(gè)字符串常量或字符數(shù)組直接給一個(gè)字符數(shù)組,例如,已定義字符數(shù)組str1和str2,那么str1=“China”和str1=str2都是錯(cuò)誤的。通常使用strcpy函數(shù)進(jìn)行字符串的賦值,例如:strcpy(str1,”China”)或strcpy(str1,str2)。需要注意的是,字符數(shù)組str1的長度不應(yīng)小于字符串“China”或字符數(shù)組str2的長度,函數(shù)strcpy的第一個(gè)參數(shù)必須用數(shù)組名的形式,如str1,第二個(gè)參數(shù)可以是字符數(shù)組名,也可以是字符串常量。45.下列程序的運(yùn)行結(jié)果是()。#include<stdio.h>voidfun(int*a,int*b){int*k;k=a;a=b;b=k;}main(){inta=3,b=6,*x=&a,*y=&b;fun(x,y);printf(“%d%d”,a,b);A.63B.36C.編譯出錯(cuò)D.00正確答案:B解析:程序看上去是要實(shí)現(xiàn)交換兩個(gè)指針的值,但是C語言中實(shí)參變量和形參變量之間的數(shù)據(jù)傳遞是單向的“值傳遞”,指針變量做函數(shù)參數(shù)也要遵循這一規(guī)則。調(diào)用函數(shù)不能企圖通過改變形參指針的值而使實(shí)參指針的值也改變。所以本題的輸出結(jié)果是36。46.表達(dá)式a<b||(c&d)中運(yùn)算符優(yōu)先級最高的是()。A.||B.&C.<D.()正確答案:D解析:括號的優(yōu)先級最高。47.fwrite函數(shù)的一般調(diào)用形式是()。A.fwrite(buffer,count,size,fp);B.fwrite(fp,size,count,buffer);C.fwrite(fp,count,size,buffer);D.fwrite(buffer,size,count,fp);正確答案:D解析:fwrite的形式是fwrite(buffer,size,count,fp),buffer是準(zhǔn)備輸出的數(shù)據(jù)塊的起始地址,size是每個(gè)數(shù)據(jù)塊的字節(jié)數(shù),count用來指定每寫一次或輸出的數(shù)據(jù)塊,fp為文件指針。48.C語言中,文件組成的基本單位為()。A.記錄B.?dāng)?shù)據(jù)行C.?dāng)?shù)據(jù)塊D.字符序列正確答案:D解析:C語言處理文件的方法是將文件以數(shù)據(jù)流的形式處理,不是將文件作為一個(gè)結(jié)構(gòu)集合來處理,所以,C語言中文件的組織方式是無結(jié)構(gòu)的字符序列方式。49.請選出下面正確的程序段()。A.int*s;scanf(“%d”,s);┆B.int*s,k;*s=100;┆C.int*s,k;char*p,c;s=&k;p=&c;*p=‘a(chǎn)’;┆D.int*s,k;char*p,c;s=&k;p=&c;s=p;*s=1;┆正確答案:C解析:本題的選項(xiàng)A)和B)犯了一個(gè)同樣的錯(cuò)誤,即指針變量s定義后并沒有指向具體的變量。也就是說,s中沒有確定的地址值,它的值是不可預(yù)見的,所指向的單元也是不可預(yù)見的,因此不能進(jìn)行賦值操作。另外,在選項(xiàng)D)中,s是int型指針變量,p是char型指針變量,指向的內(nèi)存單元所占用的字節(jié)數(shù)是不同的,因而不能將字符指針變量p的值賦給整型指針變量s。50.若有下面的說明和定義,則sizeof(structaa)的值是()。structaa{intr1;doubler2;floatr3;unionuu{charu1[5];longu2[2];}ua;}mya;A.30B.29C.24D.22正確答案:D解析:structaa的字節(jié)數(shù)等于結(jié)構(gòu)體中除共用體的成員所占存儲單元之和+共用體的長度,所以計(jì)算結(jié)果為2+8+4+8=22。填空題(每空2分,共30分)請將每一個(gè)空的正確答案寫在答題卡上。注意:以命令關(guān)鍵字填空的必須拼寫完整。51.?dāng)?shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)與存儲結(jié)構(gòu),線性鏈表屬于【】。正確答案:存儲結(jié)構(gòu)解析:數(shù)據(jù)的邏輯結(jié)構(gòu)是指反映數(shù)據(jù)元素之間邏輯關(guān)系的數(shù)據(jù)結(jié)構(gòu);數(shù)據(jù)的存儲結(jié)構(gòu)是指數(shù)據(jù)的邏輯結(jié)構(gòu)在計(jì)算機(jī)存儲空間中的存放形式。在數(shù)據(jù)的存儲結(jié)構(gòu)中,不僅要存放各數(shù)據(jù)元素的信息,還需要存放各數(shù)據(jù)元素之間的前后件關(guān)系的信息。52.在面向?qū)ο蠓椒ㄖ?,類之間共享屬性和操作的機(jī)制稱為【】。正確答案:繼承解析:類是面向?qū)ο笳Z言中必備的程序語言結(jié)構(gòu),用來實(shí)現(xiàn)抽象數(shù)據(jù)類型。類與類之間的繼承關(guān)系實(shí)現(xiàn)了類之間的共享屬性和操作,一個(gè)類可以在另一個(gè)已定義的類的基礎(chǔ)上定義,這樣使該類型繼承了其超類的屬性和方法,當(dāng)然,也可以定義自己的屬性和方法。53.耦合和內(nèi)聚是評價(jià)模塊獨(dú)立性的兩個(gè)主要標(biāo)準(zhǔn),其中【】反映了模塊內(nèi)各成分之間的聯(lián)系。正確答案:內(nèi)聚解析:內(nèi)聚性是一個(gè)模塊內(nèi)部各個(gè)元素間彼此結(jié)合的緊密程度的度量,內(nèi)聚是從功能角度來度量模塊內(nèi)的聯(lián)系;耦合性是模塊間互相連接的緊密程度的度量。54.一個(gè)項(xiàng)目有一個(gè)項(xiàng)目主管,一個(gè)項(xiàng)目主管可管理多個(gè)項(xiàng)目,則實(shí)體“項(xiàng)目主管”與實(shí)體“項(xiàng)目”的聯(lián)系屬于【】的聯(lián)系。正確答案:一對多或1:N解析:兩個(gè)實(shí)體集間的聯(lián)系實(shí)際上是實(shí)體集間的函數(shù)關(guān)系,這種函數(shù)關(guān)系可以有三種,即一對一(1:1)的聯(lián)系、一對多(1:N)或多對一(N:1)的聯(lián)系和多對多(N:N)的聯(lián)系。55.?dāng)?shù)據(jù)庫設(shè)計(jì)分為以下六個(gè)設(shè)計(jì)階段:需求分析階段、【】、邏輯設(shè)計(jì)階段、物理設(shè)計(jì)階段、實(shí)施階段、運(yùn)行和維護(hù)階段。正確答案:概念設(shè)計(jì)階段解析:數(shù)據(jù)庫設(shè)計(jì)分為以下六個(gè)設(shè)計(jì)階段:需求分析階段、概念設(shè)計(jì)階段、邏輯設(shè)計(jì)階段、物理設(shè)計(jì)階段、實(shí)施階段及數(shù)據(jù)庫運(yùn)行和維護(hù)階段。56.設(shè)y是int型變量,請寫出y為奇數(shù)的關(guān)系表達(dá)式【】。正確答案:(y%2)==1或(y%2)!=057.設(shè)inta=5,b=6,表達(dá)式(++a==b--)?++a:--b的值是【】。正確答案:7解析:此表達(dá)式由三目運(yùn)算符連接,進(jìn)行++a==b--中的“==”運(yùn)算時(shí),++a的值為6,b--的值為6,則整個(gè)表達(dá)式的值為++a的值,++a的值為7。這里要注意前綴++,--和后綴++,--的區(qū)別。58.下列程序的輸出結(jié)果是【】。#include<stdio.h>main(){charb[]=“Helloyou”;b[5]=0;printf(“%s\n”,b);}正確答案:Hello解析:語句b[5]=0;相當(dāng)于語句b[5]=“\0”;且”\0”為字符串結(jié)束標(biāo)志,輸出時(shí)遇到“\0”就停止輸出。59.當(dāng)調(diào)用函數(shù)時(shí),實(shí)參是一個(gè)數(shù)組名,則向函數(shù)傳遞的是【】。正確答案:數(shù)組的首地址解析:在函數(shù)中,可以通過指針變量來引用調(diào)用函數(shù)中對應(yīng)的數(shù)組元素,此操作是通過傳遞數(shù)組的首地址來實(shí)現(xiàn)的。60.以下程序段的輸出結(jié)果是【】。inta=1234;printf(“%2d\n”,a);正確答案:1234解析:在%與格式符之間插入一個(gè)整型數(shù)來指定輸出寬度,當(dāng)指定寬度小于輸出數(shù)的實(shí)際寬度時(shí),則按實(shí)際寬度輸出。61.用高級語言編寫的程序稱為【】程序,它可以通過解釋程序翻譯一句執(zhí)行一句的方式執(zhí)行,也可以通過編譯程序一次翻譯產(chǎn)生目標(biāo)程序,然后執(zhí)行。正確答案:源程序解析:用高級語言編寫的程序稱為源程序。源程序不能在計(jì)算機(jī)上直接運(yùn)行,運(yùn)行源程序有兩種方式:一種是通過解釋程序,對源程序逐句解釋執(zhí)行;另一種是先讓編譯程序?qū)⒃闯绦蛞淮畏g產(chǎn)生目標(biāo)程序(目標(biāo)程序是計(jì)算機(jī)可直接執(zhí)行的機(jī)器語言程序,是一種二進(jìn)制代碼程序),然后執(zhí)行目標(biāo)程序。62.以下程序的輸出結(jié)果是【】。#include<stdio.h>main(){inta=0;a+=(a=8);printf(“%d\n”,a);}正確答案:16解析:本題中a+=8相當(dāng)于a=a+8。對表達(dá)式逐步進(jìn)行求解:在a+=(a=8)中,首先a被賦值為8,語句等價(jià)于a+=8;即a=a+8;結(jié)果為a=16。63.下列程序的運(yùn)行結(jié)果是【】。#include<stdio.h>#defineM100voidfun(intm,int*a,int*n){inti,j=0;for(i=1;i<=m;i++)if(i%7==0||i%11==0)a[j++]=i;*n=j;}main(){intaa[M],n,k;fun(10,aa,&n);for(k=0;k<n;k++)if((k+1)%20==0)printf(“\n”);elseprintf(“%4d”,aa[k]);printf(“\n”);}正確答案:7解析:程序中的if(i%7==0||i%11==0)是找出能被7或11整除的所有整數(shù),a[j++]=i是將滿足條件的數(shù)放到a數(shù)組中,變量j記錄了滿足條件的數(shù)據(jù)個(gè)數(shù),main函數(shù)通過變量n得到此數(shù)據(jù)個(gè)數(shù)。如果m的值為50,即表達(dá)式fun(10,aa,&n)為fun(50,aa,&n)時(shí),輸出結(jié)果為:71114212228333542444964.下列程序的功能是:求出ss所指字符串中指定字符的個(gè)數(shù),并返回此值。例如,若輸入字符串123412132,指定字符1,則輸出3。請?zhí)羁铡?include<stdio.h)#deftneM81intfun(char*ss,ch
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《工程設(shè)備復(fù)習(xí)》課件
- 心電信號識別技術(shù)-洞察分析
- 文物保護(hù)國際合作與交流-洞察分析
- 文本轉(zhuǎn)換的語義依賴規(guī)則研究-洞察分析
- 形式化方法在中綴轉(zhuǎn)后綴轉(zhuǎn)換中的應(yīng)用研究-洞察分析
- 物聯(lián)網(wǎng)安全防護(hù)-第1篇-洞察分析
- 特種水泥性能優(yōu)化-洞察分析
- 初級職稱個(gè)人專業(yè)技術(shù)工作總結(jié)范文(12篇)
- 醫(yī)學(xué)圖像增強(qiáng)與降噪算法-洞察分析
- 網(wǎng)絡(luò)切片技術(shù)在行業(yè)專網(wǎng)的應(yīng)用研究-洞察分析
- 【MOOC】電工電子學(xué)-浙江大學(xué) 中國大學(xué)慕課MOOC答案
- 陜西省咸陽市2023-2024學(xué)年高一上學(xué)期期末考試 物理 含解析
- 曼娜回憶錄完整版三篇
- (正式版)HG∕T 21633-2024 玻璃鋼管和管件選用規(guī)定
- NCCN 非小細(xì)胞肺癌指南2024
- 蔚來用戶運(yùn)營分析報(bào)告-數(shù)字化
- 施工總平面布置圖及說明及施工現(xiàn)場平面布置圖
- 綜合文化站免費(fèi)開放工作總結(jié)社區(qū)綜合文化工作總結(jié).doc
- 赴美國自由行旅行英文行程單模板(面簽必備)
- 專業(yè)技術(shù)人員繼續(xù)教育公需課《網(wǎng)絡(luò)知識產(chǎn)權(quán)的保護(hù)策略》試題及答案6
- 2021蔓金高速存問題清單(無照片)
評論
0/150
提交評論