國家二級(C語言)機(jī)試模擬試卷5(共380題)_第1頁
國家二級(C語言)機(jī)試模擬試卷5(共380題)_第2頁
國家二級(C語言)機(jī)試模擬試卷5(共380題)_第3頁
國家二級(C語言)機(jī)試模擬試卷5(共380題)_第4頁
國家二級(C語言)機(jī)試模擬試卷5(共380題)_第5頁
已閱讀5頁,還剩108頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

國家二級(C語言)機(jī)試模擬試卷5(共9套)(共380題)國家二級(C語言)機(jī)試模擬試卷第1套一、選擇題(本題共37題,每題1.0分,共37分。)1、有以下程序:#include<stdio.h>main(){intx[3][3]={1,2,3,4,5,6,7,8,9},i;for(i=1;i<3;i++)printf("%d",x[i][3—i]);}程序運(yùn)行后的輸出結(jié)果是()。A、2,4B、6,8C、3,7D、2,6標(biāo)準(zhǔn)答案:B知識點解析:二維數(shù)組的起始行標(biāo)和列標(biāo)均為O,即x[0][0]=1。當(dāng)i=1時,for循環(huán)判斷條件成立,輸出x[1][2]=6;此時i自增為2,開始第二次for循環(huán),條件成立,輸出x[2][1]=8。故B選項正確。2、在下列關(guān)系運(yùn)算中,不改變關(guān)系表中的屬性個數(shù)但能減少元組個數(shù)的是()。A、并B、交D、除標(biāo)準(zhǔn)答案:B知識點解析:關(guān)系R與S經(jīng)交運(yùn)算后所得到的關(guān)系是由那些既在R內(nèi)又在S內(nèi)的有序組所組成,記為R(lS,交運(yùn)算不改變關(guān)系表中的屬性個數(shù)但能減少元組個數(shù)。3、閱讀以下程序#includemain(){IntCase;floatprintF;printf("請輸入2個數(shù):");scanf("%d%f",&Case,&printF);printf("%d%f\n",Case,printF);}以下說法正確的是()。A、定義語句出錯,Case是關(guān)鍵字,不能用作用戶自定義標(biāo)識符,printF不能用作用戶自定義標(biāo)識符.B、定義語句出錯,Int無法被識別。C、定義語句無錯,scanf不能作為輸入函數(shù)使用D、定義語句無錯,printf不能輸Case的值標(biāo)準(zhǔn)答案:B知識點解析:C語言是一種大小寫敏感的語言,因此Int應(yīng)為int,而CaseprintF則可以使用。4、開發(fā)軟件所需高成本和產(chǎn)品的低質(zhì)量之間有著尖銳的矛盾,這種現(xiàn)象稱做()。A、軟件矛盾B、軟件危機(jī)C、軟件耦合D、軟件產(chǎn)生標(biāo)準(zhǔn)答案:B知識點解析:隨著計算機(jī)軟件規(guī)模的擴(kuò)大,軟件本身的復(fù)雜性不斷增加,研制周期顯著變長,正確性難以保證,軟件開發(fā)費(fèi)用上漲,生產(chǎn)效率急劇下降,從而出現(xiàn)了入門難以控制軟件發(fā)展的局面,即所謂的“軟件危機(jī)”。5、設(shè)變量均已正確定義,若要通過scanf("%d%c%d%c",&a1,&c1,&a2,&c2);語句為變量a1和a2賦數(shù)值10和20,為變量c1和c2賦字符X和Y。下列所示的輸入形式中正確的是(注:□代表空格字符)()。A、10□X020□Y<CR>B、10□X20□Y<CR>C、10DX<CR>20Y<CR>D、10X<CR>200Y<CR>標(biāo)準(zhǔn)答案:A知識點解析:在使用scanf函數(shù)進(jìn)行輸入數(shù)據(jù)時,輸入的數(shù)據(jù)之間必須用空格、回車符、制表符(Tab鍵)等間隔符隔開。6、設(shè)變量均已正確定義,若要通過scanf("%d%c%d%c",&a1,&c1,&a2,&c2);語句為變量a1和a2賦數(shù)值10和20,為變量c1和c2賦字符X和Y。下列所示的輸入形式中正確的是(注:□代表空格字符)()。A、10DX□20□YB、10□X20□YC、10□X20YD、10X20□Y標(biāo)準(zhǔn)答案:A知識點解析:在使用scanf函數(shù)進(jìn)行輸入數(shù)據(jù)時,輸入的數(shù)據(jù)之間必須用空格、回車符、制表符(Tab鍵)等間隔符隔開。7、設(shè)x=06l,y=016,則z=x|y的值是()。A、00001111B、11111111C、00111111D、11000000標(biāo)準(zhǔn)答案:C知識點解析:本題主要考查按位或運(yùn)算,x=061(二進(jìn)制為00110001),y=016(二進(jìn)制為00001110),進(jìn)行或運(yùn)算后結(jié)果為00111111。8、將E—R圖轉(zhuǎn)換為關(guān)系模式時,實體和聯(lián)系都可以表示為()。A、屬性B、鍵C、關(guān)系D、域標(biāo)準(zhǔn)答案:C知識點解析:從E—R圖到關(guān)系模式的轉(zhuǎn)換是比較直接的,實體與聯(lián)系都可以表示成關(guān)系,E—R圖中屬性也可以轉(zhuǎn)換成關(guān)系的屬性。9、有以下程序#defineF(X,Y)(X)*(Y)main(){inta=3,b=4;printf(’’%dha’’,F(xiàn)(a++,b++));}程序運(yùn)行后的輸出結(jié)果是()。A、12B、15C、16D、20標(biāo)準(zhǔn)答案:A知識點解析:此題考查的是編譯預(yù)處理命令以及自加運(yùn)算符。“F(a++,b++)”先取a和b的值,參加運(yùn)算,再把a(bǔ)和b的值分別加1,所以“F(a++,b++)=F(3,4)=3*4=12”。10、下面選項中不是關(guān)系數(shù)據(jù)庫基本特征的是()。A、不同的列應(yīng)有不同的數(shù)據(jù)類型B、不同的列應(yīng)有不同的列名C、與行的次序無關(guān)D、與列的次序無關(guān)標(biāo)準(zhǔn)答案:A知識點解析:在關(guān)系數(shù)據(jù)庫中,二維表由行數(shù)據(jù)組成,每行數(shù)據(jù)包含若干屬性值,每個屬性都有指定的類型和取值范圍。數(shù)據(jù)行數(shù)是有限的,每行數(shù)據(jù)互不相同(元組唯一性),每行的次序可以任意交換(元組的次序無關(guān)性);表中屬性名(列各)各不相同即字段名不重復(fù),屬性名(列名)次序可任意交換。故本題答案為A選項。11、有以下程序#include<stdio.h>#defineS(x)4*(x)*x+1main(){intk=5,j=2;printf("%d\n",S(k+j));}程序運(yùn)行后的輸出結(jié)果是A、33B、197C、143D、28標(biāo)準(zhǔn)答案:C知識點解析:本題考查帶參數(shù)的宏定義,S為帶參數(shù)的宏定義,運(yùn)行S(k+j)為4*(k+j)*k+j+1=143,選項C正確。12、下面結(jié)構(gòu)體的定義語句中,錯誤的是()。A、structord{intx;inty;intz;}structorda;B、structord{intx;inty;intz;};structorda;C、structord{intx;inty;intz;}a;D、struct{intx;inty;intz;}a;標(biāo)準(zhǔn)答案:A知識點解析:分號代表該結(jié)構(gòu)體定義語句的結(jié)束,選項A)的結(jié)構(gòu)體沒有定義完全就用該結(jié)構(gòu)體另外定義變量,用法有誤,所以答案選A)。13、在三級模式之間引入兩層映像,其主要功能之一是()。A、使數(shù)據(jù)與程序具有較高的獨(dú)立性B、使系統(tǒng)具有較高的通道能力C、保持?jǐn)?shù)據(jù)與程序的一致性D、提高存儲空間的利用率標(biāo)準(zhǔn)答案:A知識點解析:數(shù)據(jù)庫管理系統(tǒng)在數(shù)據(jù)庫的三級模式之問提供了兩層映像,保證了數(shù)據(jù)庫中數(shù)據(jù)的較高的邏輯獨(dú)立性和物理獨(dú)立性。14、若a、b、c、d都是int型變量且都已經(jīng)正確賦初值,則以下不正確的賦值語句是()。A、a+d;B、a++;C、a=b=c=d=100;D、a=(b=3)+(d=5);標(biāo)準(zhǔn)答案:A知識點解析:C語言規(guī)定,賦值號的右邊可以是一個賦值表達(dá)式,因此選項C、選項D正確;在選項B中,a++是一個自加1的表達(dá)式,a被重新賦值,因此它是一個合法的賦值表達(dá)式;選項A中,a+d是一個算術(shù)表達(dá)式,雖然最后有一個分號,但這個表達(dá)式中沒有賦值操作,因此它不是一條賦值語句。15、下列關(guān)于C語言文件的敘述中正確的是()。A、文件由一系列數(shù)據(jù)依次排列組成,只能構(gòu)成二進(jìn)制文件B、文件由結(jié)構(gòu)序列組成,可以構(gòu)成二進(jìn)制文件或文本文件C、文件由數(shù)據(jù)序列組成,可以構(gòu)成二進(jìn)制文件或文本文件D、文件由字符序列組成,其類型只能是文本文件標(biāo)準(zhǔn)答案:C知識點解析:本題考查文件的概念,文件是由數(shù)據(jù)序列組成,可以構(gòu)成二進(jìn)制文件或文本文件,所以答案為C選項。16、若有以下定義:intx[10],*pt=x;則對x數(shù)組元素的正確引用是()。A、pt+3B、*&x[10]C、*(pt+10)D、*(x+3)標(biāo)準(zhǔn)答案:D知識點解析:沒有A選項的引用形式。*與&放在一起作用抵消,所以B選項錯誤*(pt+i)表示引用指針pt所指元素后的第i個元素,所以C選項錯誤,最大只能為*(pt+9)。因此D選項正確。17、有以下程序#include<stdio.h>voidfun1(char*p){char*q;q=p;while(*q!=’\0’){(*q)++;q++;}}main(){chara[]={"Program"},*p;p=&a[3];fun1(p);printf("%s\n",a);}程序執(zhí)行后的輸出結(jié)果是A、PrphsbnB、ProhsbnC、ProgsbnD、Program標(biāo)準(zhǔn)答案:B知識點解析:(*q)++是q所指的字符加1,q++就是指針移到下一個字符。因此B選項正確。18、下列關(guān)于棧的敘述正確的是()。A、棧按"先進(jìn)先出"組織數(shù)據(jù)B、棧按"先進(jìn)后出"組織數(shù)據(jù)C、只能在棧底插入數(shù)據(jù)D、不能刪除數(shù)據(jù)標(biāo)準(zhǔn)答案:B知識點解析:棧是按照"先進(jìn)后出"的原則組織數(shù)據(jù)的,只能在棧頂插入或刪除數(shù)據(jù),所以選擇B)。19、有以下程序#include<stdio.h>intfun(){staticintx=1;x*=2;returnx;}main(){inti,s=1;for(i=1;i<=2;i++)s=fun();printf("%d\n",s);}程序運(yùn)行后的輸出結(jié)果是A、0B、1C、4D、8標(biāo)準(zhǔn)答案:C知識點解析:fun函數(shù)中的x為靜態(tài)局部變量,占用固定的內(nèi)存單元,下一次調(diào)用時仍可保留上次調(diào)用時的值。也就是說,如果多次調(diào)用fun函數(shù),x的定義只在第一次調(diào)用時有效,從第二次調(diào)用開始,x的定義相當(dāng)于不存在,直接使用x的值。主函數(shù)中調(diào)用兩次fun函數(shù):第一次調(diào)用:x=1,x=x*2=2,s=2;第二次調(diào)用:(直接用上次x的值)x=x*2=4,s=4。因此C選項正確。20、若變量已正確定義,則以下for循環(huán)():for(x=0,y=0;(y!=123)&&(x<4);x++);A、執(zhí)行4次B、執(zhí)行3次C、執(zhí)行次數(shù)不確定D、執(zhí)行123次標(biāo)準(zhǔn)答案:A知識點解析:循環(huán)判斷語句為"(y!=123)&&(x<4)”,必須同時滿足"y!=123"和"x<4"這兩個表達(dá)式,循環(huán)才會繼續(xù)。因此,當(dāng)x=4時,循環(huán)終止,for循環(huán)共執(zhí)行4次。21、有以下程序:#include<stdio.h>voidfun(char**p){++p:printf(’’%s\n’’,*p);}main(){char*a[]={’’Morning’’,’’Afternoon’’,’’Evening’’,’’Night’’};fun(a);}程序運(yùn)行后的輸出結(jié)果是()。A、AfternoonB、fternoonC、MorningD、oming標(biāo)準(zhǔn)答案:A知識點解析:本題主函數(shù)中定義了一個指針數(shù)組a,可以將它看成一個以字符指針為元素的一維數(shù)組。和一般的一維數(shù)組名能賦給同類型指針變量一樣,該字符指針數(shù)組也可以賦給指向字符指針的指針,所以數(shù)組名a可以用做函數(shù)fun()的實參。在fun()函數(shù)中,++p操作使形參p往后移動一個字符指針的位置,即指針a[1]的位置。故最后通過printf()函數(shù)輸出的字符串為“Afternoon”。因此A選項正確。22、有以下程序:#include#includemain(){charW[20],a[5][10]={"abcdef","ghijkl","mnopq",’rstuv","wxyz."};inti;for(i=0;i<5;i++)w[i]=a[i][strlen(a[i])-1];w[5]=’\0’;puts(w);}程序的運(yùn)行結(jié)果是()。A、flqv.B、agmrwC、ekpuyD、flqvz標(biāo)準(zhǔn)答案:A知識點解析:puts()函數(shù)將數(shù)組中存放的字符串輸出,用"\n"取代字符串結(jié)束符"\0"。strlen()函數(shù)求字符串的實際長度(不包含結(jié)束標(biāo)志)。程序中for循環(huán)將第i個字符串最后一個字符放入w數(shù)組下標(biāo)值為i的位置。最后將數(shù)組最后一個字符賦值為“\0”,輸出字符串w為flqv.。23、有關(guān)線性鏈表的敘述中正確的是()。A、進(jìn)行插入與刪除時,不需要移動表中的元素B、各數(shù)據(jù)節(jié)點的存儲順序與邏輯順序可以不一致,但它們的存儲空間必須連續(xù)C、各數(shù)據(jù)節(jié)點的存儲空間可以不連續(xù),但它們的存儲順序與邏輯順序必須一致D、以上說法均不正確標(biāo)準(zhǔn)答案:A知識點解析:鏈表的特點是通過指針鏈接下一個元素,所以它們的存儲順序和邏輯關(guān)系也不一致,但進(jìn)行插入與刪除時,不需要移動表中的元素,只需要改變下一個節(jié)點的指針就可以了。24、若有以下程序#include<stdio.h>voidsp(int*a){intb=2;*a=*a*2;printf("%d,",*a);a=&b;*a=*a*2;printf("%d,",*a);}main(){intk=3;sp(&k);printf("%d\n",k);}則程序的輸出結(jié)果是A、6,12,12B、6,4,3C、6,4,6D、9,4,9標(biāo)準(zhǔn)答案:C知識點解析:首先在主函數(shù)中給整型變量k賦值為3,調(diào)用sp函數(shù),將變量k的地址作為實參傳遞給形參指針變量a;在sp函數(shù)中,*a=*a*2;即結(jié)果為6,通過printf()函數(shù)輸出。整型變量b的地址賦給指針變量a,再執(zhí)行*a=*a*2;,即結(jié)果為4,通過printf()函數(shù)輸出。返回主函數(shù),輸出k的值6。因此C選項正確。25、軟件設(shè)計中模塊劃分應(yīng)遵循的準(zhǔn)則是()。A、低內(nèi)聚低耦合B、高內(nèi)聚低耦合C、低內(nèi)聚高耦合D、高內(nèi)聚高耦合標(biāo)準(zhǔn)答案:B知識點解析:軟件設(shè)計中模塊劃分應(yīng)遵循的準(zhǔn)則是高內(nèi)聚低偶合、模塊大小規(guī)模適當(dāng)、模塊的依賴關(guān)系適當(dāng)?shù)取DK的劃分應(yīng)遵循一定的要求,以保證模塊劃分合理,并進(jìn)一步保證以此為依據(jù)開發(fā)出的軟件系統(tǒng)可靠性強(qiáng),易于理解和維護(hù)。模塊之間的耦合應(yīng)盡可能的低,模塊的內(nèi)聚度應(yīng)盡可能的高。26、有以下程序#include<stdio.h>main(){intk,j,s;for(k=2;k<6;k++,k++){s=1;for(j=k;j<6;j++)s+=j;}printf("%d\n",s);}程序運(yùn)行后的輸出結(jié)果是A、6B、10C、24D、40標(biāo)準(zhǔn)答案:B知識點解析:本題重點考察for語句循環(huán)嵌套,首先k=2,進(jìn)行一次循環(huán)后,k自增兩次,變成4,這時s為1。即當(dāng)k=4的時候,s=1,j=4,執(zhí)行內(nèi)層循環(huán),s=1+4,j自增1后等于5,s=5+5,j再自增1后即為6,跳出內(nèi)層循環(huán)。k自增兩次后等于6,不成立,跳出外層循環(huán)。最后輸出s的值,即為10。因此B選項正確。27、若有以下程序段structst{intn;structst*next;};structsta[3]={5,&a[1],7,&a[2],9,’\0’},*p;p=&a[0];則以下選項中值為6的表達(dá)式是A、p->nB、(*p).nC、p->n++D、++(p->n)標(biāo)準(zhǔn)答案:D知識點解析:本題考查結(jié)構(gòu)體變量的引用,其中a為定義的結(jié)構(gòu)體數(shù)組,D選項中p->n為5,++(p->n)為6,所以D選項正確。28、下列與隊列結(jié)構(gòu)有關(guān)聯(lián)的是A、函數(shù)的遞歸調(diào)用B、數(shù)組元素的引用C、多重循環(huán)的執(zhí)行D、先到先服務(wù)的作業(yè)調(diào)度標(biāo)準(zhǔn)答案:D知識點解析:隊列的修改是依先進(jìn)先出的原則進(jìn)行的,D正確。29、關(guān)于數(shù)據(jù)結(jié)構(gòu)的存儲原理,以下數(shù)據(jù)類型不能采用順序存儲結(jié)構(gòu)的是()。A、棧B、堆C、循環(huán)隊列D、非完全二叉樹標(biāo)準(zhǔn)答案:D知識點解析:棧、堆和隊列都可以采用順序存儲結(jié)構(gòu)存儲,但對于二叉樹來說,只有完全二叉樹和滿二叉樹可以進(jìn)行順序存儲,一般二叉樹不適用。30、若有定義:charc;intd;,程序運(yùn)行時輸入:1,2<回車>,能把值1輸入給變量c、值2輸入給變量d的輸入語句是A、scanf("%c,%d",&c,&d);B、scanf("%c%d",&c,&d);C、scanf("%d,%f",&c,&d);D、scanf("%d%d",&c,&d);標(biāo)準(zhǔn)答案:A知識點解析:scanf函數(shù)的調(diào)用格式為:scanf(格式控制串,地址列表);,格式控制串,由%開頭,后跟格式字符,如c對應(yīng)字符型變量,d對應(yīng)整型變量。地址表列需要讀入的是所有變量的地址或字符串的首地址。如果除了格式說明字符和附加格式字符外,如果還有其他字符,則在輸入數(shù)據(jù)時要求按一一對應(yīng)的位置原樣輸入這些字符,比如兩個格式說明之間有一個逗號,則從鍵盤輸入時輸入量之間也應(yīng)照原樣輸入逗號。A選項正確。31、下列選項中,不屬于數(shù)據(jù)模型所描述的內(nèi)容的是()。A、數(shù)據(jù)類型B、數(shù)據(jù)操作C、數(shù)據(jù)結(jié)構(gòu)D、數(shù)據(jù)約束標(biāo)準(zhǔn)答案:A知識點解析:數(shù)據(jù)模型描述的內(nèi)容包含數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和數(shù)據(jù)約束。32、以下選項中敘述正確的是A、文件指針是指針類型的變量B、文件指針可同時指向不同文件C、文件指針的值是文件在計算機(jī)磁盤中的路徑信息D、調(diào)用fscanf函數(shù)可以向文本文件中寫入任意字符標(biāo)準(zhǔn)答案:A知識點解析:所謂文件指針,實際上是指向一個結(jié)構(gòu)體類型的指針變量,這個結(jié)構(gòu)體中包含有文件的一些信息,如緩沖區(qū)的地址,在緩沖區(qū)中當(dāng)前存取的字符的位置,對文件是"讀"還是"寫",是否出錯,是否已經(jīng)遇到文件結(jié)束標(biāo)志等信息。文件指針本身是指針類型的變量,A選項正確。一個指針在同一時間只能指向一個文件,B選項錯誤。文件指針是指針變量,存儲的是文件緩存區(qū)首地址,而不是文件在計算機(jī)磁盤中的路徑信息,C選項錯誤。fscanf函數(shù)從文本文件中按格式讀入到程序中,而不是向文本文件中寫入數(shù)據(jù),D選項錯誤。33、以下程序運(yùn)行后的輸出結(jié)果是()。#include<stdio.h>main()voidreverse(inta[],intn){intb[10]={10,9,8,7,6,5,4,3,2,1};inti,s=0;{inti,t;reverse(b,10);for(i=0;i<n/2;i++)for(i=0;i<3;i++)s+=b[i];{t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}}printf("%d\n",s);}A、27B、6C、25D、30標(biāo)準(zhǔn)答案:B知識點解析:本題考查函數(shù)調(diào)用時的參數(shù)傳遞。函數(shù)reverse將數(shù)組b進(jìn)行了逆置,此時b[10]={10,9,8,7,6,5,4,3,2,1},后面for語句的功能是將b中的后3個數(shù)累加,并將結(jié)果放在s中,最后將s輸出,結(jié)果s=1+2+3=6。34、關(guān)于地址和指針,以下說法正確的是A、通過強(qiáng)制類型轉(zhuǎn)換可以將一種類型的指針變量賦值給另一種類型的指針變量B、可以取一個常數(shù)的地址賦值給同類型的指針變量C、可以取一個表達(dá)式的地址賦值給同類型的指針變量D、可以取一個指針變量的地址賦值給基類型相同的指針變量標(biāo)準(zhǔn)答案:A知識點解析:常數(shù)的地址存儲在內(nèi)存的常量區(qū),常量區(qū)存儲的都是常量,值都是不可修改的,所以直接取常量的地址賦給指針變量沒有任何意義,C語言也不允許這樣做,編譯會出錯,B選項錯誤;表達(dá)式的值存儲在臨時變量中,內(nèi)存中存在專門用來存儲臨時變量的區(qū)域,對這塊地址進(jìn)行操作也是沒有意義的,C語言不允許這樣做,編譯會出錯,C選項錯誤;可以取一個指針變量的地址,但是指針變量的地址屬于指針,只能賦值給指針類型的指針變量,D選項錯誤。故答案為A選項。35、設(shè)某二叉樹的前序序列與中序序列均為ABCDEFGH,則該二叉樹的后序序列為A、HGFEDCBAB、EFGHABCDC、DCBAHGFED、ABCDEFGH標(biāo)準(zhǔn)答案:A知識點解析:二叉樹遍歷可以分為3種:前序遍歷(訪問根結(jié)點在訪問左子樹和訪問右子樹之前)、中序遍歷(訪問根結(jié)點在訪問左子樹和訪問右子樹兩者之間)、后序遍歷(訪問根結(jié)點在訪問左子樹和訪問右子樹之后)。二叉樹的前序序列與中序序列相同,說明此樹結(jié)點沒有左子樹,且第一個節(jié)點A為根節(jié)點,而后序遍歷中根節(jié)點應(yīng)在最后被訪問,即節(jié)點A在最后出現(xiàn),由此推斷出后序遍歷為HGFEDCBA,故A選項正確.36、若要建立下圖所示的存儲結(jié)構(gòu),以下正確的程序段是()。A、char**q,*p,c;p=&c;q=&p;B、char**q,*p,c;p=&c;q=*p;C、char*q,*p,c;p=&c;*q=p;D、char*q,*p,c;q=p;p=*c;標(biāo)準(zhǔn)答案:A知識點解析:由圖示可知,c是個普通變量,p指向c,因此p是指針,且p=&c,q指向p,但是p也是指針,因此q是指向指針的指針,q=&p,因此定義是int**q,*p,c,q=&p,p=&c,因此答案為A選項。37、若x=4,y=5,則x&y的結(jié)果是()。A、0B、4C、3D、5標(biāo)準(zhǔn)答案:B知識點解析:本題主要考查按位與運(yùn)算的知識點。按位與是對兩個運(yùn)算量相應(yīng)的位進(jìn)行邏輯與,“&”的規(guī)則和邏輯與“&&”相同。x=4的二進(jìn)制為00000100,y=5的二進(jìn)制為00000101,x&y=00000100,轉(zhuǎn)化為十進(jìn)制即為4。二、程序填空題(本題共1題,每題1.0分,共1分。)38、下列給定程序中,函數(shù)fun的功能是:從形參ss所指字符串?dāng)?shù)組中,刪除所有串長超過k的字符串,函數(shù)返回剩余字符串的個數(shù)。SS所指字符串?dāng)?shù)組中共有N個字符串,且串長小于M。請在程序的下畫線處填入正確的內(nèi)容并將下畫線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#include<string.h>#defineN5#defineM10intfun(char(*ss)[M],intk){inti,j=0,len;/*********found*********/for(i=0;i<【1】;i++){len=strlen(ss[i]);/*********found*********/if(len<=【2】)/*********found*********/strcpy(ss[j++],【3】);}returnj;}voidmain(){charx[N][M]={"Beijing","Shanghai","Tianjin","Nanjing","Wuhan");inti,f;printf("\nTheoriginalstring\n\n");for(i=0;i<N;i++)puts(x[i]);printf("\n");f=fun(x,7);printf("Thestringwitchlengthislessthanorequalto7:\n");for(i=0;i<f;i++)puts(x[i]);printf("\n");}標(biāo)準(zhǔn)答案:(1)N(2)k(3)ss[i]知識點解析:本題考查:for循環(huán)語句;if語句條件表達(dá)式;字符串復(fù)制函數(shù)strcpy的使用。填空1:for循環(huán)語句的作用是遍歷字符串?dāng)?shù)組中的每一個字符串,所以循環(huán)變量i的循環(huán)條件是i<N。填空2:題目要求刪除串長度大于k的字符串,所以if條件語句的條件表達(dá)式是len<=k。填空3:通過字符串復(fù)制函數(shù)將串長不大于k的字符串另存,并記錄個數(shù)。字符串復(fù)制函數(shù)strcpy,其格式為:strcpy(字符數(shù)組名1,字符數(shù)組名2)功能:把字符數(shù)組2中的字符串復(fù)制到字符數(shù)組1中。字符串結(jié)束標(biāo)識‘\0’也一同復(fù)制。字符數(shù)組名2,也可以是一個字符串常量,這時相當(dāng)于把一個字符串賦予一個字符數(shù)組。三、程序修改題(本題共1題,每題1.0分,共1分。)39、下列給定程序中函數(shù)fun的功能是:將字符串中的字符逆序輸出,但不改變字符串中的內(nèi)容。例如,若字符串為“abed”,則應(yīng)輸出:“deba”。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>/**********found***********/voidfun(chara){if(*a){fun(a+1);/**********found***********/printf(“%c”*a);}}main(){chars[10]=“abcd”;printf(“處理前字符串=%s\n,處理后字符串=”,s);fun(s);printf(“\n”);}標(biāo)準(zhǔn)答案:(1)voidfun(char*a)(2)prinff(“%c”,*a);知識點解析:(1)定義函數(shù)時形參的類型要與凋用函數(shù)中實參的類型一致,主函數(shù)中fun傳遞的是字符串s的首地址,所以此處形參應(yīng)為指針類型。(2)根據(jù)prinff函數(shù)格式,很容易找到錯誤之處。四、程序設(shè)計題(本題共1題,每題1.0分,共1分。)40、請編寫函數(shù)fun,它的功能是:計算并輸出n(包括n)以內(nèi)能被5或9整除的所有自然數(shù)的倒數(shù)之和。例如,在主函數(shù)中從鍵盤給n輸入20后,輸出為:s=0.583333。注意:要求11的值不大于100。部分源程序在文件PROG1.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#include<stdio.h>doublefun(intn){}NONO(){/*請在此函數(shù)內(nèi)打開文件,輸入測試數(shù)據(jù),調(diào)用fun函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FILE*rf,*wf;intn,i;doubles;rf=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(rf,"%d",&n);s=fun(n);fprintf(wf,"%1f\n",s);}fclose(rf);fclose(wf);}main(){intn;doubles;printf("\nInputn:");scanf("%d",&n);s=fun(n);printf("\n\ns=%f\n",s);NONO();}標(biāo)準(zhǔn)答案:inti;doublesum=0.0;for(i=1;i<=n;i++)if(i%5==0||i%9==0)/*被5或9整除*/sum+=1.0/i;returnsum;知識點解析:(1)首先,通過循環(huán),判斷小于等于n的每一個整數(shù)是否符合題干中的要求。其中的判斷條件能否被5或者被9整除為i%5==0‖i%9==0。(2)然后求得符合(1)要求的數(shù)的倒數(shù)的累加和。國家二級(C語言)機(jī)試模擬試卷第2套一、選擇題(本題共38題,每題1.0分,共38分。)1、下列關(guān)于C語言文件的敘述中正確的是()。A、文件由一系列數(shù)據(jù)依次排列組成,只能構(gòu)成二進(jìn)制文件B、文件由結(jié)構(gòu)序列組成,可以構(gòu)成二進(jìn)制文件或文本文件C、文件由數(shù)據(jù)序列組成,可以構(gòu)成二進(jìn)制文件或文本文件D、文件由字符序列組成,其類型只能是文本文件標(biāo)準(zhǔn)答案:C知識點解析:C語言將文件看作是一個字符(字節(jié))的序列,即由一個一個字符(字節(jié))數(shù)據(jù)順序組成。根據(jù)數(shù)據(jù)的組成形式,可將文件分為兩種:①ASCII文件,又稱文本(text)文件,它的每一個字節(jié)可放一個ASCII碼,代表一個字符;②二進(jìn)制文件,是把內(nèi)存中的數(shù)據(jù)按其在內(nèi)存中的存儲形式原樣輸出到磁盤上存放。所以C文件就是一個字節(jié)流或一個二進(jìn)制流。2、程序流程圖中帶有箭頭的線段表示的是()。A、圖元關(guān)系B、數(shù)據(jù)流C、控制流D、調(diào)用關(guān)系標(biāo)準(zhǔn)答案:C知識點解析:在數(shù)據(jù)流圖中,用標(biāo)有名字的箭頭表示數(shù)據(jù)流。在程序流程圖中,用標(biāo)有名字的箭頭表示控制流。所以選擇C。3、軟件設(shè)計中模塊劃分應(yīng)遵循的準(zhǔn)則是()。A、低內(nèi)聚低耦合B、高內(nèi)聚低耦合C、低內(nèi)聚高耦合D、高內(nèi)聚高耦合標(biāo)準(zhǔn)答案:B知識點解析:軟件設(shè)計中模塊劃分應(yīng)遵循的準(zhǔn)則是高內(nèi)聚低偶合、模塊大小規(guī)模適當(dāng)、模塊的依賴關(guān)系適當(dāng)?shù)?。模塊的劃分應(yīng)遵循一定的要求,以保證模塊劃分合理,并進(jìn)一步保證以此為依據(jù)開發(fā)出的軟件系統(tǒng)可靠性強(qiáng),易于理解和維護(hù)。模塊之間的耦合應(yīng)盡可能的低,模塊的內(nèi)聚度應(yīng)盡可能的高。4、下面關(guān)于數(shù)據(jù)庫三級模式結(jié)構(gòu)的敘述中,正確的是()。A、內(nèi)模式可以有多個,外模式和模式只有一個B、外模式可以有多個,內(nèi)模式和模式只有一個C、內(nèi)模式只有一個,模式和外模式可以有多個D、模式只有一個,外模式和內(nèi)模式可以有多個標(biāo)準(zhǔn)答案:B知識點解析:數(shù)據(jù)庫的三級模式結(jié)構(gòu)是指數(shù)據(jù)庫系統(tǒng)的外模式、模式和內(nèi)模式。一個數(shù)據(jù)庫可以有多個外模式,但只有一個模式和一個內(nèi)模式。5、對于一個正常運(yùn)行的C程序,下列敘述中正確的是()。A、程序的執(zhí)行總是從main函數(shù)開始,在main函數(shù)結(jié)束B、程序的執(zhí)行總是從程序的第一個函數(shù)開始,在main函數(shù)結(jié)束C、程序的執(zhí)行總是從main函數(shù)開始,在程序的最后一個函數(shù)中結(jié)束D、程序的執(zhí)行總是從程序中的第一個函數(shù)開始,在程序的最后一個函數(shù)中結(jié)束標(biāo)準(zhǔn)答案:A知識點解析:一個C語言源程序無論包括了多少函數(shù),總是從main函數(shù)開始執(zhí)行,從main函數(shù)結(jié)束。6、以下敘述中正確的是()。A、C語言規(guī)定必須用main作為主函數(shù)名,程序?qū)拇碎_始執(zhí)行B、可以在程序中由用戶指定任意一個函數(shù)作為主函數(shù),程序?qū)拇碎_始執(zhí)行C、C語言程序?qū)脑闯绦蛑械谝粋€函數(shù)開始執(zhí)行D、mmn的各種大小寫拼寫形式都可以作為主函數(shù)名,如MAIN,Main等標(biāo)準(zhǔn)答案:A知識點解析:C語言中的主函數(shù)只能是main()函數(shù),不能任意指定,所以B選項錯誤。C語言從主函數(shù)main()開始,到主函數(shù)main()結(jié)束,所以C選項錯誤。主函數(shù)必須寫成小寫的main,不能混淆大小寫,所以D選項錯誤。7、有以下程序:main(){intn=O;do{n++;printf("%d\n",n);}while(n<=3);}程序的輸出結(jié)果是()。A、12B、123C、1234D、1標(biāo)準(zhǔn)答案:C知識點解析:本題考查do…while循環(huán)。在do…while構(gòu)成的循環(huán)體中,總是先執(zhí)行一次循環(huán)體,然后再求表達(dá)式的值。當(dāng)執(zhí)行完第三次循環(huán)時.得到n=3.while循環(huán)表達(dá)式仍然成立,接著執(zhí)行直到n=4,表達(dá)式不成立,跳出循環(huán),結(jié)束程序。8、下面結(jié)構(gòu)體的定義語句中,錯誤的是()。A、structord{intx;inty;intz;}structorda;B、structord{intx;inty;intz;};structorda;C、structord{intx;inty;intz;}a;D、struct{intx;inty;intz;}a;標(biāo)準(zhǔn)答案:A知識點解析:A)選項structord{intx;inty;intz;}structorda;錯誤,不能在定義結(jié)構(gòu)體的同時,又用結(jié)構(gòu)體類型名定義變量。應(yīng)該寫成B)選項或者D)選項的格式。9、對下列二叉樹進(jìn)行前序遍歷的結(jié)果為()。A、ABCDEFGHB、ABDGEHCFC、GDBEHACFD、GDHEBFCA標(biāo)準(zhǔn)答案:B知識點解析:遍歷就是不重復(fù)地訪問一叉樹的所有結(jié)點。二叉樹遍歷的方法有3種:前序遍歷、中序遍歷和后序遍歷。記住3種遍歷的順序:①前序,訪問根→按前序遍歷左子樹→按前序遍歷右子樹:②中序,按中序遍歷左子樹→訪問根→按中序遍歷右子樹;③后序,按后序遍歷左子樹→按后序遍歷右子樹→訪問根。所以對該二叉樹的中序遍歷結(jié)果為ABDGEHCF。10、設(shè)變量已正確定義并賦值,以下正確的表達(dá)式是()。A、x=y+z+5,++yB)int(15.8%5)B、x=y*5=x+zC、x=25%5.0標(biāo)準(zhǔn)答案:A知識點解析:B與D選項中取模運(yùn)算符%的左右兩個操作數(shù)均應(yīng)為整數(shù),所以B、D錯誤。C選項中不能將x+y的值賦給表達(dá)式y(tǒng)*5,所以C錯誤。11、以下選項中,當(dāng)x為大于1的奇數(shù)時,值為0的表達(dá)式為()。A、x%2==1B、x/2C、x%2!=0D、x%2==0標(biāo)準(zhǔn)答案:D知識點解析:當(dāng)x為大于1的奇數(shù)時,x對2求余的結(jié)果為1,不為0,所以選項D中表達(dá)式的值為0。12、下面4個關(guān)于C語言的結(jié)論中錯誤的是()。A、可以用do…while語句實現(xiàn)的循環(huán)一定可以用while語句實現(xiàn)B、可以用for語句實現(xiàn)的循環(huán)一定可以用while語句實現(xiàn)C、可以用while語句實現(xiàn)的循環(huán)一定可以用for語句實現(xiàn)D、do…while語句與while語句的區(qū)別僅是關(guān)鍵字“while”出現(xiàn)的位置不同標(biāo)準(zhǔn)答案:D知識點解析:本題考查幾個循環(huán)語句的關(guān)系。①do…while語句、while語句、for語句所實現(xiàn)的循環(huán)可以相互替代;②do…while語句和while語句的區(qū)別是do…while語句至少執(zhí)行一次,再判斷循環(huán)條件,while語句是先判斷條件再執(zhí)行。13、有以下程序:#includemain()charc[2][5]={"6934","8254"},*p[2]inti,j,s=0;for(i=0;i<2;i++)P[i]=c[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’;pfintf("%d\n",s);}程序的輸出結(jié)果是()。A、693825B、69825C、63825D、6385標(biāo)準(zhǔn)答案:D知識點解析:本題的意圖在于將c中兩個字符串的偶數(shù)位置的數(shù)字組成一個新數(shù),找到的4個數(shù)字分別為6、3、8、5,組成的數(shù)為6385,所以答案為D選項。14、有以下程序:#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、4B、34C、31D、32標(biāo)準(zhǔn)答案:C知識點解析:函數(shù)fun通過數(shù)組指針引用二維數(shù)組,其作用是遍歷s[1][k]~s[n一1][k],找出數(shù)組中最大的元素。15、對長度為n的線性表排序,在最壞情況下,比較次數(shù)不是n(n-1)/2的排序方法是()。A、快速排序B、冒泡排序C、直接插入排序D、堆排序標(biāo)準(zhǔn)答案:D知識點解析:在最壞的情況下,堆排序需要比較的次數(shù)為O(nlog2n),所以選擇D)。16、數(shù)據(jù)庫管理系統(tǒng)是()。A、操作系統(tǒng)的一部分B、在操作系統(tǒng)支持下的系統(tǒng)軟件C、一種編譯系統(tǒng)D、一種操作系統(tǒng)標(biāo)準(zhǔn)答案:B知識點解析:數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫的機(jī)構(gòu),它是一種系統(tǒng)軟件,負(fù)責(zé)數(shù)據(jù)庫中數(shù)據(jù)組織、數(shù)據(jù)操縱、數(shù)據(jù)維護(hù)、控制及保護(hù)和數(shù)據(jù)服務(wù)等。是一種在操作系統(tǒng)之上的系統(tǒng)軟件。17、有以下程序:#include<stdio.h>main(){inti=5;do{if(i%3==1)if(i%5==2){printf("*%d",i);break;}i++:}while(i!=0);printf("\n");}程序運(yùn)行后的輸出結(jié)果是()。A、*2*6B、*3*5C、*5D、*7標(biāo)準(zhǔn)答案:D知識點解析:do…while語句是先執(zhí)行后判斷,所以第一次先執(zhí)行循環(huán)體,判斷i%3==1的條件,由于i為5,所以余數(shù)為2,條件不成立,執(zhí)行i++,i的值為6,判斷while條件為真;第二次執(zhí)行循環(huán)體,同第一次循環(huán)的執(zhí)行過程一樣,i的值變?yōu)?,判斷while條件為真;第三次執(zhí)行循環(huán)體,此時i%3==1,條件成立,再判斷i%5==2也成立,打印*與i的值,即*7,然后執(zhí)行break語句,跳出循環(huán)。所以選擇D選項。18、若有以下定義:intx[10],*pt=x;則對x數(shù)組元素的正確引用是()。A、pt+3B、*&x[10]C、*(pt+10)D、*(x+3)標(biāo)準(zhǔn)答案:D知識點解析:沒有A選項的引用形式。*與&放在一起作用抵消,所以B選項錯誤,最大只能引用到x[9]。*(pt+i)表示引用指針pt所指元素后的第i個元素,所以c選項錯誤,最大只能為*(pt+9)。因此D選項正確。19、以下描述中,不是線性表順序存儲結(jié)構(gòu)特征的是()。A、可隨機(jī)訪問B、需要連續(xù)的存儲空間C、不便于插入和刪除D、邏輯相鄰的數(shù)據(jù)物理位置上不相鄰標(biāo)準(zhǔn)答案:D知識點解析:線性表的順序存儲是用一片連續(xù)的空間來存放數(shù)據(jù)元素,其特點是邏輯上相鄰的元素在物理位置上也相鄰。數(shù)據(jù)元素之間邏輯上的先后關(guān)系自動隱含在物理位置的相鄰元素之中,因此不需要另外開辟空間來保存元素之間的關(guān)系。20、設(shè)有關(guān)鍵碼序列(66,13,51,76,81,26,57,69,23),要按關(guān)鍵碼值遞增的次序排序,若采用快速排序法,并以第一個元素為劃分的基準(zhǔn),那么第一趟劃分后的結(jié)果為()。A、23,13,51,57,66,26,81,69,76B、13,23,26,51,57,66,81,76,69C、23,13,51,57,26,66,81,69,76D、23,13,51,57,81,26,66,69,76標(biāo)準(zhǔn)答案:A知識點解析:快速排序是起泡排序的改進(jìn)。在快速排序中,任取一個記錄,以它為基準(zhǔn)用交換的方法將所有的記錄分成兩部分,關(guān)鍵碼值比它小的在一部分,關(guān)鍵碼值比它大的在另一部分,再分別對兩個部分實施上述過程,一直重復(fù)到排序完成。21、對于一個正常運(yùn)行的C程序,下列敘述中正確的是()。A、程序的執(zhí)行總是從main函數(shù)開始,在main函數(shù)結(jié)束B、程序的執(zhí)行總是從程序的第一個函數(shù)開始,在main函數(shù)結(jié)束C、程序的執(zhí)行總是從main函數(shù)開始,在程序的最后一個函數(shù)中結(jié)束D、程序的執(zhí)行總是從程序中的第一個函數(shù)開始,在程序的最后一個函數(shù)中結(jié)束標(biāo)準(zhǔn)答案:A知識點解析:一個C語言源程序無論包括了多少函數(shù),總是從main函數(shù)開始執(zhí)行,從main函數(shù)結(jié)束。22、if語句的基本形式是:if(表達(dá)式)語句,以下關(guān)于“表達(dá)式”值的敘述中正確的是()。A、必須是邏輯值B、必須是整數(shù)值C、必須是正數(shù)D、可以是任意合法的數(shù)值標(biāo)準(zhǔn)答案:D知識點解析:if語句中的表達(dá)式可以是任意合法的數(shù)值,如常量,變量表達(dá)式。所以D選項正確。23、有以下程序:#include<stdio.h>main(){inta=2,b;b=a<<2;printf("%d\n",b);}程序運(yùn)行后的輸出結(jié)果是()。A、2B、4C、6D、8標(biāo)準(zhǔn)答案:D知識點解析:本題考查位運(yùn)算符,題目中將a向左移兩位,左移兩位表示乘以4,所以答案為8,選項D正確。24、以下選項中,合法的C語言常量是()。A、21.84B、’CPPC、’\1.0D、2MB標(biāo)準(zhǔn)答案:A知識點解析:21.84是浮點型常量,A項正確;字符常量是單引號括起來的一個字符,字符串常量是雙引號括起來的字符序列,BC兩項錯誤;C語言常量不能直接用未加引號的字母、數(shù)字組合,D項錯誤。25、在下列敘述中,錯誤的是()。A、C語言中,二維數(shù)組或多維數(shù)組是按行存放的B、賦值表達(dá)式b[1][2]=a[2][3]是正確的C、chara[1];a[0]=’A’與inta[1];a[0]=’A’等價D、數(shù)組名后的方括號內(nèi)可以為常量表達(dá)式,也可以為變量標(biāo)準(zhǔn)答案:D知識點解析:本題考查數(shù)組的4個知識點:①C語言中,二維數(shù)組或多維數(shù)組元素排列的順序是按行存放;②不同數(shù)組的元素之間可以相互賦值;③字符型數(shù)組中存放的是字符,int型數(shù)組中存放的是字符對應(yīng)的ASCII碼值,雖然在計算機(jī)內(nèi)部字符常量都是作為整型量來處理的,其對應(yīng)的整數(shù)值就是ASCII碼值,但兩者并不完全等價;④數(shù)組名后的方括號內(nèi)可以為常量,也可以為常量表達(dá)式,但不可以為變量。26、下列選項中,能正確定義數(shù)組的語句是()。A、intBum[0..2008];B、intnum[];C、intN=2008;intnun[N];D、#defineN2008intRum[N];標(biāo)準(zhǔn)答案:D知識點解析:C語言不允許定義動態(tài)數(shù)組,定義數(shù)組的大小必須為常量表達(dá)式。A選項錯誤,C語言中數(shù)組沒有此類型的定義方法;B選項錯誤,定義數(shù)組應(yīng)指明數(shù)組大小,如果不指明數(shù)組大小,需要給定初值的個數(shù);C選項錯誤,N為變量,不能用來定義數(shù)組大小。因此D選項正確。27、黑盒測試用例的主要根據(jù)是()。A、算法合理性B、程序外部功能C、相關(guān)數(shù)據(jù)結(jié)構(gòu)D、程序流程圖標(biāo)準(zhǔn)答案:B知識點解析:黑盒測試主要是對軟件的功能進(jìn)行測試和驗證,因此不用測試軟件內(nèi)部的相關(guān)內(nèi)容,包括算法、數(shù)據(jù)結(jié)構(gòu)和流程等。28、對建立良好的程序設(shè)計風(fēng)格,下面描述正確的是()。A、程序應(yīng)簡單、清晰、可讀性好B、符號名的命名只要符合語法C、充分考慮程序的執(zhí)行效率D、程序的注釋可有可無標(biāo)準(zhǔn)答案:A知識點解析:程序設(shè)計應(yīng)該簡單易懂,語句結(jié)構(gòu)應(yīng)該簡單直接,不應(yīng)該為提高效率而把語句復(fù)雜化。29、下列關(guān)于C語言數(shù)據(jù)文件的敘述中正確的是()。A、文件由ASCⅡ碼字符序列組成,C語言只能讀寫文本文件B、文件由二進(jìn)制數(shù)據(jù)序列組成,C語言只能讀寫二進(jìn)制文件C、文件由記錄序列組成,可按數(shù)據(jù)的存放形式分為二進(jìn)制文件和文本文件D、文件由數(shù)據(jù)流形式組成,可按數(shù)據(jù)的存放形式分為二進(jìn)制文件和文本文件標(biāo)準(zhǔn)答案:B知識點解析:本程序首先定義了靜態(tài)字符數(shù)組a,然后將指針p指向數(shù)組a的首地址,第一次for循環(huán),p=a,p指向數(shù)組的第一個元素,*p是取指針p所指地址的內(nèi)容,輸出p;第二次for循環(huán),p=p+2,則p指向數(shù)組的第三個元素,*p是取指針p所指地址的內(nèi)容,輸出o;第三次for循環(huán),p=p+2,則p指向數(shù)組的第5個元素,*p是取指針p所指地址的內(nèi)容,輸出r;第四次for循環(huán),p=p+2,則p指向數(shù)組的第7個元素,*p是取指針p所指地址的內(nèi)容,輸出m;結(jié)束循環(huán)。30、有以下C語言程序:#includevoidmain(){charch1,ch2;ch1=’R’+’5’一’2’;ch2=’R’+’5’一’1’3;printf(’’%c,%d\n’’,ch1,ch2);}已知字母R的ASCⅡ碼為82,程序運(yùn)行后的輸出結(jié)果是()。A、U,84B、T,83C、U,TD、T,U標(biāo)準(zhǔn)答案:A知識點解析:本題中將字符進(jìn)行整數(shù)運(yùn)算,其實是使用字符的ASCⅡ碼進(jìn)行運(yùn)算,運(yùn)算后ch1和ch2的ASCⅡ碼將為82+3和82+2,注意在程序輸出時用的格式是%c%d,因此,chi1輸出字符U(ASCⅡ碼為85),字符ch2輸出為整數(shù),即84。31、有以下程序:#includeintfun(intn);main(){inta=3,s;s=fun(a);s=s+fun(a);printf(’’%d\n’’,s);}intfun(intn){staticinta=1:n+=a++;returnn;}程序運(yùn)行后的輸出結(jié)果是()。A、17B、8C、9D、26標(biāo)準(zhǔn)答案:C知識點解析:靜態(tài)局部變量只在第一次調(diào)用函數(shù)時初始化一次,其他調(diào)用都會保留上一次調(diào)用結(jié)束時的值。第一次調(diào)用時將fun(a)的返回值賦給s,靜態(tài)局部變量初始化為1,所以n=4并返回,a自增為2:第二次調(diào)用時靜態(tài)局部變量a取上一次調(diào)用結(jié)束時的值2,所以n=5并返回,a自增為3。所以s=4+5=9。32、有以下程序:#lnclude#defineF(x)(x/x)*xmain(){intk=4,j=2;printf(’’%d,%d\n’’,F(xiàn)(k+j),F(xiàn)((j+k)));}程序運(yùn)行后的輸出結(jié)果是()。A、26,6B、28,6C、6,6D、26,26標(biāo)準(zhǔn)答案:A知識點解析:宏定義一定要先代入再計算,本題中F(k+j)、F(j+k)可以替換為:F(k+j)=(k+j/k+j)*k+j=(4+2/4+2)×4+2=26;F((j+k))=((j+k)/(j+k))*(j+k)=6。33、以下關(guān)于return語句的敘述中不正確的是()。A、一個自定義函數(shù)中必須有一條return語句B、一個自定義函數(shù)中可以根據(jù)不同情況設(shè)置多條return語句C、如果一個函數(shù)有多個return語句,那么不論運(yùn)行到哪一個return語句,該函數(shù)將結(jié)束D、沒有return語句的自定義函數(shù)在執(zhí)行完最后一條語句時返回到調(diào)用處標(biāo)準(zhǔn)答案:A知識點解析:return語句主要用于返回函數(shù)的值。在一個自定義函數(shù)中,可以根據(jù)小同的情況設(shè)置多條return語句返回函數(shù)的值,也可以不包含return語句。34、有以下程序#include<stdio.h>#defineN4voidfun(inta[][N]){inti;for(i=0;i<N;i++)a[0][i]+=a[N-1][N-1-i];}main(){intx[N][N]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},i;fun(x);for(i=0;i<N;i++)printf("%d,",x[i][i]);printf("\n");}程序運(yùn)行后的輸出結(jié)果是A、4,7,10,13,B、1,6,11,16,C、17,6,11,16,D、5,13,21,29,標(biāo)準(zhǔn)答案:C知識點解析:N=4,for(i=0,i<N,i++)printf(x[i][j]);此語句輸出x[0][0],x[1][1],x[2][2],x[3][3],其中只有x[0][0]的值在fun函數(shù)中發(fā)生改變,在fun函數(shù)中,當(dāng)i=0時,x[0][0]=x[0][0]+x[3][3]=17,程序運(yùn)行后的輸出結(jié)果是:6。因此答案為C選項。35、有以下程序#include<stdio.h>main(){inti;FILE*fp;for(i=0;i<3;i++){fp=fopen("res.txt","w");fputc(’K’+i,fp);fclose(fp);}}程序運(yùn)行后,在當(dāng)前目錄下會生成一個res.txt文件,其內(nèi)容是A、EOFB、MC、KLMD、L標(biāo)準(zhǔn)答案:B知識點解析:for循環(huán)中,每次都執(zhí)行打開文件res.txt、寫入文件、再關(guān)閉文件的操作,由于fopen函數(shù)使用’w’模式寫文件,所以每次打開res.txt后,都刪除文件中的原有數(shù)據(jù),再重新寫入新數(shù)據(jù)。所以文件最終的內(nèi)容只與最后一次for循環(huán)有關(guān),最后一次for循環(huán)是向文件res.txt寫入’K’+2,即M,正確答案是B選項。36、以下不是合法C語言轉(zhuǎn)義字符的是A、’\c’B、’\a’C、’\b’D、’\r’標(biāo)準(zhǔn)答案:A知識點解析:C語言中,’\a’表示響鈴,’\b’表示退格,’\r’表示回車不換行,故答案為A選項。37、若某二叉樹中的所有結(jié)點值均大于其左子樹上的所有結(jié)點值,且小于右子樹上的所有結(jié)點值,則該二叉樹遍歷序列中有序的是A、前序序列B、中序序列C、后序序列D、以上說法均可以標(biāo)準(zhǔn)答案:B知識點解析:二叉樹遍歷可以分為3種:前序遍歷(訪問根結(jié)點在訪問左子樹和訪問右子樹之前)、中序遍歷(訪問根結(jié)點在訪問左子樹和訪問右子樹兩者之間)、后序遍歷(訪問根結(jié)點在訪問左子樹和訪問右子樹之后)。由于結(jié)點值均大于其左子樹上的所有結(jié)點值,且小于右子樹上的所有結(jié)點值,那么只要遍歷時訪問根結(jié)點在訪問左子樹和右子樹之間,遍歷序列有序,即中序序列有序。故選B選項38、設(shè)有定義:intx[10],*p=x,i;,若要為數(shù)組x讀入數(shù)據(jù),以下選項正確的是A、for(i=0;i<10;i++)scanf("%d",p+i);B、for(i=0;i<10;i++)scanf("%d",*p+i);C、for(i=0;i<10;i++)scanf("%d",*(p+i));D、for(i=0;i<10;i++)scanf("%d",x[i]);標(biāo)準(zhǔn)答案:A知識點解析:C語言聲明scanf("<格式化字符串>",<地址表>);可知scanf()的第二個參數(shù)是地址,因此,從四個答案中可以判斷,只有選項A是p[i]的地址,其他的均是變量本身。故答案為A選項。二、程序填空題(本題共1題,每題1.0分,共1分。)39、下列給定程序中,函數(shù)fun的功能是:計算N×N矩陣的主對角線元素和反向?qū)蔷€元素之和,并作為函數(shù)值返回。要求先累加主對角線元素中的值,再累加反向?qū)蔷€元素中的值。例如,若N=3,有下列矩陣:123456789首先累加1、5、9,然后累加3、5、7,函數(shù)返回值為30。請在程序的下畫線處填入正確的內(nèi)容并將下畫線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:1#include<stdio.h>2#defineN43fun(intt[][N],intn)4{5inti,sum;6/*********found*********/7【1】;8for(i=0;i<n;i++)9/*********found*********/10sum+=【2】;11for(i=0;i<n;i++)12/*********found*********/13sum+=t[i][n-i-【3】];14returnsum;15}16main()17{18inti,j,t[][N]={21,2,13,24,25,16,47,38,29,11,32,54,42,21,3,10};19printf("\nTheoriginaldata:\n’’);20for(i=0;i<N;i++)21{22for(j=0;j<N;j++)23printf(’’%4df’’,t[i][j]);24printf(’’\n’’);25}26printf(’’Theresultis:%d’’,fun(t,N));27}標(biāo)準(zhǔn)答案:(1)sum=0(2)t[i][i](3)1知識點解析:填空1:變量sum用來儲存“和”結(jié)果,所以將其初始化為0。填空2:從題目中可以了解到,主對角線元素的行和列下標(biāo)是相同的,所以應(yīng)填入t[i][i]。填空3:對于反向?qū)蔷€元素的行和列的下標(biāo),它們的關(guān)系是相加和為n-1,所以應(yīng)填入1。三、程序修改題(本題共1題,每題1.0分,共1分。)40、下列給定程序是建立一個帶頭結(jié)點的單向鏈表,并用隨機(jī)函數(shù)為各結(jié)點賦值。函數(shù)fun的功能是將單向鏈表結(jié)點(不包括頭結(jié)點)數(shù)據(jù)域為偶數(shù)的值累加起來,并且作為函數(shù)值返回。請改正函數(shù)fun中的錯誤,使它能得出正確的結(jié)果。注意:部分源程序在文件MODI1.C中,不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:1#include<stdio.h>2#include<conio.h>3#include<stdlib.h>4typedefstructaa5{intdata;6structaa*next;7}NODE;8intfun(NODE*h)9{intsum=0;10NODE*p;11p=h->next;12/*********found*********/13while(p->next)14{if(p->data%2==0)15sum+=p=>data;16/*********found*********/17p=h->next;18}19returnsum;20}21NODE*creatlink(intn)22{23NODE*h,*p,*s;24inti;25h=p=(NODE*)malloc(sizeof(NODE));26for(i=:1;idata=rand()%16;30s->next=p->next;31p->next=s;32p=p->next;33}34p->next=NULL;35returnh;36}37outlink(NODE*h)38{NODE*p;39p=h->next;40printf(’’\n\nTheLIST:\n\nHEADH’’);41while(p)42{printf(’’->%d’’,p->data);43p=p->next;)44printff(’’\n’’);45}46voidmain()47{NODE*head;intsum;48system(’’CLS’’);49head=creatlink(10);50outlink(head);51sum=fun(head);52printf(’’\nSUM=%d’’,sum);53}標(biāo)準(zhǔn)答案:(1)while(p!=NULL)(2)p=p->next;知識點解析:(1)判斷當(dāng)前指針p指向的結(jié)點是否存在,若存在則對該結(jié)點數(shù)據(jù)域進(jìn)行判斷操作。(2)判斷結(jié)束后指針指向下一個結(jié)點。四、程序設(shè)計題(本題共1題,每題1.0分,共1分。)41、請編寫函數(shù)fun,該函數(shù)的功能是:判斷字符串是否為回文,若是,則函數(shù)返回1,主函數(shù)中輸出”YES”,否則返回0,主函數(shù)中輸出”NO”?;匚氖侵疙樧x和倒讀都一樣的字符串。例如,字符串LEVEL是回文,而字符串123312就不是回文。注意:部分源程序在文件PROG1.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:1#include<stdio.h>2#defineN803intfun(char*str)4{56}7main()8{9chars[N];10FILE*out;11char*test[]={’’1234321’’,’’123421’’,’’123321’’,’’abcdCBA’’};12inti;13printf(’’Enterastring:’’);14gets(s);15printf(’’\n\n’’);16puts(s);17if(fun(s))18printf(’’YES\n’’);19else20printf(’’NO\n’’);21/*****************/22out=fopen(’’out.dat’’,’’w’’);23for(i=0;i<4;i++)24if(fun(test[i]))25fprintf(out,’’YES\n’’);26else27fprintf(out,’’NO\n’’);28fclose(out);29/*****************/30}標(biāo)準(zhǔn)答案:1intfun(char*str)2{3inti,n=0,fg=1;4char*p=str;5while(*p)/*將指針p置位到字符串末尾,并統(tǒng)計字符數(shù)*/6{7n++;8p++;9}10for(i=0;i知識點解析:判斷回文就是將第一個字符與最后一個字符比較,第二個字符與倒數(shù)第二個字符進(jìn)行比較,依此類推,直到中間的字符,如果比較的結(jié)果都相同,那么這個字符串就是回文,否則不是。程序中循環(huán)語句用來遍歷字符串,條件語句用來判斷當(dāng)前字符與對應(yīng)位置的字符是否相同。國家二級(C語言)機(jī)試模擬試卷第3套一、選擇題(本題共40題,每題1.0分,共40分。)1、數(shù)據(jù)管理技術(shù)發(fā)展的三個階段中,()沒有專門的軟件對數(shù)據(jù)進(jìn)行管理。I.人工管理階段II.文件系統(tǒng)階段III.?dāng)?shù)據(jù)庫階段A、僅IB、僅IIIC、I和IID、II和III標(biāo)準(zhǔn)答案:A知識點解析:數(shù)據(jù)管理技術(shù)發(fā)展的三個階段中,只有人工管理階段,沒有操作系統(tǒng),沒有管理數(shù)據(jù)的軟件,數(shù)據(jù)處理方式是批處理。在文件系統(tǒng)階段,操作系統(tǒng)中已經(jīng)有了專門數(shù)據(jù)管理軟件,一般稱為文件系統(tǒng)。在數(shù)據(jù)庫系統(tǒng)階段,出現(xiàn)了統(tǒng)一管理數(shù)據(jù)的專門軟件系統(tǒng).即數(shù)據(jù)庫管理系統(tǒng)。2、下面程序的運(yùn)行結(jié)果是()。#include<stdio.h>main(){inti;for(i=1;i<=5;i++){if(i%2)printf("*");elseprintf("#");}}A、*#*#*B、#*#*#*C、*#*#D、#*#*標(biāo)準(zhǔn)答案:A知識點解析:分析程序可知,程序循環(huán)5次,然后利用if語句決定每次循環(huán)時輸出的字符。當(dāng)i為奇數(shù)時,i%2=1,if(i%2)為真,輸出“*”:當(dāng)j為偶數(shù)時,i%2=0,if(i%2)為假,執(zhí)行else語句,輸出“#”,所以當(dāng)i取1、3、5值時輸出“*”,當(dāng)i取2、4值時輸出“#”。3、請閱讀以下程序:#include#includevoidfun(intb[]){staticinti=0;do{b[i]+=b[i+1];}while(++i<2);)main(){intk,a[5]={1,3,5,4,9};fun(a);for(k=0;k<5;k++)printf("%d",a[k]);}上面程序的輸出是()。A、13579B、48579C、48549D、48999標(biāo)準(zhǔn)答案:C知識點解析:本題考查的是for循環(huán)以及while循環(huán)。fun函數(shù)中定義了靜態(tài)變量i=0,fun(a)使得a[0]=a[0]+a[1]=4,a[1]=a[1]+a[2]=8,此時i的值變?yōu)?,++i<2不成立,所以do-while循環(huán)結(jié)束,輸出數(shù)組a的各元素即得到48549。4、下列二叉樹描述中,正確的是()。A、任何一棵二叉樹必須有一個度為2的結(jié)點B、二叉樹的度可以小于2C、非空二叉樹有0個或1個根結(jié)點D、至少有2個根結(jié)點標(biāo)準(zhǔn)答案:B知識點解析:二叉樹是由n≥0個結(jié)點的有限集,合構(gòu)成,此集合或者為空集,或者由一個根結(jié)點及兩棵互不相交的左右子樹組成,并且左右子樹都是二叉樹。二叉樹可以是空集合,根可以有空的左子樹或空的右子樹。二叉樹不是樹的特殊情況,它們是兩個概念。二叉樹具有如下兩個特點:①非空二叉樹只有一個根結(jié)點。②每一個結(jié)點最多有兩棵子樹,且分別稱為該結(jié)點的左子樹與右子樹。5、有以下程序:#includemain(){intx,y,z;x=y=1;z=x++,y++,++y;printf(“%d,%d,%d\n”,x,y,z);}程序運(yùn)行后的輸出結(jié)果是()。A、2,3,3B、2,3,2C、2,3,1D、2,2,1標(biāo)準(zhǔn)答案:C知識點解析:z=x++,y++.++y;因為賦值運(yùn)算符的優(yōu)先級高于逗號運(yùn)算符的優(yōu)先級,所以可以將上式表示成(z=x++),(y++),(++y)。然后從左向右先計算表達(dá)式z=x++,因為x++先使用后自增,所以z的值為1,x的值為2。再計算逗號表達(dá)式第二個表達(dá)式y(tǒng)++,此時y的值為2,最后計算第三個表達(dá)式++y,y的值為3。6、以下敘述中不正確的是()。A、在不同的函數(shù)中可以使用相同的名字的變量B、函數(shù)中的形式參數(shù)是局部變量C、在一個函數(shù)內(nèi)定義的變量只在本函數(shù)范圍內(nèi)有效D、在一個函數(shù)內(nèi)的復(fù)合語句中定義的變量在本函數(shù)范圍內(nèi)有效標(biāo)準(zhǔn)答案:D知識點解析:此題考查的是變量的作用范圍。選項D)中,在一個函數(shù)的復(fù)合語句中定義的變量是局部變量,只在定義此變量的復(fù)合語句內(nèi)有效,并不是在整個函數(shù)體內(nèi)都有效。7、下列選項中,能正確定義數(shù)組的語句是()。A、intnum[0..2008];B、intnum[];C、intN=2008;D、#deftneN2008intBum[N];intBum[N];標(biāo)準(zhǔn)答案:D知識點解析:C語言不允許定義動態(tài)數(shù)組,定義數(shù)組的大小必須為常量表達(dá)式。A選項錯誤,C語言中數(shù)組沒有此類型的定義方法;B選項錯誤,定義數(shù)組應(yīng)指明數(shù)組大小,如果不指明數(shù)組大小,需要給定初值的個數(shù);C選項錯誤,N為變量,不能用來定義數(shù)組大小。因此D選項正確。8、下面程序的運(yùn)行結(jié)果是()。#include#includemain(){char*s1="abDuj";char*s2="ABdUG":intt;t=strcmp(s1,s2);printf("%d",t);}A、正數(shù)B、負(fù)數(shù)C、零D、不確定的值標(biāo)準(zhǔn)答案:A知識點解析:本題考查字符串比較函數(shù)和字符串的比較原則的兩個知識點:①原則是依次比較兩個字符串同一位置的一對字符,若它們的ASCII碼值相同,則繼續(xù)比較下一對字符,若它們的ASCII碼值不同,則ASCII碼值較大的字符所在的字符串較大;若所有字符相同,則兩個字符串相等;若一個字符串全部i個字符與另一個字符串的前i個字符相同,則字符串較長的較大。②strcmp(s1,s2)的返回值,當(dāng)str1str2,返回值>0。9、有以下程序:#include<stdio.h>#include<stdlib.h>main(){int*a,*b,*c;a=b=c=(int*)malloc(sizeof(int));*a=1;*b=2,*c=3;a=b;printf("%d,%d,%d\n",*a,*b,*c);}程序運(yùn)行后的輸出結(jié)果是()。A、1,1,3B、2,2,3C、1,2,3D、3,3,3標(biāo)準(zhǔn)答案:D知識點解析:malloc函數(shù)動態(tài)分配一個整型的內(nèi)存空間,然后把函數(shù)返回的地址用(int*)強(qiáng)制類型轉(zhuǎn)換為整型指針,再把它賦給a,b,c,即讓指針變量a,b,c都指向剛申請的內(nèi)存空間。所以只有最后一個賦值語句*c=3的值保留在了該空間內(nèi),因為a,b,c三個指針變量均指向該空間,所以打印該空間內(nèi)的數(shù)值為3。10、以下程序中函數(shù)sort的功能是對a數(shù)組中的數(shù)據(jù)進(jìn)行由大到小的排序voidsort(inta[],intn){inti,j,t;for(i=0;iA、1,2,3,4,5,6,7,8,9,10,B、10,9,8,7,6,5,4,3,2,1,C、1,2,3,8,7,6,5,4,9,10,D、1,2,10,9,8,7,6,5,4,3,標(biāo)準(zhǔn)答案:C知識點解析:程序中sort函數(shù)的功能是對數(shù)組中的數(shù)據(jù)進(jìn)行從大到小的排序。主函數(shù)main中調(diào)用函數(shù)“sort(&aa[3],5);”,使得數(shù)組aa中從第4個元素開始的5個元素進(jìn)行從大到小的排序,數(shù)組aa中的元素變?yōu)椋?,2,3,8,7,6,5,4,9,10。并輸出這些元素。11、在下列模式中,能夠給出數(shù)據(jù)庫物理存儲結(jié)構(gòu)與物理存取方法的是()。A、外模式B、內(nèi)模式C、概念模式D、邏輯模式標(biāo)準(zhǔn)答案:B知識點解析:數(shù)據(jù)庫系統(tǒng)的三級模式是概念模式、外模式和內(nèi)模式。概念模式是數(shù)據(jù)庫系統(tǒng)中全局?jǐn)?shù)據(jù)邏輯結(jié)構(gòu)的描述,是全體用戶公共數(shù)據(jù)視圖。外模式也稱子模式或用戶模式,它是用戶的數(shù)據(jù)視圖,給出了每個用戶的局部數(shù)據(jù)描述。內(nèi)模式又稱物理模式,它給出了數(shù)據(jù)庫物理存儲結(jié)構(gòu)與物理存取方法,所以選擇B。12、以下敘述中正確的是()。A、C程序的基本組成單位是語句B、C程序中的每一行只能寫一條語句C、簡單C語句必須以分號結(jié)束D、C語言必須在一行內(nèi)寫完標(biāo)準(zhǔn)答案:C知識點解析:C程序的基本組成單位是函數(shù),A項錯誤;C程序以分號作為每個語句結(jié)尾,一行能寫多條語句,也可以將一條語句分幾行書寫,BD兩項錯誤;而簡單C語言語句必須以分號結(jié)束,所以C項正確。13、以下程序的運(yùn)行結(jié)果是()。#includemain(){inta=3,b=4,c=8,d=4,m=1,n=3;printf("%d\n",(m=a>b)&&(n=c>d));}A、0B、1C、2D、3標(biāo)準(zhǔn)答案:A知識點解析:邏輯與(&&)運(yùn)算符的功能是:當(dāng)“&&”運(yùn)算符兩邊的運(yùn)算對象均為1時,整個表達(dá)式的值為1,否則為0。因為a=314、有以下程序:#include<stdio.h>main(){inta=6,b=7,m=1;switch(a%2){case0:m++;break;case1:m++:switch(b%2){defaut:m++;case0:m++;break;}}printf(’’%d\n’’,m);}程序運(yùn)行后的輸出結(jié)果是()。A、1B、2C、3D、4標(biāo)準(zhǔn)答案:B知識點解析:本題考查switch語句。因為“a=6”,所以“a%2=0”,因此第一個switc

溫馨提示

  • 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

提交評論