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

下載本文檔

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

文檔簡介

國家二級C語言機(jī)試(選擇題)模擬試卷21(共9套)(共270題)國家二級C語言機(jī)試(選擇題)模擬試卷第1套一、選擇題(本題共25題,每題1.0分,共25分。)1、以下選項中關(guān)于程序模塊化的敘述錯誤的是A、把程序分成若干相對獨(dú)立、功能單一的模塊,可便于重復(fù)使用這些模塊B、可采用自底向上、逐步細(xì)化的設(shè)計方法把若干獨(dú)立模塊組裝成所要求的程序C、把程序分成若干相對獨(dú)立的模塊,可便于編碼和調(diào)試D、可采用自頂向下、逐步細(xì)化的設(shè)計方法把若干獨(dú)立模塊組裝成所要求的程序標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:如果應(yīng)用結(jié)構(gòu)化程序設(shè)計方法設(shè)計程序,那么可采用自頂向下,逐步細(xì)化的設(shè)計方法把若干獨(dú)立模塊組裝成所要求的程序。2、以下敘述中正確的是()。A、如果企圖通過一個空指針來訪問一個存儲單元,將會得到一個出錯信息B、即使不進(jìn)行強(qiáng)制類型轉(zhuǎn)換,在進(jìn)行指針賦值運(yùn)算時,指針變量的基類型也可以不同C、設(shè)變量p是一個指針變量,則語句p=0;是非法的,應(yīng)該使用p=NULL;D、指針變量之間不能用關(guān)系運(yùn)算符進(jìn)行比較標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:空指針意味著該指針沒有指向任何具體的變量,所以不能訪問一個存儲單元,選項A正確。指針的賦值運(yùn)算只能在同一數(shù)據(jù)類型之間進(jìn)行,故選項B錯。語句p=0和p=NULL是一樣的,都是把一個空指針賦給指針變量p,故選項C錯。指針之間能進(jìn)行關(guān)系運(yùn)算,比較的是地址值的大小,選項D錯。答案選A。3、軟件按功能可以分為:應(yīng)用軟件、系統(tǒng)軟件和支撐軟件(或工具軟件)。下面屬于應(yīng)用軟件的是()。A、編譯程序B、操作系統(tǒng)C、教務(wù)管理系統(tǒng)D、匯編程序標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:編譯軟件、操作系統(tǒng)、匯編程序都屬于系統(tǒng)軟件,只有C選項教務(wù)管理系統(tǒng)才是應(yīng)用軟件。4、在快速排序法中,每經(jīng)過一次數(shù)據(jù)交換(或移動)后()。A、只能消除一個逆序B、能消除多個逆序C、不會產(chǎn)生新的逆序D、消除的逆序個數(shù)一定比新產(chǎn)生的逆序個數(shù)多標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:在一個排列中,如果一對數(shù)的前后位置與大小順序相反,即前面的數(shù)大于后面的數(shù),那么它們就稱為一個逆序??焖倥判虻乃枷胧牵簭木€性表中選取一個元素,設(shè)為T,將線性表中后面小于T的元素移到前面,而前面大于T的元素移到后面,結(jié)果就將線性表分成兩部分(稱兩個子表),T插入到其分割線的位置處,這個過程稱為線性表的分割,然后再用同樣的方法對分割出的子表再進(jìn)行同樣的分割。快速排序不是對兩個相鄰元素進(jìn)行比較,可以實線通過一次交換而消除多個逆序,但由于均與T(基準(zhǔn)元素)比較,也可能會產(chǎn)生新的逆序。5、下列選項中不屬于結(jié)構(gòu)化程序設(shè)計原則的是A、可封裝B、自頂向下C、模塊化D、逐步求精標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:結(jié)構(gòu)化設(shè)計方法的主要原則可以概括為自頂向下、逐步求精、模塊化、限制使用goto語句。6、設(shè)某棵樹的度為3,其中度為3、1、0的結(jié)點(diǎn)個數(shù)分別為3、4、15。則該樹中總結(jié)點(diǎn)數(shù)為A、22B、30C、35D、不可能有這樣的樹標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:本題采用畫圖法來求出結(jié)果。首先先畫出包含3個度為3的結(jié)點(diǎn);然后再添加4個度為1的結(jié)點(diǎn),此時最大度為0的結(jié)點(diǎn)數(shù)為8。根據(jù)題目中描述的度為0的結(jié)點(diǎn)數(shù)有15個,這時要在書中添加度為2的結(jié)點(diǎn),直到度為0的結(jié)點(diǎn)數(shù)位15。畫圖結(jié)束后,不管是什么樣的樹,總結(jié)點(diǎn)數(shù)都是30。7、軟件按功能可以分為:應(yīng)用軟件、系統(tǒng)軟件和支撐軟件(或工具軟件)。下面屬于系統(tǒng)軟件的是A、編輯軟件B、操作系統(tǒng)C、教務(wù)管理系統(tǒng)D、瀏覽器標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:軟件根據(jù)應(yīng)用目標(biāo)的不同,是多種多樣的。軟件按功能可以分為:應(yīng)用軟件、系統(tǒng)軟件、支撐軟件(或工具軟件)。應(yīng)用軟件是為解決特定領(lǐng)域的應(yīng)用而開發(fā)的軟件。系統(tǒng)軟件是計算機(jī)管理自身資源,提高計算機(jī)使用效率并為計算機(jī)用戶提供各種服務(wù)的軟件。支撐軟件是介于系統(tǒng)軟件和應(yīng)用軟件之間,協(xié)助用戶開發(fā)軟件的工具性軟件,包括輔助和支持開發(fā)和維護(hù)應(yīng)用軟件的工具軟件,還包括輔助管理人員控制開發(fā)進(jìn)程和項目管理的工具軟件。8、下列選項中,當(dāng)x為大于1的奇數(shù)時,值為0的表達(dá)式是()。A、x%2==0B、x/2C、x%2!=0D、x%2==1標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:算術(shù)運(yùn)算符的優(yōu)先級高于關(guān)系運(yùn)算符的優(yōu)先級,所以當(dāng)x為大于1的奇數(shù)時,A選項的值為假,即0。B選項的值為不定值,但絕對不是0。C選項的值為真,即1。D選項的值為真,即1。9、有嵌套的if語句:if(a<b)if(a<c)k=a;elsek=c:elseif(b<c=k=b;elsek=c:以下選項中與上述if語句等價的語句是()。A、k=(a<b)?((b<c)?a:b):((b>c)?b:c);B、k=(a<b)?((a<c)?a:c):((b<c)?b:c);C、k=(a<b)?a:b;k=(b<c)?b:c;D、k=(a<b)?a:b;k=(a<e)?a:c;標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:題目中嵌套語句的含義是當(dāng)a<b且a<c成立時,將a的值賦給k,如果a<b成立而a<c不成立,則將c的值賦給k。如果a<h不成立而b<c成立,則將b的值賦給k,如果a<b不成立且b<c也不成立,則將c的值賦給k。判斷條件表達(dá)式,只有B選項可以表示這個含義。10、以下程序段中的變量已正確定義for(i=0;i<4;i++,i++)for(k=1;k<3;k++);printf("*");程序段的輸出結(jié)果是A、********B、****C、**D、*標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:本題考查循環(huán)語句,題中第二個(內(nèi)層)for循環(huán)之后有一個分號,意思是每次循環(huán)中的操作為空,不執(zhí)行任何操作。再循環(huán)結(jié)束后執(zhí)行printf語句,即只打出一個*。11、若有代數(shù)式(其中e僅代表自然對數(shù)的底數(shù),不是變量),則以下能夠正確表示該代數(shù)式的C語言表達(dá)式是()。A、sqrt(fabs(pow(n,x)+exp(X)))B、sqrt(fabs(pow(n,x)+pow(x,e)))C、sqrt(abs(n^x+e^x))D、sqrt(fabs(pow(x,n)+exp(x)))標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:B選項中函數(shù)pow(x,e)錯誤,應(yīng)該直接使用exp(x)函數(shù)。C選項中函數(shù)abs(n^x+e^x)錯誤,應(yīng)該使用fabs()返回浮點(diǎn)數(shù)的絕對值。D選項中pow(x,n)參數(shù)順序錯誤。12、以下選項中合法的常量是A、2.7eB、999C、123E0.2D、0Xab標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:0xab是十六進(jìn)制表示的常量。13、已知字符’A’的ASCII代碼值是65,字符變量c1的值是’A’,c2的值是’D’。則執(zhí)行語句printf("%d,%d",c1,c2-2);的輸出結(jié)果是A、A,68B、A,BC、65,66D、65,68標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:在C語言中,字符常量在內(nèi)存中占一個字節(jié),存放的是字符的ASCII碼值。所有的字符常量都作為整型量來處理。在本題中輸出語句用整型格式輸出字符時,輸出的是其ASCII碼值。因為字符’A’和’D’的ASCⅡ碼值分別為65和68,所以c2.2=68.2=66。14、有以下說明和定義語句structstudent{intage;charnum[8];};structstudentstu[3]={{20,"200401"},{21,"200402"},{19,"200403"}};structstudent*p=stu;以下選項中引用結(jié)構(gòu)體變量成員的表達(dá)式錯誤的是A、(p++)->numB、P->numC、(*p).numD、stu[3].a(chǎn)ge標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:本題考查結(jié)構(gòu)體和結(jié)構(gòu)體指針,stu是一個結(jié)構(gòu)體數(shù)組,p是結(jié)構(gòu)體指針,且p指向stu數(shù)組,即p指向了stu數(shù)組的首元素地址。選項A)中p++表示先引用p指針,然后p指向下一個元素,(p++)->num表示取出stu首元素的num值,然后p指向stu[1]元素地址;選項B)是通過結(jié)構(gòu)體指針訪問結(jié)構(gòu)體元素,使用“->”運(yùn)算符;選項C)中*p代表stu[0]元素,因此(*p)num表示stu[0].num;選項D)中,stu數(shù)組的長度為3,stu[3]已經(jīng)超出數(shù)組范圍,錯誤。15、以下選項中,不合法的C語言用戶標(biāo)識符是A、AaBcB、a-bC、a_bD、_1標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:在C語言中的用戶標(biāo)識符只能由字母,數(shù)字和下劃母組成,并且第一個字符必須是字母或下劃線,在選項B中出現(xiàn)了非法的字符“-”。16、閱讀以下程序#include<stdio.h>main(){intcase;floatprintF;printf("請輸入2個數(shù):");scanf("%d%f",&case,&printF);printf("%d%f\n",case,printF);}該程序在編譯時產(chǎn)生錯誤,其出錯原因是A、定義語句出錯,printF不能用作用戶自定義標(biāo)識符B、定義語句出錯,case是關(guān)鍵字,不能用作用戶自定義標(biāo)識符C、定義語句無錯,scanf不能作為輸入函數(shù)使用D、定義語句無錯,printf不能輸出case的值標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:case是C語言中的一個關(guān)鍵字,不能用作用戶標(biāo)識符來使用,所以這段程序代碼在編譯時就會出錯。17、以下敘述正確的是()。A、do-while語句構(gòu)成的循環(huán),當(dāng)while語句中的表達(dá)式值為0時結(jié)束循環(huán)B、do-while語句和while-do構(gòu)成的循環(huán)功能相同C、while-do語句構(gòu)成的循環(huán),當(dāng)while語句中的表達(dá)式值為非0時結(jié)束循環(huán)D、do-while語句構(gòu)成的循環(huán),必須用break語句退出循環(huán)標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:沒有while-do循環(huán),選項B)錯誤;不管是while語句還是do-while語句都是判定表達(dá)式的值為0時結(jié)束循環(huán),選項A)正確,選項C)錯誤;循環(huán)語句只要循環(huán)條件不滿足就會退出循環(huán),不必非得用break語句,選項D)錯誤;答案選A)。18、在C語言中,函數(shù)返回值的類型最終取決于A、函數(shù)定義時在函數(shù)首部所說明的函數(shù)類型B、return語句中表達(dá)式值的類型C、調(diào)用函數(shù)時主調(diào)函數(shù)所傳遞的實參類型D、函數(shù)定義時形參的類型標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:C語言中函數(shù)的返回值類型是由定義函數(shù)時在函數(shù)首部所聲明的類型確定的。19、下列選項中,能夠滿足“只要字符串s1等于字符串s2,則執(zhí)行ST”要求的是A、if(s1==s2)ST;B、if(strcpy(s1,s2)==1)ST;C、iffstrcmp(s2,s1)==0)ST;D、if(s1-s2==0)ST;標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:在C語言中要對兩個字符串的大小進(jìn)行比較,就需要調(diào)用字符串比較函數(shù)strcmp(),如果這個函數(shù)的返回值等于0,說明兩個字符串相等。20、有以下程序,程序運(yùn)行后的輸出結(jié)果是main(){intm=1,n=2,*p=&m,*q=&n,*r;r=p;p=q;q=r;printf("%d,%d,%d,%d\n",m,n,*p,*q);}A、1,2,1,2B、1,2,2,1C、2,1,2,1D、2,1,1,2標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:在主函數(shù)定義了3個整數(shù)指針變量p,q,r,并且使P指向m,q指向n,再執(zhí)行“r=p;p=q;q=r;”這三條語句,使q指向m,p指向n,再輸出變量“m,n,*p,*q”時,它們值分別為1,2,2,1。21、以下敘述中正確的是A、結(jié)構(gòu)體類型中的各個成分均不能是數(shù)組或指針B、結(jié)構(gòu)體類型的變量,不能在聲明結(jié)構(gòu)體類型組成時一起定義C、使用typedef定義新類型名后,新類型名與原類型名實際上是等價的D、元素為結(jié)構(gòu)體類型的數(shù)組,只能在聲明過結(jié)構(gòu)體類型之后,單獨(dú)進(jìn)行定義標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:C語言允許用tyoedef說明一種新類型名,typedef語句的作用僅僅是用“標(biāo)識符”來代表已存在的“類型名”,并未產(chǎn)生新的數(shù)據(jù)類型,原有類型名依然有效。結(jié)構(gòu)體變量定義有下面三種形式;(1)先定義結(jié)構(gòu),再說明結(jié)構(gòu)變量。(2)在定義結(jié)構(gòu)類型的同時說明結(jié)構(gòu)變量。(3)直接說明結(jié)構(gòu)變量。22、有以下程序main(){unsignedchara=8,c;C=a>>3:printf("%d\n",c);}程序運(yùn)行后的輸出結(jié)果是A、16B、32C、1D、0標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:在程序中對無符號字符變量a的值執(zhí)行右移3位運(yùn)算后,相當(dāng)于a/8,其值等于1,再賦給變量c。23、有以下程序#includeintfun(inta,intB){returna+b;}main(){intx=6,y=7,z=8,r;r=fun(fun(x,y),z--);printf("%d\n",r);}程序運(yùn)行后的輸出結(jié)果是A、21B、15C、20D、31標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:函數(shù)fun的功能是返回兩個形參的和。調(diào)用函數(shù)fun(x,y)時,將變量x=6和y=7的值分別傳送變量a和b,并且通過語句returna+b;將13返回給主函數(shù)。繼續(xù)調(diào)用函數(shù)fun(13,z--),這里z--指將z的值參與運(yùn)算后,再將z的值減1操作;將13和8分別傳送變量a和b,且通過語句returna+b;將21返回給主函數(shù)。因此A選項正確。24、結(jié)構(gòu)化程序設(shè)計的基本原則不包括()。A、多態(tài)性B、自頂向下C、模塊化D、逐步求精標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:結(jié)構(gòu)化程序設(shè)計的思想包括:自頂向下、逐步求精、模塊化、限制使用goto語句,所以選擇A)。25、以下敘述中正確的是A、函數(shù)的返回值不能是結(jié)構(gòu)體類型B、在調(diào)用函數(shù)時,可以將結(jié)構(gòu)體變量作為實參傳給函數(shù)C、函數(shù)的返回值不能是結(jié)構(gòu)體指針類型D、結(jié)構(gòu)體數(shù)組不能作為參數(shù)傳給函數(shù)標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:本題考查結(jié)構(gòu)體變量作為函數(shù)參數(shù),函數(shù)返回可以是結(jié)構(gòu)體類型,也可以是結(jié)構(gòu)體類型的指針,結(jié)構(gòu)體數(shù)組可以作為參數(shù)傳給函數(shù)。國家二級C語言機(jī)試(選擇題)模擬試卷第2套一、選擇題(本題共25題,每題1.0分,共25分。)1、在線性表的順序存儲結(jié)構(gòu)中,其存儲空間連續(xù),各個元素所占的字節(jié)數(shù)()。A、不同,但元素的存儲順序與邏輯順序一致B、不同,且其元素的存儲順序可以與邏輯順序不一致C、相同,元素的存儲順序與邏輯順序一致D、相同,但其元素的存儲順序可以與邏輯順序不一致標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:在線性表的順序存儲結(jié)構(gòu)中,其存儲空間連續(xù),各個元素所占的字節(jié)數(shù)相同,在存儲空間中是按邏輯順序依次存放的。2、以下敘述中正確的是A、在C語言程序設(shè)計中,所有函數(shù)必須保存在一個源文件中’B、在算法設(shè)計時,可以把復(fù)雜任務(wù)分解成一些簡單的子任務(wù)C、只要包含了三種基本結(jié)構(gòu)的算法就是結(jié)構(gòu)化程序D、結(jié)構(gòu)化程序必須包含所有的三種基本結(jié)構(gòu),缺一不可標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:模塊化設(shè)計思想,就是把復(fù)雜的任務(wù)分成簡單的子任務(wù),心函數(shù)或者過程描述子任務(wù),C語言中一個程序可以包括多個源文件,每個源文件可以有符干個函數(shù),結(jié)構(gòu)化的程序由順序結(jié)構(gòu)、循環(huán)結(jié)構(gòu)和選擇結(jié)構(gòu)三種基本結(jié)構(gòu)組成,不一定全要包括這三種結(jié)構(gòu),而算法不等于程序。3、下列對隊列的描述中正確的是()。A、隊列屬于非線性表B、隊列按“先進(jìn)后出”原則組織數(shù)據(jù)C、隊列在隊尾刪除數(shù)據(jù)D、隊列按“先進(jìn)先出”原則組織數(shù)據(jù)標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:隊列(queue)是指允許在一端進(jìn)行插入而在另一端進(jìn)行刪除的線性表。允許插入的一端稱為隊尾;允許刪除的一端稱為隊頭。在隊列這種數(shù)據(jù)結(jié)構(gòu)中,最先插入的元素將最先能夠被刪除;反之,最后插入的元素將最后才能被刪除。因此,隊列又稱“先進(jìn)先出”或“后進(jìn)后出”的線性表。4、在面向?qū)ο蠓椒ㄖ?,不屬于“對象”基本特點(diǎn)的是A、一致性B、分類性C、多態(tài)性D、標(biāo)識唯一性標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:對象具有如下特征:標(biāo)識惟一性、分類性、多態(tài)性、封裝性、模塊獨(dú)立性。5、下列不屬于軟件工程3個要素的是,()。A、工具B、過程C、方法D、環(huán)境標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:軟件工程包括3個要素,即方法、工具和過程。方法是完成軟件工程項目的技術(shù)手段;工具支持軟件的開發(fā)、管理、文檔生成;過程支持軟件開發(fā)的各個環(huán)節(jié)的控制、管理。6、下列定義變量的語句中錯誤的是()。A、int_int;B、doubleint_;C、charFor;D、floatUS$;標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:C語言規(guī)定,變量命名必須符合標(biāo)識符的命名規(guī)則。D選項中包含了非法字符“$”,所以錯誤。標(biāo)識符由字母、數(shù)字或下劃線組成,且第一個字符必須是大小寫英文字母或者下劃線,而不能是數(shù)字。大寫字符與小寫字符被認(rèn)為是兩個不同的字符,所以For不是關(guān)鍵字for。7、數(shù)據(jù)庫技術(shù)的根本目標(biāo)是要解決數(shù)據(jù)的A、存儲問題B、共享問題C、安全問題D、保護(hù)問題標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:數(shù)據(jù)庫中的數(shù)據(jù)具有“集成”、“共享”之特點(diǎn),即數(shù)據(jù)庫集中了各種應(yīng)用的數(shù)據(jù),進(jìn)行統(tǒng)一地構(gòu)造與存儲,而使它們能被不同的應(yīng)用程序所使用。因而數(shù)據(jù)庫技術(shù)的根本目標(biāo)是解決數(shù)據(jù)的共享問題。8、某系統(tǒng)總體結(jié)構(gòu)如下圖所示該系統(tǒng)結(jié)構(gòu)圖是A、層次結(jié)構(gòu)B、網(wǎng)狀結(jié)構(gòu)C、分支結(jié)構(gòu)D、循環(huán)結(jié)構(gòu)標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:層次結(jié)構(gòu)(hierarchy)是一種操作系統(tǒng)的組織結(jié)構(gòu),其提供了一種隔離操作系統(tǒng)各層功能的模型。其包括歸屬層次結(jié)構(gòu)dissonance-attributionhierarchy維度層次結(jié)構(gòu)diInensionhierarchy層次結(jié)構(gòu)數(shù)據(jù)庫hierarchicaldatabase等。網(wǎng)狀結(jié)構(gòu)這一名詞來自早期解剖學(xué)家用光學(xué)顯微鏡對腦干中央?yún)^(qū)網(wǎng)絡(luò)狀外觀的描述,在光鏡下這部分組織學(xué)的特點(diǎn)是神經(jīng)細(xì)胞分散,形態(tài)各異,大小不等,神經(jīng)纖維交錯穿行其間,形成一種灰白質(zhì)交織的結(jié)構(gòu),稱之為網(wǎng)狀結(jié)構(gòu)。分支結(jié)構(gòu)的執(zhí)行是依據(jù)一定的條件選擇執(zhí)行路徑,而不是嚴(yán)格按照語句出現(xiàn)的物理順序。分支結(jié)構(gòu)的程序設(shè)計方法的關(guān)鍵在于構(gòu)造合適的分支條件和分析程序流程,根據(jù)不同的程序流程選擇適當(dāng)?shù)姆种дZ句。循環(huán)結(jié)構(gòu)可以減少源程序重復(fù)書寫的工作量,用來描述重復(fù)執(zhí)行某段算法的問題,這是程序設(shè)計中最能發(fā)揮計算機(jī)特長的程序結(jié)構(gòu)。9、有以下程序:#include<stdio.h>main(){inta=1,b=2,e=3,d=0;if(a==1&&b++==2)if(b!=2||c(diǎn)--!=3)printf(’’%d,%d,%d\n’’,a,b,cv);elseprintf(’’%d,%d,%d\n’’,a,b,c);elseprintf(’’%d,%d,%d\n’’,a,b,c);}程序的運(yùn)行結(jié)果是()。A、1,3,2B、1,3,3C、1,2,3D、3,2,1標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:else總是和最近的if配對,所以進(jìn)入第一個if語句中進(jìn)行條件判斷時,因為是邏輯與操作,需要兩邊運(yùn)算對象的值均為非零值才為真,所以需要逐個執(zhí)行判斷的結(jié)果為1。進(jìn)入第二個if語句條件判斷,因為b!=2條件成立,所以整個條件表達(dá)式的值為真,不再執(zhí)行邏輯或的第二個運(yùn)算對象(c--!=3)c的值不變,也不再執(zhí)行第一個else語句。打印a的值1,b的值3,c的值3。10、設(shè)有以下程序段inty;y=rand()%30+1;則變量y的取值范圍是()。A、0<y≤30B、0≤y≤30C、1<y<30D、1<y≤30標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:考查運(yùn)算符與表達(dá)式,rand()%30求得范圍在0-29之間的數(shù)據(jù),+1后的取值范圍為1-30(1、30也包括在內(nèi)),答案選A。11、有以下程序:#include<stdio.h>main(){charch[]=’’uvwxyz’’,*pc;pc=ch;printf(’’%c\n’’,*(pc+5));}程序的運(yùn)行結(jié)果是()。A、zB、0C、元素ch[5]的地址D、字符y的地址標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:語句pc=ch;使得指針變量指向字符數(shù)組ch的首地址,即指向字符’u’,則pc+5指向的是字符向后移動5位,指向字符’z’,所以輸出的*pc+5的值即為’z’,因此A選項正確。12、以下程序的輸出結(jié)果是()。for(i=0;i<4;i++,i++)for(k=1;k<3;k++);printf(’’*’’);A、****B、***C、**D、*標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:本題考查多層for循環(huán)語句,題中第二個(內(nèi)層)for循環(huán)之后又一個分號,意思是每次循環(huán)中的操作為空,不執(zhí)行任何操作。在循環(huán)結(jié)束后執(zhí)行printf語句,即只打出一個*。13、有以下程序:#include<stdio.h>intf(intx,inty){return((y-x)*x);}main(){inta=3,b=4,c=5,d;d=f(f(a,b),f(a,c));printf(’’%d\n’’,d);}程序的運(yùn)行結(jié)果是()。A、7B、10C、8D、9標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:調(diào)用f(a,b)函數(shù)返回3,調(diào)用f(a,c)函數(shù)返回6,所以外層調(diào)用f(f(a,1)),f(a,c));即調(diào)用f(3,6)函數(shù)返回9。14、有以下程序intfun(intx[],intn){staticintsum=0,i;for(i=0;iA、50B、45C、60D、55標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:在函數(shù)intfun(intx[],intn)的定義中,變量sum使用了static修飾符,這說明了變量sum為一個靜態(tài)局部變量。由于在整個程序運(yùn)行期間,靜態(tài)局部變量在內(nèi)存中的靜態(tài)存儲區(qū)中占據(jù)著永久的存儲單元。即使退出函數(shù)之后,下次再進(jìn)入該函數(shù)時.靜態(tài)局部變量繼續(xù)使用原來存儲單元中原來的值。函數(shù)intfun(intx[],intn)的功能是求出數(shù)組x[]各個元素的和。所以在主函數(shù)中,調(diào)用函數(shù)Fun(a,5)后,變量sum=1+2+3+4+5=15,當(dāng)再次調(diào)用Fun(b,4)后,變量sum=15+6+7+8+9=45.所以s=15+45=60。15、若有定義intw[3][5];,則以下不能正確表示該數(shù)組元素的表達(dá)式是()。A、*(&w[0][0]+1)B、*(*w+3)C、*(*(w+1))D、*(w+1)[4]標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:A選項中*(&w[0][0]+1)表示w[0][1];B選項中*(*w+3)表示w[0][3];C選項中*(*(w+1))表示w[1][0];而D選項中*(w+1)[4]的正確寫法是(*(w+1))[4],表示w[1][4],因此選擇D選項。16、有以下程序#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知識點(diǎn)解析:函數(shù)fun()的作用是求出二維數(shù)組a[][N]中每一行中的最大元素,所以在main()函數(shù)中執(zhí)行完fun(x,y)后,數(shù)組y中的元素為二維數(shù)組x[N][N]每一行的最大元素。17、關(guān)于int*func(inta[10],intn);的敘述中正確的是()。A、說明中的a[10]寫成a[]或*a效果完全一樣B、形參a對應(yīng)的實參只能是數(shù)組名C、func的函數(shù)體中不能對a進(jìn)行移動指針(如a++)的操作D、只有指向10個整數(shù)內(nèi)存單元的指針,才能作為實參傳給a標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:函數(shù)func為返回值為指針的函數(shù),有兩個形參,形參數(shù)組a為指針變量,保存實參數(shù)組的首地址,其元素個數(shù)由實參數(shù)組決定,因此說明中的a[10]可以寫成a[]或*a。18、關(guān)于文件操作中的標(biāo)高符“EOF”的敘述中正確的是()。A、EOF即NULLB、文本文件和二進(jìn)制文件都可以用EOF作為文件結(jié)束標(biāo)志C、EOF是在庫函數(shù)文件中定義的符號常量D、對于文本文件,fgetc函數(shù)讀入最后一個字符時,返回值是EOF標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:EOF是在stdio.h庫函數(shù)文件中定義的符號常量,其值等于一1。EOF用作文件結(jié)束標(biāo)志,在二進(jìn)制或者文本文件內(nèi)部有一個位置指針,用以指示文件內(nèi)部的當(dāng)前讀寫位置。使用fgetc函數(shù),每讀寫一次,該指針均向后移動。19、有以下程序#includemain(){inta=5,b=1,t;t=(a<<2)|b;printf("%d\n",t);}程序運(yùn)行后的輸出結(jié)果是()。A、1B、11C、6D、21標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:本題考查位運(yùn)算,以及按位或操作,將a左移一位相當(dāng)于是將a乘以了4,所以a<<2等于20,二進(jìn)制表示為00010100,與b按位或得到00010101,即21,所以選項D正確。20、有以下程序,其中k的初值為八進(jìn)制數(shù)#includemain(){intk=011;printf("%d\n",k++);}程序運(yùn)行后的輸出結(jié)果是A、12B、11C、10D、9標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:本題主要考查基本數(shù)據(jù)類型和格式化輸出函數(shù)printf。變量k的初值為011,表示8進(jìn)制的11,十進(jìn)制值為9,printf輸出k++的值,++在k的后面表示先使用后自增,因此輸出的值為9。21、以下不合法的字符常量是A、’\"’B、’\\’C、’\018’D、’\xcc’標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:在C語言中,一個字符常量代表ASCⅡ字符集中的一個字符,在程序中用單引號把一個字符括起來用為字符常量。轉(zhuǎn)義字符常量也是必須括在一對單引號內(nèi),以一個反斜線開頭后跟一個特定的字符,用來代表某一個特定的ASCⅡ字符。在選項C中,’\018’是用八進(jìn)制數(shù)來代表一個字符常量,所以其中的數(shù)字只能小于8,并不包括8。22、有以下程序#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知識點(diǎn)解析:函數(shù)fun的主要功能是計算字符串中實際字符的個數(shù),因此主函數(shù)中調(diào)用。fun得到結(jié)果為7。23、下面描述中錯誤的是()。A、系統(tǒng)總體結(jié)構(gòu)圖支持軟件系統(tǒng)的詳細(xì)設(shè)計B、軟件設(shè)計是將軟件需求轉(zhuǎn)換為軟件表示的過程C、數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)庫設(shè)計是軟件設(shè)計的任務(wù)之一D、PAD圖是軟件詳細(xì)設(shè)計的表示工具標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:詳細(xì)設(shè)計的任務(wù)是為軟件結(jié)構(gòu)圖中而非總體結(jié)構(gòu)圖中的每一個模塊確定實現(xiàn)算法和局部數(shù)據(jù)結(jié)構(gòu),用某種選定的表達(dá)工具表示算法和數(shù)據(jù)結(jié)構(gòu)的細(xì)節(jié),所以A)錯誤。24、下列與隊列結(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知識點(diǎn)解析:隊列的修改是依先進(jìn)先出的原則進(jìn)行的,D正確。25、有以下程序#includemain(){intk=5,n=0;do{switch(k){case1:case3:n+=1;k--;break;default:n=0;k--;case2:case4:n+=2;k--;break;}printf("%d",n);}while(k>0&&n<5);}程序運(yùn)行后的輸出結(jié)果是A、02356B、0235C、235D、2356標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:k的值為5,逐個對case語句進(jìn)行匹配,均不匹配,執(zhí)行default下的語句n=0;k--;在執(zhí)行case2:后面的空語句,與case4:后面的n+=2;k--;執(zhí)行break語句跳出switch判斷,打印n的值,即2。經(jīng)過第一次循環(huán)后,k的值為3,然后進(jìn)行k>0&&n<5條件判斷為真,第二次執(zhí)行循環(huán)體,執(zhí)行case3:后面的n+=1;k--;再執(zhí)行break語句跳出循環(huán),此時打印n的值3,此時k的值為2。第三次執(zhí)行循環(huán)體k的值為2,滿足條件,執(zhí)行case2:case4:后面的語句n+=2,k--,跳出循環(huán)體。打印n的值5。此時n不小于5了條件k>0&&n<5不成立了,所以結(jié)束循環(huán)。整個程序的打印結(jié)果為235。國家二級C語言機(jī)試(選擇題)模擬試卷第3套一、選擇題(本題共40題,每題1.0分,共40分。)1、設(shè)數(shù)據(jù)結(jié)構(gòu)B=(D,R),其中D={a,b,c,d,e,f}R={(f,8),(d,b),(e,d),(e,e),(a,c)}該數(shù)據(jù)結(jié)構(gòu)為()。A、線性結(jié)構(gòu)B、循環(huán)隊列C、循環(huán)鏈表D、非線性結(jié)構(gòu)標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:數(shù)據(jù)的邏輯結(jié)構(gòu)有兩個要素:一是數(shù)據(jù)元素的集合,通常記為D;二是D上的關(guān)系,它反映了D中各數(shù)據(jù)元素之間的前后件關(guān)系,通常記為R。即一個數(shù)據(jù)結(jié)構(gòu)可以表示成B=(D,R)。其中B表示數(shù)據(jù)結(jié)構(gòu)。為了反映D中各數(shù)據(jù)元素之間的前后件關(guān)系,一般用二元組來表示。例如,假設(shè)a與b是D中的兩個數(shù)據(jù),則二元組(a,b)表示a是b的前件,b是a的后件。本題中R中的根結(jié)點(diǎn)為f,元素順序為f→a→c→e→d→b,滿足線性結(jié)構(gòu)的條件。2、下列描述中正確的是A、線性鏈表是線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)B、棧與隊列是非線性結(jié)構(gòu)C、雙向鏈表是非線性結(jié)構(gòu)D、只有根結(jié)點(diǎn)的二叉樹是線性結(jié)構(gòu)標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)稱為線性鏈表。線性表鏈?zhǔn)酱鎯Y(jié)構(gòu)的基本單位稱為存儲結(jié)點(diǎn),每個存儲結(jié)點(diǎn)包括數(shù)據(jù)域和指針域兩個組成部分。各數(shù)據(jù)元素之間的前后件關(guān)系是由各結(jié)點(diǎn)的指針域來指示的,指向線性表中第一結(jié)點(diǎn)的指針HEAD稱為頭指針,當(dāng)HEAD=NULL時稱為空表。棧、隊列和雙向鏈表是線性結(jié)構(gòu)。樹是一種簡單的非線性結(jié)構(gòu)。在樹這種數(shù)據(jù)結(jié)構(gòu)中,所有數(shù)據(jù)元素的關(guān)系具有明顯的層次特征。二叉樹是非線性結(jié)構(gòu)。線性結(jié)構(gòu)和非線性結(jié)構(gòu)是從數(shù)據(jù)的邏輯結(jié)構(gòu)角度來講的,與該數(shù)據(jù)結(jié)構(gòu)中有多少個元素沒有關(guān)系,即使是空的二叉樹也是非線性結(jié)構(gòu)。3、下列四個敘述中,正確的是()。A、C程序中的所有字母必須小寫B(tài)、C程序中的關(guān)鍵字必須小寫,其他標(biāo)識符不區(qū)分大小寫C、C程序中的所有字母都不區(qū)分大小寫D、C程序中的所有關(guān)鍵字必須小寫標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:C語言只規(guī)定所有的關(guān)鍵字必須小寫,而標(biāo)識符中的字母則既可以大寫,也可以小寫,但大小寫是有區(qū)別的。例如,else是關(guān)鍵字,而ELSE可以作為標(biāo)識符使用。4、深度為5的完全二叉樹的結(jié)點(diǎn)數(shù)不可能是()。A、15B、16C、17D、18標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:設(shè)完全二叉樹的結(jié)點(diǎn)數(shù)為n,根據(jù)深度為k的二叉樹至多有2k-1個結(jié)點(diǎn),再根據(jù)完全二叉樹的定義可知,2k-1-1<n≤2k-1。本題中完全二叉樹的深度為5,則25-1-1<n≤25-1,15<n≤31。因此,結(jié)點(diǎn)數(shù)不能為15。5、下列敘述中錯誤的是()。A、在C語言中,對二進(jìn)制文件的訪問速度比文本文件快B、在C語言中,隨機(jī)文件以二進(jìn)制代碼形式存儲數(shù)據(jù)C、語句FILEfp;定義了一個名為fp的文件指針D、C語言中的文本文件以ASCII碼形式存儲數(shù)據(jù)標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:在C語言中,文件指針實際上是指向一個結(jié)構(gòu)體類型的指針,一般稱這個結(jié)構(gòu)體類型名為FILE,可以用此類型名來定義文件指針。定義文件類型指針變量的一般形式為:FILE*指針變量名;選項C中少了“*”,所以選項C錯誤。6、一棵二叉樹中共有80個葉子結(jié)點(diǎn)與70個度為1的結(jié)點(diǎn),則該二叉樹中的總結(jié)點(diǎn)數(shù)為A、219B、229C、230D、231標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:根據(jù)二叉樹的性質(zhì),在任意二叉樹中,度為0的結(jié)點(diǎn)(即葉子結(jié)點(diǎn))總是比度為2的結(jié)點(diǎn)多一個,故總結(jié)點(diǎn)數(shù)=葉子節(jié)點(diǎn)數(shù)+度為2的節(jié)點(diǎn)數(shù)+度為1的節(jié)點(diǎn)數(shù)=80+79+70=229。7、在數(shù)據(jù)庫管理技術(shù)發(fā)展的三個階段中,沒有專門的軟件對數(shù)據(jù)進(jìn)行管理的是()。A、文件系統(tǒng)階段B、人工管理階段C、文件系統(tǒng)階段和數(shù)據(jù)庫階段D、人工管理階段和文件系統(tǒng)階段標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:數(shù)據(jù)庫管理技術(shù)的三個階段是人工管理階段、文件系統(tǒng)階段和數(shù)據(jù)庫系統(tǒng)階段。人工管理階段沒有專門的軟件對數(shù)據(jù)進(jìn)行管理。8、以下選項中能用作數(shù)據(jù)常量的是()。A、115LB、0118C、1.5e1.5D、0115標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:A選項中115L表示115是長整型數(shù)據(jù),合法。B選項是八進(jìn)制常量的表示方法,但是在八進(jìn)制中不能含有數(shù)字8,所以B選項錯誤。C選項中e后面應(yīng)該是整數(shù),而不能是小數(shù)1.5,所以C選項錯誤。D選項中八進(jìn)制常量應(yīng)該是數(shù)字“O”開始,而不是字母“0”開始。9、設(shè)有某函數(shù)的說明為:int*func(inta[10],intn);則下列敘述中,正確的是()。A、形參a對應(yīng)的實參只能是數(shù)組名B、說明中的a[10]寫成a[]或*a效果完全一樣C、func的函數(shù)體中不能對a進(jìn)行移動指針(如a++)的操作D、只有指向10個整數(shù)內(nèi)存單元的指針,才能作為實參傳給a標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:考查數(shù)組名作為函數(shù)參數(shù)。傳遞給形參的實參可以是數(shù)組名,還可以是指向該數(shù)組的指針變量,選項A錯誤;a[10]、a[]、*a做形參都是接受實參數(shù)組首地址,效果一樣,選項B正確;數(shù)組名可以看作一個指針常量,對其進(jìn)行自加自減運(yùn)算相當(dāng)于指針變量的自加自減,選項C錯誤;數(shù)組名作為函數(shù)參數(shù)時,只傳遞數(shù)組的首地址而不檢查形參數(shù)組的長度,所以形參表中可以不給出形參數(shù)組的長度,形參數(shù)組和實參數(shù)組長度也可以不同,選項D錯誤。故答案選B。10、以下敘述中正確的是()。A、C語言函數(shù)可以嵌套調(diào)用,例如:fun(fun(x))B、C語言程序是由過程和函數(shù)組成的C、C語言函數(shù)不可以單獨(dú)編譯D、C語言中除了main函數(shù)外,其他函數(shù)不可作為單獨(dú)文件形式存在標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:C語言程序是由函數(shù)組成的,所以B選項錯誤。C語言函數(shù)可以單獨(dú)進(jìn)行編譯,所以C選項錯誤。每個C程序中必須包含一個main函數(shù),但不一定是每個C程序文件中都必須有,用戶單獨(dú)編寫的某個函數(shù)也可以存儲為一個C程序文件,所以D選項錯誤。11、下列敘述中正確的是()。A、在switch語句中不一定使用break語句B、在switch語句中必須使用default語句C、break語句必須與switch語句中的ease配對使用D、break語句只能用于switch語句標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:default語句在switch語句中可以省略,所以B選項錯誤;switch語句中并非每個case后都需要使用break語句,所以C選項錯誤;break語句還可以用于for等循環(huán)結(jié)構(gòu)中,所以D選項錯誤。12、若有以下程序#includechar*a=”you”;charb[]="WelcomeyoutoChina!";main(){inti,j=0;char*p;for(i=0;b[i]!=’\0’;i++){if(*a==b[i]){p=a;for(j=i;*p!=’\0’;j++){if(*P!=b[j])break;p++;}if(*p==’\0’)break;}}printf("%s",&b[i]);}則程序的輸出結(jié)果是A、youtoChina!B、toChina!C、meyoutoChina!D、China!標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:程序中循環(huán)部分的主要功能是,在字符串b中尋找是否含有子串a(chǎn),如果含有則退出,此時i為子串a(chǎn)在字符串b中第一次出現(xiàn)的位置。因此最后的輸出函數(shù)則從第i個字符開始一直輸出到字符串的末尾。13、下列敘述中錯誤的是()。A、用戶所定義的標(biāo)識符允許使用關(guān)鍵字B、用戶所定義的標(biāo)識符應(yīng)盡量做到“見名知意”C、用戶所定義的標(biāo)識符必須以字母或下劃線開頭D、用戶定義的標(biāo)識符中,大、小寫字母代表不同標(biāo)識標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:在C語言中,合法標(biāo)識符的命名規(guī)則是:標(biāo)識符可以由字母、數(shù)字和下劃線組成,并且第一個字符必須為字母或下劃線,凡是要求標(biāo)識符的地方都必須按此規(guī)則命名。在C語言的標(biāo)識符中,大寫字母和小寫字母被認(rèn)為是兩個不同的字符。在選擇標(biāo)識符時,應(yīng)注意做到“見名知義”,即選擇具有一定含義的英文單詞或漢語拼音作為標(biāo)識符,以增加程序的可讀性。14、有以下程序:#include<stdio.h>main(){charch[]="uvwxyz",*pc;pc=ch;prinff("%c\n",*(pc+5));}程序的運(yùn)行結(jié)果是()。A、zB、0C、元素ch[5]的地址D、字符y的地址標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:語句pc=ch;使得指針變量指向字符數(shù)組ch的首地址,即指向字符’u’,則pc+5指向的是字符向后移動5位,指向字符’z’,所以輸出的*pc+5的值即為’z’,因此A選項正確。15、有以下程序:#include<stdio.h>#include<string.h>main(){charp[20]={’a’,’b’,’c’,’d’},q[]=’’abc’’,r[]=’’abcde’’;strcat(p,r);strcpy(p+strlen(q),q);printf(’’%d\n’’,strlen(p));}程序的運(yùn)行結(jié)果是()。A、11B、9C、6D、7標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:strcpy:字符串復(fù)制函數(shù);strlen:求字符串長度函數(shù)(注意:不包含字符串結(jié)束標(biāo)記字符’\0’);strcat:字符串連接函數(shù)。執(zhí)行完語句streal,(p,r);后,p數(shù)組中存儲的元素為a,b,c,d,a,b,c,d,e;執(zhí)行語句strcpy(p+strlen(q),q);得到的結(jié)果是將q所指向的字符串復(fù)制至p+strlen(q)開始的存儲位置,因為strlen的值為3,即p+3開始存儲q中的元素,所以執(zhí)行完strcpy(p+strlen(q),q)語句后,字符數(shù)組p[20]的存儲元素為a,b,c,a,b,c;所以strlen(p)的結(jié)果為6,因此C選項正確。16、有以下程序段:intfun(char*s){char*P;P=s:if(*s==0)return0;while(*++P);return(P—S);}該段程序是用來()。A、計算字符串所占字節(jié)數(shù)B、實現(xiàn)字符串的賦值C、計算字符串的長度D、將字符串逆序存放標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:在fun()函數(shù)中定義了指針p,首先把s地址賦給p,再通過while函數(shù)移動指針p,當(dāng)p指針指向單元為0時,退出while循環(huán),返回此時p和s地址之差,即字符串長度。17、關(guān)于continue和break的敘述中正確的是()。A、當(dāng)break出現(xiàn)在循環(huán)體中的switch語句體內(nèi)時,其作用是跳出該switch語句體,并終止循環(huán)體的執(zhí)行B、只能在循環(huán)體內(nèi)和switch語句體內(nèi)使用break語句C、continue語句的作用是:在執(zhí)行完本次循環(huán)體中剩余語句后,終止循環(huán)D、在while語句和do一while語句中無法使用continue語句標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:break語句可以使程序流程跳出switch語句體,也可用break語句在循環(huán)結(jié)構(gòu)中終止循環(huán)體,但一次只能跳出或終止一層switch語句或循環(huán),因此,當(dāng)break出現(xiàn)在循環(huán)體中的switch語句體內(nèi)時,其作用只是跳出該switch語句體,并不能終止循環(huán)體的執(zhí)行。continue語句的作用是結(jié)束本次循環(huán),在while和dowhile循環(huán)中.continue語句使得流程直接跳到循環(huán)控制條件的測試部分,判斷是否會進(jìn)入下一次循環(huán)。18、C語言程序的模塊化通過以下哪個選項來實現(xiàn)A、變量B、程序行C、函數(shù)D、語句標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:用函數(shù)作為程序模塊以實現(xiàn)C程序的模塊化,程序有多個函數(shù)構(gòu)成,每個函數(shù)可以實現(xiàn)一個具體的功能,實現(xiàn)程序的模塊化設(shè)計。19、有以下定義語句,編譯時會出現(xiàn)編譯錯誤的是A、chara=’\x2d’;B、chara=’\n’;C、chara=’a’;D、chara="aa";標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:D選項中將字符串常量"aa"賦給字符變量a是錯誤的。20、若變量已正確定義并賦值,以下不能構(gòu)成C語句的選項是A、A=a+b;B、B++;C、a=a+bD、A?a:b;標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:C語言語句的表示為分號,不加分號的表達(dá)式不能看成C語句。21、以下敘述中正確的是()。A、字符常量需要用單引號括起來B、字符常量在內(nèi)存中占2個字節(jié)C、轉(zhuǎn)義字符要用雙引號括起來,以便與普通的字符常量區(qū)分開D、字符常量是不能進(jìn)行關(guān)系運(yùn)算的標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:字符常量是由單引號括起來的ASCII碼表中的字符,特殊的轉(zhuǎn)義字符也要用單引號括起來表示其為一個字符,字符常量在內(nèi)存中占1個字節(jié),參與運(yùn)算的時候,通常使用該字符的ASCII碼進(jìn)行計算。答案選A。22、若變量均已正確定義并賦值,以下合法的C語言賦值語句是A、x=n%2.5:B、x+n=i;C、x=5=4+1;D、x=y=5;標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:選項D)的含義是把關(guān)系表達(dá)式y(tǒng)==5的值賦給變量x。所以這是一條正確的賦值語句。因為賦值運(yùn)算符左側(cè)的操作數(shù)必須曩=一個變量,而不能是表達(dá)式或者常量。因為求余運(yùn)算符“%”兩側(cè)的運(yùn)算對象都應(yīng)當(dāng)是整型數(shù)據(jù)。23、以下敘述中正確的是A、在C程序中的八進(jìn)制和十六進(jìn)制,可以是浮點(diǎn)數(shù)B、八進(jìn)制數(shù)的開頭要使用英文字母o,否則不能與十進(jìn)制區(qū)分開C、整型變量可以分為int型、short型、long型和unsigned型四種D、英文大寫字母x和英文小寫字母x都可以作為二二進(jìn)制數(shù)字的開頭字符標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:整型變量分為以下4種類型:①基本型:以int表示。②短整型:以shortint表示,或以short表示。③長整型:以longint表示,或以long表示。④無符號型:以unsignedint表示,選項C)正確,實型常量僅有十進(jìn)制表示形式,八進(jìn)制以數(shù)字0開頭,十六進(jìn)制開頭為0x或者0X,不是二進(jìn)制。24、設(shè)有定義:intn1=0,n2,*p=n2,*q=n1;,以下賦值語句中與n2=n1;語句等價的是A、*p=*q;B、p=q;C、*p=n1;D、p=*q;標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:本題考查指針的使用。指針p和q分別指向變量n2和n1,n2=n1可以用指針來代替,即*p代替n2,*q代替n1。25、若有以下程序段doublex=5.16894;printf("%f\n",(int)(x*1000+0.5)/(double)1000);則程序段的輸出結(jié)果是A、5.175000B、5.169000C、5.170000D、5.168000標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:fint)(x*1000+0.5)/(double)1000表達(dá)式功能,保存數(shù)據(jù)x的后三位小數(shù),把第四位四舍五入。26、以下選項中非法的字符常量是A、’\019’B、’\65’C、’\xff’D、’\101’標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:本題考查字符型常量。選項A)錯誤,使用了轉(zhuǎn)義字符“\”,019以0開始表示8進(jìn)制,8進(jìn)制數(shù)字的范圍是0-7,沒有9;選項B)、C)和D)正確。27、在以下給出的表達(dá)式中,與while(E)中的(E)不等價的表達(dá)式是()。A、(E>0||E<0)B、(E==0)C、(!E==0)D、(E!=0)標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:while語句中條件表達(dá)式E的值不為0即為真,認(rèn)為滿足條件,所以與B選項中表達(dá)式的含義正好相反,選擇B選項。28、有以下程序,程序運(yùn)行后的輸出結(jié)果是#include#defineS(x)4*(x)*x+1voidmain(){intk=5,j=2;printf("%d\n",S(k+j));}A、197B、143C、33D、28標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:這道題涉及到帶參數(shù)的宏的定義和替換這個知識點(diǎn)。在程序中定義了帶參數(shù)的宏S(x),當(dāng)在主函數(shù)中用參數(shù)k+i調(diào)用宏S時,根據(jù)宏替換的原則,則S(k+j)=S(5+2)=4*7*5+2+1=143。29、在關(guān)系數(shù)據(jù)庫中,用來表示實體間聯(lián)系的是A、屬性B、二維表C、網(wǎng)狀結(jié)構(gòu)D、樹狀結(jié)構(gòu)標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:關(guān)系模型實體間的聯(lián)系采用二維表來表示,簡稱表。選項C為網(wǎng)狀模型實體間的聯(lián)系,選項D為層次模型實體間的聯(lián)系,選項A屬性刻畫了實體。30、以下函數(shù)的功能是:通過鍵盤輸入數(shù)據(jù),為數(shù)組中的所有元素賦值。#include<stdio-h>#defineN10voidfun(intx[N]){inti=0;while(i<N)scanf("%d",_______);}在程序中下劃線處應(yīng)填入的是A、x+iB、x[i+1]C、x+(i++)D、x[++i]標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:本題考查數(shù)組和scanf函數(shù)的使用。程序通過while循環(huán)來給數(shù)組元素賦值,賦值語句通過調(diào)用scanf函數(shù)來實現(xiàn)。scanf函數(shù)從鍵盤接收數(shù)據(jù),第二個參數(shù)是數(shù)據(jù)保存的地址,因此選項B)和選項D)不是地址,錯誤。選項A)和選項C)是地址,但是選項A)的i值不會發(fā)生變化,循環(huán)體內(nèi)每次都是給同一個元素賦值,不滿足要求,選項C)正確。31、有以下程序段intk=0,a=1,b=2,c=3;k=a<b?b:a;k=k>c?c:k:執(zhí)行程序段后,k的值是A、3B、2C、1D、0標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:本題主要考查條件表達(dá)式。k=a<b?b:a中a<b為真,因此k的值為b,即k=2。k=k>c?c:k中k>c為假,k的值為2。32、有以下定義:inta;longb;doublex,y;則以下選項中正確的表達(dá)式是A、a=x<>yB、a%(int)(x-y)C、(a*y)%bD、y=x+y=x標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:C語言中沒有"<>"運(yùn)算符,所以A選項錯誤,"%"運(yùn)算符的兩個操作值必須為整型數(shù)據(jù),所以B選項正確,a*y的結(jié)果為double型,所以C選項錯誤?不能將值賦給像x+y這樣的表達(dá)式,所以D選項錯誤。33、設(shè)變量己正確定義,則以下能正確計算f=n!的程序段是A、f=0;for(i=1;i<=n;i++)f*=i;B、f=1;for(i=1;i<n;i++)f*=i;C、f=1;for(i=n;i>1;i++)f*=i;D、f=1;for(i=n;i>=2;i--)f*=i;標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:本題主要考查for循環(huán)的使用。題目要求計算階乘n!,通過for循環(huán)來實現(xiàn),循環(huán)變量i可以從1到n(包括n)或者從n到1,在循環(huán)體內(nèi)做累乘。選項A)中,累乘變量的初值為0,最終計算結(jié)果也為0;選項B)中循環(huán)次數(shù)為n-1次,累乘結(jié)果少乘了n;選項C)是死循環(huán);選項D)正確。34、已有定義:chara[]="xyz",b[]={’x’,’y’,’z’);,以下敘述中正確的是A、數(shù)組a和b長度相同B、a數(shù)組長度小于b數(shù)組長度C、a數(shù)組長度大于b數(shù)組長度D、上述說法都不對標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:本題考查字符數(shù)組的定義。chara[]="xyz",b[]={’x’,’y’,’z’}:定義了兩個字符數(shù)組a和b,a數(shù)組存放的是一個字符串,字符串以“/0”作為結(jié)束標(biāo)志,數(shù)組a的長度必須加上結(jié)束符長度1,因此數(shù)組a的長度為4。數(shù)組b中有三個元素,長度為3。35、若有以下程序#include<stdio.h>intk=7;voidf(int**s){int*t=&k;*s=t;printf("%d,%d,%d,",k,*t,**s);}main(){inti=3,*p=&i,**r=&p;f(r);printf("%d,%d,%d\n",i,*p,**r);}則程序的輸出結(jié)果是A、3,7,7,7,7,7B、7,7,7,3,3,3C、3,3,3,7,7,7D、7,7,7,3,7,7標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:本題考查了二級指針,二級指針可以保存一級指針的地址。主函數(shù)中p指向i,r指向p,函數(shù)調(diào)用后s指向p,在f函數(shù)中t指向全局變量k=7,s指向t,同時s保存了實參p的地址,此時p也指向t,輸出三個7,流程轉(zhuǎn)到主函數(shù),i的值為3,p以及r的值為7。36、設(shè)有定義語句int(*f)(int);則以下敘述正確的是()。A、f是指向函數(shù)的指針變量,該函數(shù)具有一個int類型的形參B、f是基類型為int的指針變量C、f是指向int類型一維數(shù)組的指針變量D、f是函數(shù)名,該函數(shù)的返回值是基類型為int類型的地址標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:(*f)(int)中f為函數(shù)指針變量,可以指向任何已經(jīng)定義的合法的函數(shù),該函數(shù)帶有一個int類型的形參,所以答案選A。37、有以下程序#includevoidfun(int*a,int*b){int*c;c=a;a=b;b=c;}main(){intx=3,y=5,*p=&x,*q=&y;fun(p,q);printf("%d,%d,",*p,*q);fun(&x,&y);printf("%d,%d\n",*p,*q);}程序運(yùn)行后的輸出結(jié)果是()。A、3,5,3,5B、3,5,5,3C、5,3,3,5D、5,3,5,3標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:函數(shù)的參數(shù)傳遞過程中,參數(shù)的傳遞是單向的,形參只是實參的一個副本,如果形參和實參為兩個地址,形參指針指向的變化不能影響到實參指針的指向。所以該函數(shù)fun()調(diào)用結(jié)束后并不能改變指針變量p、q的指向,所以輸出結(jié)果均為3、5,答案選A。38、若有定義typedefint*T;Ta[10];則a的定義與下面哪個語句等價A、int*a[10];B、int(*a)[10];C、int*a;D、inta[10];標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:typedef的主要功能是為存在的類型命名,后面的代碼中可以利用該新定義的類型名定義變量,題目中定義了整型指針類型T,而后利用T定義了整型指針數(shù)組a,含有10個元素,選項A)中定義了整型指針數(shù)組a,選項B)定義了一個指向一維數(shù)組的指針a,選項C)定義指針變量,,而選項D)為定義整型數(shù)組最常用的形式,數(shù)組a中可以存放10個數(shù)據(jù)元素。39、有以下程序#includemain(){FILE*pf;char*s1="China",*s2="Beijing";pf=fopen("abc.dat","wb+");fwrite(s2,7,1,pf);rewind(pf);/*文件位置指針回到文件開頭*/fwrite(s1,5,1,pf);fclose(pf);}以上程序執(zhí)行后abc.dat文件的內(nèi)容是()。A、ChinangB、ChinaC、ChinaBeijingD、BeijingChina標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:語句"fwrite(s2,7,1,pf);"將指針s2指向的7個字節(jié)的數(shù)據(jù)寫入到abc.dat文件中,而后將文件指針fp重定向指向文件首,再執(zhí)行語句"fwrite(s1,5,1,pf);"時將s1指向的5個字符寫入當(dāng)前文件,原先寫入的數(shù)據(jù)會被部分覆蓋,最后文件中的內(nèi)容為Chinang,答案選A。40、有以下程序#includevoidf(int*p,int*q);main(){intm=1,n=2,*r=&m;f(r,&n);printf("%d,%d",m,n);}voidf(int*p,int*q){p=p+1;*q=*q+1;}程序運(yùn)行后的輸出結(jié)果是A、2,3B、1,3C、1,4D、1,2標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:在f(int*p,int*q)函數(shù)中,執(zhí)行p=p+1是將p所對應(yīng)的地址加1,而*q=*q+1是將q所指向的n的地址所對應(yīng)的值加1,所以m的得知所對應(yīng)的值沒有變,而n的值則為3了。因此B選項正確。國家二級C語言機(jī)試(選擇題)模擬試卷第4套一、選擇題(本題共25題,每題1.0分,共25分。)1、對長度為n的線性表排序,在最壞情況下,比較次數(shù)不是n(n—1)/2的排序方法是()。A、快速排序B、冒泡排序C、直接插入排序D、堆排序標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:除了堆排序算法的比較次數(shù)是O(nlog2n)外,其他的都是n(n—1)/2。2、若二維數(shù)組a有m列,則在a[i][j]前的元素個數(shù)為()。A、j*m+iB、i*m+jC、j*m+i+1D、i*m+j+1標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:二維數(shù)組的元素可以看成是按矩陣形式存放的,總是先存放第一行的元素,再存放第二行的元素。數(shù)組第一維的下標(biāo)是i,說明它前面還有i行,有i*m個元素,數(shù)組第二維的下標(biāo)是i,說明它前面還有j列,有j個元素,所以共有i*m+j個元素。3、按照C語言規(guī)定的用戶標(biāo)識符命名規(guī)則,不能出現(xiàn)在標(biāo)識符中的是A、連接符B、大寫字*C、數(shù)字字符D、下劃線標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:在C語言中,合法標(biāo)識符的命令規(guī)則是:標(biāo)識符可以由字*、數(shù)字或下劃線組成,并且第一個字符必須為字*或下劃線。在C語言‘的標(biāo)識符中,大寫字*和小寫字*被認(rèn)為是兩個不同的字符。選項A是連字符,不在C語言規(guī)定的命名變量標(biāo)識符的范圍內(nèi)。4、下列敘述中正確的是()。A、對長度為n的有序鏈表進(jìn)行查找,最壞情況下需要的比較次數(shù)為nB、對長度為n的有序鏈表進(jìn)行對分查找,最壞情況下需要的比較次數(shù)為(n/2)C、對長度為n的有序鏈表進(jìn)行對分查找,最壞情況下需要的比較次數(shù)為(log2n)D、對長度為n的有序鏈表進(jìn)行對分查找,最壞情況下需要的比較次數(shù)為(nlog2n)標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:本題主要考查的知識點(diǎn)為查找技術(shù)。順序查找的使用情況:①線性表為無序表;②表采用鏈?zhǔn)酱鎯Y(jié)構(gòu)。二分法查找只適用于順序存儲的有序表,并不適用于線性鏈表。5、有以下程序:#include<stdio.h>main(){inti,s=0,t[]={1,2,3,4,5,6,7,8,9};for(i=0;i<9;i+=2)s+=*(t+i);printf(’’%d\n’’,s);}程序的運(yùn)行結(jié)果是()。A、20B、25C、45D、36標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:統(tǒng)計1~9這9個數(shù)中的奇數(shù)和,此題考查指向數(shù)組的指針。C語言規(guī)定數(shù)組名代表數(shù)組的首地址,也就是第一個元素的地址,因此*(t+i)代表數(shù)組的第i+1個元素。程序的運(yùn)行結(jié)果是1+3+5+7+9=25。6、以下敘述中正確的是A、每個后綴為.c的C語言源程序都應(yīng)該包含一個main函數(shù)B、在C語言程序中,main函數(shù)必須放在其他函數(shù)的最前面C、每個后綴為.c的C語言源程序都可以單獨(dú)進(jìn)行編譯D、在C語言程序中,只有main函數(shù)才可單獨(dú)進(jìn)行編譯標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:每一個C語言的文件或函數(shù)都可以單獨(dú)編譯,但只有main函數(shù)的才可以執(zhí)行。7、以下敘述中正確的是A、C程序書寫格式嚴(yán)格,要求一行內(nèi)只能寫一個語句B、C程序書寫格式自由,一個語句可以寫在多行上C、C程序中的注釋只能出現(xiàn)在程序的開始位置和語句的后面D、用C語言編寫的程序只能放在一個程序文件中標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:本題主要考查的是C語言結(jié)構(gòu)中的源程序書寫格式這個知識點(diǎn),在C浯言中注釋部分對程序的運(yùn)行結(jié)果不產(chǎn)生任何影響,它可以出現(xiàn)在任意位置:C語言書寫自由,一行內(nèi)可以寫多個語句,一個語句可以寫在多行上;由于C語言編寫的程序有很好的移植性,可以放在多個程序文件中。8、s1和s2已正確定義并分別指向兩個字符串。若要求:當(dāng)s1所指串大于s2所指串時,執(zhí)行語句S;則以下選項中正確的是A、if(s1>s2)S;B、if(strcmp(s1,s2))S;C、if(strcmp(s2,s1)>0)S;D、if(strcp(s1,s2)>0)S;標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:字符串標(biāo)記使用strcmp函數(shù),該函數(shù)有兩個參數(shù)分別是需要比較大小的兩個字符串s1和s2,如果s1大于s2則返回值大于0,如果s1小于s2則返回值小于0,否則s1和s2相同返回0。題目要求s1大于s2時執(zhí)行語句s,因此strcmp(s1,s2)的返回值大于0時執(zhí)行s。9、有以下程序,程序運(yùn)行后的輸出結(jié)果是main(){chara=’H’;a=(a>=’A’&&a<=’Z’)?(a+32):a;pfintf("%c\n",a);}A、HB、AC、hD、a標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:表達(dá)式a=(a>=’A’&&a<=’Z’)?(a+32):a,為條件表達(dá)式,如果a是大寫字符,則轉(zhuǎn)換為小寫字符存放到a中,否則不變。10、關(guān)于數(shù)據(jù)庫管理階段的特點(diǎn),下列說法中錯誤的是A、數(shù)據(jù)獨(dú)立性差B、數(shù)據(jù)的共享性高,冗余度低,易擴(kuò)充C、數(shù)據(jù)真正實現(xiàn)了結(jié)構(gòu)化D、數(shù)據(jù)由DBMS統(tǒng)一管理和控制標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:數(shù)據(jù)庫系統(tǒng)階段特點(diǎn):數(shù)據(jù)的管理者:數(shù)據(jù)庫管理系統(tǒng);數(shù)據(jù)面向的對象:整個應(yīng)用系統(tǒng);數(shù)據(jù)的共享程度:共享性高,冗余度小;數(shù)據(jù)的獨(dú)立性:具有高度的物理獨(dú)立性和邏輯獨(dú)立性;數(shù)據(jù)的結(jié)構(gòu)化:整體結(jié)構(gòu)化,用數(shù)據(jù)模型描述;數(shù)據(jù)控制能力:由數(shù)據(jù)庫管理系統(tǒng)提供數(shù)據(jù)安全性、完整性、并發(fā)控制和恢復(fù)能力。所以選項A正確。11、以下選項中,合法的是A、charname[10];name="char";B、charstr1[5]="pass",str2[6];str2=str1;C、charstr3[]={’d’,’e’,’b’,’u’,’g’,’\0’};D、charstr4;str4="helloworld";標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:本題考查字符數(shù)組。選項A定義了一個字符數(shù)組name,接下來直接給name賦值字符串是錯誤的;選項B定義了兩個字符串?dāng)?shù)組str1和str2,str1和str2表示兩個字符串的首地址,直接把str1賦值給s仃2錯誤;選項C是正確的;選項D定義了一個字符變量str4,給字符變量賦值字符串是錯誤的。12、以下定義數(shù)組的語句中錯誤的是A、intnum[][3]={{1,2},3,4,5,6};B、intnum[]={1,2,3,4,5,6};C、intnum[][4]={1,2,3,4,5,6};D、intnum[2]]4]={{1,2),{3,4),{5,6}};標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:在選項D的數(shù)組定義中,賦值號左邊定義了一個2行4列的二維數(shù)組,而在右邊定義了一個3行2列的二維數(shù)組。13、有以下程序voidfun(intn,int*s){intf;if(n==1)*s=n+1;else{fun(n-1,&f);*s=f;))main(){intx=0;fun(4,&x);printf("%d\n",x);}程序運(yùn)行后的輸出結(jié)果是A、1B、3C、4D、2標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:函數(shù)fun為遞歸調(diào)用函數(shù),如果n的值為1,那么后面形參指向的空間存放n+1,否則繼續(xù)計算fun(n-1)的值。調(diào)用分析過程如下:fun(4,&x)-→fun(3,&x)-→fun(2,&x)-→fun(1,&x)在回歸的過程中,對于x內(nèi)的數(shù)據(jù)并沒有改動。14、有以下程序#includemain(){inti=1,j=3;printf("%d,",i++);{inti=0;i+=j*2;printf("%d,%d,",i,j);}printf("%d,%d\n",i,j);}程序運(yùn)行后的輸出結(jié)果是()。A、1,6,3,2,3B、1,6,3,1,3C、1,6,3,6,3D、1,7,3,2,3標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:不同作用域內(nèi)若定義有同名的局部變量,則在其中一個局部變量的作用域內(nèi),其他同名的局部變量會被"屏蔽",規(guī)則一般是作用域小的變量"屏蔽"作用域大的變量。在用{}引起來的復(fù)合語句塊中,i值為6,輸出結(jié)果為6,3,而在語句塊外,i為2,輸出結(jié)果為2,3,所以答案選A。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知識點(diǎn)解析:這個程序的執(zhí)行過程是當(dāng)i=0時,j=1,a[0][0]=0<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、以下敘述中正確的是A、指針變量只能通過求地址運(yùn)算符(&)來獲得地址值B、語句“p=NULL;”與“p=\0;”是等價的語句C、“int*p1;int**p2;int*p3;”都是合法的定義指針變量的語句D、語句p=NULL;執(zhí)行后,指針p指向地址為0的存儲單元標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:指針變量定義形式為:類型*旨針變量名;其中*號的個數(shù)決定了幾級指針,指針變量賦地址值的方式有3種方式:①通過求地址運(yùn)算符(&)獲得地址值;②通過指針變量獲得地址值;③通過標(biāo)準(zhǔn)函數(shù)獲得地址值。另外NULL是在stdio.h頭文件中定義的預(yù)定義符。NULL的代碼值為0??梢越o指針變量賦NULL值。例如p=NULL;賦值語句,稱p為空指針。這條語句等價于p=’\0’;或p=0;這時,指針p并不是指向地址為0的存儲單元,而是具有一個確定的值——“空”。17、有以下程序voidfun2(chara,charb){printf("%c%c",a,b);}chara=’A’,b=’B’;voidfun1(){a=’C’;b=’D’;}main(){fun1();printf("%c%c",a,b);fun2(’E’,’F’);}程序的運(yùn)行結(jié)果是A、ABEFB、CDEFC、ABCDD、CDAB標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:在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’并輸出。18、若fp已定義為指向某文件的指針,且沒有讀到該文件的末尾,則C語言函數(shù)feof(fp)的函數(shù)返回值是A、0B、非0C、-1D、EOF標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:feof用來判斷文件是否結(jié)束。如果遇到文件結(jié)束,函數(shù)feof(fp)的值為1,否則為0。19、有以下程序#include#includevoidfun(char*w,intm){chars,*p1,*p2;p1=w;p2=w+m-1;while(p1A、654321B、116611C、161616D、123456標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:函數(shù)fun()中w指向的為一個字符串的首地址,該函數(shù)中將p1指向字符串首地址,而將p2指向該字符串第m個元素,然后用while()循環(huán)實現(xiàn)這一段字符串首尾對應(yīng)元素的互換,所以函數(shù)fun()的功能是把w指向的字符串從前m個字符逆序排列,輸出的答案選A。20、設(shè)有定義:struct{charmark[12];intnuml;doublenum2;}t1,t2;若變量均已正確賦初值,則以下語句中錯誤的是A、t2.hum1=t1.num1;B、t2.mark=t1.mark;C、t1=t2;D、t2.num2=t1.num2;標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:這個題目主要涉及到結(jié)構(gòu)體的定義與賦值操作。根據(jù)題意結(jié)構(gòu)體變量t1,t2的成員變量mark是字符數(shù)組,對于字符數(shù)組之間的賦值操作應(yīng)該使用循環(huán)語句對每個字符進(jìn)行賦值,而選項B是用數(shù)組名實現(xiàn)字符數(shù)組之間的賦值操作,是錯誤的。21、下面關(guān)于“EOF”的敘述,正確的是A、EOF的值等于0B、文本文件和二進(jìn)制文件都可以用EOF作為文件結(jié)束標(biāo)志C、EOF是在庫函數(shù)文件中定義的符號常量D、對于文本文件,fgetc函數(shù)讀入最后一個字符時,返回值是EOF標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:EOF是在stdio.h庫函數(shù)文件中定義的符號常量,其值等于-1。EOF用作文件結(jié)束標(biāo)志,在二進(jìn)制或者文本文件內(nèi)部有一個位置指針,用以指示文件內(nèi)部的當(dāng)前讀寫位置。使用fgetc函數(shù),每讀寫一次,該指針均向后移動,22、以下敘述中錯誤的是A、用typedef可以說明一種新的類型名B、typedef的作用是用一個新的標(biāo)識符來代表已存在的類型名C、可以用typedef說明的新類型名來定義變量D、typedef說明的新類型名必須使用大寫字母,否則會出編譯錯誤標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:本題考查typedef的使用方法,typedef對已存在的類型使用一個新的名字,新類型可以使用小寫,所以D選項錯誤。23、有以下程序#includemain(){inty=10;wh

溫馨提示

  • 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

提交評論