國(guó)家二級(jí)(C語(yǔ)言)筆試模擬試卷27(共543題)_第1頁(yè)
國(guó)家二級(jí)(C語(yǔ)言)筆試模擬試卷27(共543題)_第2頁(yè)
國(guó)家二級(jí)(C語(yǔ)言)筆試模擬試卷27(共543題)_第3頁(yè)
國(guó)家二級(jí)(C語(yǔ)言)筆試模擬試卷27(共543題)_第4頁(yè)
國(guó)家二級(jí)(C語(yǔ)言)筆試模擬試卷27(共543題)_第5頁(yè)
已閱讀5頁(yè),還剩139頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

國(guó)家二級(jí)(C語(yǔ)言)筆試模擬試卷27(共9套)(共543題)國(guó)家二級(jí)(C語(yǔ)言)筆試模擬試卷第1套一、公共基礎(chǔ)選擇題(本題共10題,每題1.0分,共10分。)1、下列數(shù)據(jù)結(jié)構(gòu)中,不是線性結(jié)構(gòu)的是()。A、線性鏈表B、帶鏈的隊(duì)列C、帶鏈的棧D、二叉鏈表標(biāo)準(zhǔn)答案:8知識(shí)點(diǎn)解析:線性鏈表是線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),帶鏈的棧與帶鏈的隊(duì)列分別是棧與隊(duì)列的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。線性表屬于線性結(jié)構(gòu),棧與隊(duì)列是特殊的線性表,因此也屬于線性結(jié)構(gòu)。二叉鏈表是二叉樹的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),二叉樹屬于非線性結(jié)構(gòu)。2、在深度為6的滿二叉樹中,結(jié)點(diǎn)的個(gè)數(shù)為()。A、32B、31C、16D、15標(biāo)準(zhǔn)答案:1知識(shí)點(diǎn)解析:深度為m的二叉樹最多有2m-1個(gè)結(jié)點(diǎn),滿二叉樹中葉子結(jié)點(diǎn)的個(gè)數(shù)為2m-1個(gè)。本題中,26-1=25=32。3、下圖所示的二叉樹的先序遍歷序列是()。A、ABDGCEHIFB、DGBAHEICFC、GDBHIEFCAD、ABCDEFGHl標(biāo)準(zhǔn)答案:1知識(shí)點(diǎn)解析:先序遍歷順序應(yīng)該為:訪問(wèn)根結(jié)點(diǎn)→先序遍歷左子樹→先序遍歷右子樹。按照定義,先序遍歷序列是ABDGCEHIF。4、模塊化程序設(shè)計(jì)主要強(qiáng)調(diào)的是()。A、程序的規(guī)模要大B、對(duì)程序進(jìn)行分解C、程序的執(zhí)行效率D、程序的可移植性標(biāo)準(zhǔn)答案:2知識(shí)點(diǎn)解析:模塊化設(shè)計(jì)是指把一個(gè)大程序按人們能理解的大小規(guī)模進(jìn)行分解。5、結(jié)構(gòu)化程序設(shè)計(jì)的主要特點(diǎn)是()。A、每個(gè)控制結(jié)構(gòu)要模塊化B、每個(gè)控制結(jié)構(gòu)具有封裝性C、每個(gè)控制結(jié)構(gòu)具有獨(dú)立性D、每個(gè)控制結(jié)構(gòu)只有一個(gè)入口和一個(gè)出口標(biāo)準(zhǔn)答案:8知識(shí)點(diǎn)解析:結(jié)構(gòu)化程序設(shè)計(jì)中,要求把程序結(jié)構(gòu)限制為順序、選擇和循環(huán)3種基本結(jié)構(gòu),特點(diǎn)是:以控制結(jié)構(gòu)為單位,只有一個(gè)入口和一個(gè)出口,接口簡(jiǎn)單,每個(gè)單位容易理解;縮小了程序靜態(tài)結(jié)構(gòu)與動(dòng)態(tài)執(zhí)行之間的差異,易于方便、正確地理解程序功能。6、下列敘述中錯(cuò)誤的是()。A、測(cè)試是程序執(zhí)行的過(guò)程,目的在于發(fā)現(xiàn)錯(cuò)誤B、一個(gè)好的測(cè)試在于能發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯(cuò)誤C、一個(gè)成功的測(cè)試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯(cuò)誤D、上述說(shuō)法都不對(duì)標(biāo)準(zhǔn)答案:8知識(shí)點(diǎn)解析:選項(xiàng)A、B、C中的說(shuō)法都正確。測(cè)試的目的是設(shè)法暴露程序中的錯(cuò)誤和缺陷,它是程序執(zhí)行的過(guò)程,目的在于發(fā)現(xiàn)錯(cuò)誤;好的測(cè)試在于能發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯(cuò)誤;成功的測(cè)試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯(cuò)誤。7、對(duì)于白箱(盒)測(cè)試用例的各設(shè)計(jì)準(zhǔn)則,下列敘述中正確的是()。A、分支覆蓋準(zhǔn)則比語(yǔ)句覆蓋準(zhǔn)則嚴(yán)密B、條件覆蓋要比分支覆蓋優(yōu)越。因此,條件覆蓋能完全滿足分支覆蓋C、組合條件覆蓋準(zhǔn)則既能滿足分支覆蓋準(zhǔn)則,也能滿足條件覆蓋準(zhǔn)則。因此,組合條件覆蓋準(zhǔn)則是一種完全測(cè)試D、上述說(shuō)法都不對(duì)標(biāo)準(zhǔn)答案:1知識(shí)點(diǎn)解析:白箱(盒)測(cè)試是根據(jù)對(duì)程序內(nèi)部邏輯結(jié)構(gòu)的分析宋選取測(cè)試用例。白箱(盒)測(cè)試用例的設(shè)計(jì)準(zhǔn)則有:語(yǔ)句覆蓋、分支覆蓋、條件覆蓋和組合條件覆蓋。分支覆蓋通過(guò)足夠多的測(cè)試用例,使程序中的每個(gè)分支至少通過(guò)一次。分支覆蓋準(zhǔn)則比語(yǔ)句覆蓋準(zhǔn)則嚴(yán)密一些,選項(xiàng)A正確;條件覆蓋通過(guò)執(zhí)行足夠多的測(cè)試用例,使每個(gè)判定中的每個(gè)條件都能取到兩種不同的結(jié)果(“真”與“假”)。雖然條件覆蓋要比分支覆蓋優(yōu)越,但并不能完全滿足分支覆蓋,選項(xiàng)B錯(cuò)誤;組合條件覆蓋要求通過(guò)足夠多的測(cè)試用例,使每個(gè)判定中各條件的各種可能組合至少出現(xiàn)一次,它則既能滿足分支覆蓋準(zhǔn)則,也能滿足條件覆蓋準(zhǔn)則,但也不是完全測(cè)試,選項(xiàng)C錯(cuò)誤。8、下列敘述中正確的是()。A、數(shù)據(jù)庫(kù)設(shè)計(jì)是指設(shè)計(jì)數(shù)據(jù)庫(kù)系統(tǒng)B、數(shù)據(jù)庫(kù)設(shè)計(jì)是指設(shè)計(jì)數(shù)據(jù)庫(kù)管理系統(tǒng)C、數(shù)據(jù)庫(kù)設(shè)計(jì)是指在已有數(shù)據(jù)庫(kù)管理系統(tǒng)的基礎(chǔ)上建立數(shù)據(jù)庫(kù)D、以上三種說(shuō)法都不對(duì)標(biāo)準(zhǔn)答案:4知識(shí)點(diǎn)解析:數(shù)據(jù)庫(kù)設(shè)計(jì)是指,在已有數(shù)據(jù)庫(kù)管理系統(tǒng)的基礎(chǔ)上建立數(shù)據(jù)庫(kù)的過(guò)程,選項(xiàng)A與B錯(cuò)誤,選項(xiàng)C正確。9、關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)能實(shí)現(xiàn)的專門關(guān)系運(yùn)算包括()。A、排序、索引、統(tǒng)計(jì)B、選擇、投影、連接C、關(guān)聯(lián)、更新、排序D、顯示、打印、制表標(biāo)準(zhǔn)答案:2知識(shí)點(diǎn)解析:在關(guān)系模型的數(shù)據(jù)語(yǔ)言中,除了常規(guī)的集合運(yùn)算外,還定義了一些專門的關(guān)系運(yùn)算,如投影、選擇、連接等運(yùn)算。10、下列數(shù)據(jù)模型中,具有堅(jiān)實(shí)理論基礎(chǔ)的是()。A、關(guān)系模型B、網(wǎng)狀模型C、層次模型D、以上三個(gè)都是標(biāo)準(zhǔn)答案:1知識(shí)點(diǎn)解析:在層次模型和網(wǎng)狀模型的系統(tǒng)研究和數(shù)據(jù)庫(kù)設(shè)計(jì)中,其性能和質(zhì)量主要決定于設(shè)計(jì)者的經(jīng)驗(yàn)和技術(shù)水平,缺乏一定的理論指導(dǎo)。關(guān)系模型有堅(jiān)實(shí)的理論基礎(chǔ),它以數(shù)學(xué)理論為基礎(chǔ),從而避免了層次模型和網(wǎng)狀模型系統(tǒng)中存在的問(wèn)題。二、選擇題(1分)(本題共10題,每題1.0分,共10分。)11、一個(gè)算法應(yīng)該具有“確定性”等5個(gè)特性,下面對(duì)另外4個(gè)特性的描述中錯(cuò)誤的是()。A、有零個(gè)或多個(gè)輸入B、有零個(gè)或多個(gè)輸出C、有窮性D、可行性標(biāo)準(zhǔn)答案:2知識(shí)點(diǎn)解析:算法是為解決某個(gè)特定問(wèn)題而采取的確定的且有限的步驟,一個(gè)算法應(yīng)當(dāng)具有以下5個(gè)基本特性:有窮性、確定性、可行性、有零個(gè)或多個(gè)輸入、有一個(gè)或多個(gè)輸出。由此可知選項(xiàng)B不正確,故4個(gè)選項(xiàng)中選項(xiàng)B符合題意。12、C語(yǔ)言中用于結(jié)構(gòu)化程序設(shè)計(jì)的3種基本結(jié)構(gòu)是()。A、順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)B、if、switch、breakC、for、while、do-whileD、if、for、continue標(biāo)準(zhǔn)答案:1知識(shí)點(diǎn)解析:結(jié)構(gòu)化程序設(shè)計(jì)是由3種基本結(jié)構(gòu)組成的,它們是順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。所以,A選項(xiàng)為所選。13、在一個(gè)C程序中()。A、main函數(shù)必須出現(xiàn)在所有函數(shù)之前B、main函數(shù)可以在任何地方出現(xiàn)C、main函數(shù)必須出現(xiàn)在所有函數(shù)之后D、main函數(shù)必須出現(xiàn)在固定位置標(biāo)準(zhǔn)答案:2知識(shí)點(diǎn)解析:一個(gè)完整的C語(yǔ)言程序有且僅有一個(gè)主函數(shù)(main()函數(shù))。程序總從main()函數(shù)的第一條語(yǔ)句開始執(zhí)行,到main()函數(shù)的最后一條語(yǔ)句結(jié)束,其他函數(shù)都是在執(zhí)行main()函數(shù)時(shí),通過(guò)函數(shù)調(diào)用或嵌套調(diào)用而得以執(zhí)行的。C語(yǔ)言規(guī)定,main()函數(shù)在程序中的位置是任意的,故選項(xiàng)A、選項(xiàng)C和選項(xiàng)D均不正確。所以,B選項(xiàng)為所選。14、下列敘述中正確的是()。A、C語(yǔ)言中既有邏輯類型也有集合類型B、C語(yǔ)言中沒有邏輯類型但有集合類型C、C語(yǔ)言中有邏輯類型但沒有集合類型D、C語(yǔ)言中既沒有邏輯類型也沒有集合類型標(biāo)準(zhǔn)答案:8知識(shí)點(diǎn)解析:在C語(yǔ)言中沒有邏輯類型,邏輯類型用整型來(lái)表示,故選項(xiàng)A和選項(xiàng)C不正確:C語(yǔ)言中沒有集合類型,故選項(xiàng)B不正確。所以,D選項(xiàng)為所選。15、若以下選項(xiàng)中的變量已正確定義,則正確的賦值語(yǔ)句是()。A、x1=26.8%3;B、1+2=x2C、x3=0x12;D、x4=1+2=3;標(biāo)準(zhǔn)答案:4知識(shí)點(diǎn)解析:賦值的一般形式為:變量名:表達(dá)式;,賦值的方向?yàn)橛捎蚁蜃螅磳ⅲ河覀?cè)表達(dá)式的值賦給:左側(cè)的變量,執(zhí)行步驟是先計(jì)算再賦值。選項(xiàng)A中運(yùn)算符%的運(yùn)算對(duì)象必須為整數(shù),而選項(xiàng)A中26.8不為整數(shù),故選項(xiàng)A不正確;選項(xiàng)B將一個(gè)變量賦值給一個(gè)常量,這在C語(yǔ)言中是不允許的,故選項(xiàng)B不正確;選項(xiàng)D中也是將一個(gè)常量3賦值給一個(gè)常量,故選項(xiàng)D不正確;所以,4個(gè)選項(xiàng)中選項(xiàng)C符合題意。16、設(shè)有以下定義:inta=0;doubleb=1.25;charc=’A’;#defined2則下面語(yǔ)句中錯(cuò)誤的是()。A、a++;B、b++;C、c++;D、d++;標(biāo)準(zhǔn)答案:8知識(shí)點(diǎn)解析:自加運(yùn)算對(duì)象可以是整型變量也可以是實(shí)型變量,但不能是表達(dá)式和常量。本題中,#defined2定義了d為常數(shù)2,d是符號(hào)常量不能進(jìn)行自加運(yùn)算。故選項(xiàng)D是個(gè)不正確的語(yǔ)句。17、若有如下定義:intx=6,y=3,z=2;則表達(dá)式x=y||y<z&&z==z的值是()。A、0B、1C、4D、6標(biāo)準(zhǔn)答案:2知識(shí)點(diǎn)解析:<優(yōu)先級(jí)高于==高于&&高于||高于=。首先計(jì)算表達(dá)式y(tǒng)<z的值,y<z為假,表達(dá)式的值為0,則邏輯表達(dá)式y(tǒng)<z&&z==z的值也為0,||左側(cè)y的值為非零值3,所以表達(dá)式的值為1,將1賦值給x,賦值表達(dá)式的值是1。18、設(shè)有如下程序段:x=2002,y=2003;printf("%d\n",(x,y));則以下敘述中正確的是()。A、輸出語(yǔ)句中格式說(shuō)明符的個(gè)數(shù)少于輸出項(xiàng)的個(gè)數(shù),不能正確輸出B、運(yùn)行時(shí)產(chǎn)生出錯(cuò)信息C、輸出值為2002D、輸出值為2003標(biāo)準(zhǔn)答案:8知識(shí)點(diǎn)解析:“x,y”是一個(gè)逗號(hào)表達(dá)式,逗號(hào)運(yùn)算符的結(jié)合性為從左到右,逗號(hào)表達(dá)式一般形式為“表達(dá)式1,表達(dá)式2…,表達(dá)式n”,整個(gè)表達(dá)式的值為表達(dá)式n的值,故本題是輸出y的值2003。所以,4個(gè)選項(xiàng)中選項(xiàng)D符合題意。19、有以下程序:main(){inta=666,b=888;printf("%d\n",a,b);}程序運(yùn)行后的輸出結(jié)果是()。A、錯(cuò)誤信息B、666C、888D、666,888標(biāo)準(zhǔn)答案:2知識(shí)點(diǎn)解析:程序中的printf()函數(shù)的輸出格式部分只說(shuō)明了一個(gè)%d,而輸出成員列表卻有兩個(gè)成員a和b,在這里將只輸出第一個(gè)成員a值為666,所以,4個(gè)選項(xiàng)中選項(xiàng)B符合題意。20、有以下程序:main(){inti;for(i=0;i<3;i++)switch(i){case0:prinft("%d",i);Case2:prinft("%d",i);default:prinft("%d",i);}}程序運(yùn)行后的輸出結(jié)果是()。A、22111B、21021C、122D、12標(biāo)準(zhǔn)答案:4知識(shí)點(diǎn)解析:程序中for循環(huán)了三次,第一次i=O,執(zhí)行switch語(yǔ)句中case0:分支,直到遇到default語(yǔ)句,退出switch,這里共執(zhí)行了3個(gè)輸出語(yǔ)句分別輸出0、0、0,第二次循環(huán)i=1,switch語(yǔ)句中沒有匹配的分支,故只執(zhí)行default語(yǔ)句輸出1,退出switch語(yǔ)句;第三次循環(huán)i=2,從switch語(yǔ)句中的case2:開始執(zhí)行,共執(zhí)行了兩個(gè)輸出語(yǔ)句輸出2、2。最后輸出的結(jié)果為000122。所以,4個(gè)選項(xiàng)中選項(xiàng)C符合題意。三、選擇題(2分)(本題共30題,每題1.0分,共30分。)21、有以下程序:inta=3;main(){ints=0;{inta=5;s+=a++;)s+=a++;printf(’%d\n’,s);}程序運(yùn)行后的輸出結(jié)果是()。A、8B、10C、7D、11標(biāo)準(zhǔn)答案:1知識(shí)點(diǎn)解析:本題中定義一個(gè)全局變量a和一個(gè)局部變量a。局部變量和全局變量的不同在于,局部變量的存儲(chǔ)單元都是在進(jìn)入這些局部變量所在的函數(shù)體(或復(fù)合語(yǔ)句)時(shí)生成,退出其所在的函數(shù)體(或復(fù)合語(yǔ)句)時(shí)消失,而全局變量是在函數(shù)外部任意位置上定義的變量,它的作用域從變量定義開始,到整個(gè)源文件結(jié)束為止。若全局變量和某一函數(shù)中的局部變量同名,則在該函數(shù)中,此全局變量被屏蔽,在該函數(shù)內(nèi),起作用的將是局部變量,與同名的全局變量不發(fā)生任何關(guān)系。在程序中首先定義了變量s并賦值為0,接著在嵌套的復(fù)合語(yǔ)句{}中定義了變量a并賦初值為5,接著執(zhí)行語(yǔ)句“s+=a++;”在這條語(yǔ)句中a加1,但表達(dá)式a++還是原來(lái)的值,故s=s+5,s為5,程序執(zhí)行到外層,此時(shí){}內(nèi)定義的變量a不再有效,變量a為{}之前定義的且初值為3,接著執(zhí)行{}后面的語(yǔ)句“s+=a++;”,相當(dāng)于執(zhí)行語(yǔ)句“s=s+(a++);”即s=5+3,最后值為8,所以輸出的s值為8。故4個(gè)選項(xiàng)中A正確。22、閱讀下述程序段:y=-1;if(x!=0)if(x>0)y=1;elsey=0;該程序段所描述的數(shù)學(xué)關(guān)系是()。A、B、C、D、標(biāo)準(zhǔn)答案:4知識(shí)點(diǎn)解析:y的初值為-1,第一個(gè)if語(yǔ)句的判斷條件為x!=0,即當(dāng)x!=0時(shí)y的值變化,x=0時(shí)y的值不變,仍為-1。第二個(gè)if語(yǔ)句的判斷條件為x>O,如果x>0則y=1,否則y=0,即x<O時(shí),y=O。4個(gè)選項(xiàng)中C符合題意。23、有如下程序:main(){intx=23;do{printf("%d",x--);}while(!x);}程序運(yùn)行后的輸出結(jié)果是()。A、321B、23C、不輸出任何內(nèi)容D、陷入死循環(huán)標(biāo)準(zhǔn)答案:2知識(shí)點(diǎn)解析:本題中使用do-while循環(huán),每執(zhí)行一次循環(huán)體輸出x的值后將x減1。當(dāng)x=23,執(zhí)行循環(huán)體輸出x為23,X=X-1=23-1=22,判斷循環(huán)條件是否成立,因?yàn)閤=22,!x的值為0,終止循環(huán),因此只輸出23。24、要求以下程序的功能是計(jì)算s=1+1/2+1/3+…+1/10main(){intn;floats;s=1.0;for(n=1O;n>1;n--)s=s+1/n;printf("%6.4f\n",s);}程序運(yùn)行后輸出結(jié)果錯(cuò)誤,導(dǎo)致錯(cuò)誤結(jié)果的程序行是()。A、s=1.0;B、for(n=1O;n>l;n--)C、s=s+1/n;D、printf("%6.4f\n",s);標(biāo)準(zhǔn)答案:4知識(shí)點(diǎn)解析:程序中由于n為整型,所以1/n的結(jié)果始終為0,故程序最后輸出的結(jié)果為0,其結(jié)果錯(cuò)誤,原因?yàn)樵诒磉_(dá)式1/n中1和n均為整型,所以應(yīng)該將1改為1.0,這樣表達(dá)式1.0/n的值不為0,為該數(shù)學(xué)表達(dá)式的值,因此可以知道導(dǎo)致程序運(yùn)行后輸出結(jié)果錯(cuò)誤的行為“s=s+1/n;”,所以,4個(gè)選項(xiàng)中選項(xiàng)C符合題意。25、有以下程序:main(){intk=4,n=0;for(;n<k;){n++;if(n%3!=O)continue;k--;}printf("%d,%d\n",k,n);}程序運(yùn)行后的輸出結(jié)果是()。A、1,1B、2,2C、3,3D、4,4標(biāo)準(zhǔn)答案:4知識(shí)點(diǎn)解析:在本程序的for循環(huán)中,用到了一個(gè)continue語(yǔ)句,continue語(yǔ)句的作用是停止本次循環(huán),不執(zhí)行循環(huán)體內(nèi)continue語(yǔ)句后面的其他語(yǔ)句,繼續(xù)下次循環(huán)的條件判斷。首先在for循環(huán)中n自加1(值變?yōu)?),然后執(zhí)行后面的if語(yǔ)句,由于if語(yǔ)句后面括號(hào)的表達(dá)式1%3!=0的值為真,程序執(zhí)行continue語(yǔ)句,回到for循環(huán)的開始部分,并且判斷for循環(huán)中的條件表達(dá)式(n<k)為真,重復(fù)執(zhí)行“n++;”語(yǔ)句,如此循環(huán)直到n=3時(shí),if語(yǔ)句判定條件中表達(dá)式3%3!=0的值為假,程序執(zhí)行if語(yǔ)句后面的“k--;”語(yǔ)句,此時(shí)k的值為3,不滿足n<k,退出for循環(huán)。故最后的k和n的值為3和3,選項(xiàng)C符合題意。26、有以下程序:floatfun(intx,inty){return(x+y);}main(){inta=2,b=5,C=8;printf("%3.0f\n",fun((int)fun(a+c,b),a-c));}程序運(yùn)行后的輸出結(jié)果是()。A、編譯出錯(cuò)B、9C、21D、9標(biāo)準(zhǔn)答案:2知識(shí)點(diǎn)解析:fun((int)fun(a+c,b),a-c))是用函數(shù)的返回值做實(shí)參。第一次調(diào)用fun(a+c,b),x+y=a+c+b=2+5+8=15,由于函數(shù)fun()的返回值類型被定義為float型,返回值為15.000000,在主函數(shù)中被強(qiáng)制轉(zhuǎn)換為int型變?yōu)?5。第二次調(diào)用后fun(15,a-c),x+y=15+a-c=15+2-8=9,返回值為9.000000,輸出格式要求小數(shù)位為0且數(shù)據(jù)寬度為3,則輸出9。27、有以下程序:intf1(intx,inty){returnx>y?x:y;}intf2(intx,inty){returnx>y?y:x;}main(){inta=4,b=3,c=5,d,e,f;d=fl(a,b);d=f1(d,c);e=f2(a,b);e=f2(e,c);f=a+b+c-d-e;printf("%d,%d,%d\n",d,f,e);}執(zhí)行后輸出結(jié)果是()。A、3,4,5B、5,3,4C、5,4,3D、3,5,4標(biāo)準(zhǔn)答案:4知識(shí)點(diǎn)解析:函數(shù)f1()的作用是返回形參x和y的較大值,函數(shù)f2()的作用是返回形參x和y的較小值,在main()函數(shù)中通過(guò)調(diào)用兩次f1()函數(shù),求得a、b、c的最大值并存放在變量d中,通過(guò)調(diào)用兩次f2()函數(shù),求得a、b、c的最小值并存放到變量e中。由程序可知d值為5,f的值為4,e的值為3,因此最后輸出的d、f、e的值為5、4、3。所以C選項(xiàng)為所選。28、有如下程序:voidf(intx,inty){intt;if(x<y){t=x;x=y;y=t;}}main(){inta=4,b=3,C=5,f(a,b);f(a,c);f(b,c);printf("%d,%d,%d\n",a,b,C);}執(zhí)行后輸出結(jié)果是()。A、3,4,5B、5,3,4C、5,4,3D、4,3,5標(biāo)準(zhǔn)答案:8知識(shí)點(diǎn)解析:C語(yǔ)言規(guī)定,在函數(shù)調(diào)用時(shí)變量作為參數(shù)傳遞是傳值的,在函數(shù)體中對(duì)形參變量的修改不能影響到對(duì)應(yīng)的實(shí)參變量。本題定義了一個(gè)函數(shù)f(),用變量作為形參,在main()函數(shù)中調(diào)用了3次f()函數(shù),由于變量作為參數(shù)進(jìn)行傳遞,所以對(duì)應(yīng)的實(shí)參的值并沒有被交換。故輸出的a、b、c依舊是原來(lái)的值4、3、5。D選項(xiàng)為所選。29、以下選項(xiàng)中,正確運(yùn)用指針變量的程序段是()。A、int*i=NULL;B、float*f=NULL;scanf("%d",i);*f=10.5;C、chart=’m’,*C=&t;D、long*L;*C=&t;L=’0’;標(biāo)準(zhǔn)答案:8知識(shí)點(diǎn)解析:選項(xiàng)A定義了一個(gè)整型變量i,并且初始化讓它指向NULL,接著通過(guò)scarnf()函數(shù),改變i指向的存儲(chǔ)空間的值,選項(xiàng)A中首先定義了整型指針變量i并初始化為NULL,即表示指針i不指向任何存儲(chǔ)單元,即此時(shí)還沒有為i在內(nèi)存中開辟存儲(chǔ)單元,而在scanf()函數(shù)中第二個(gè)參數(shù)是地址參數(shù),顯然在這里i不表示地址,所以下面的scanf("%d",i)語(yǔ)句是不正確的,故選項(xiàng)A不正確。選項(xiàng)B定義了一個(gè)實(shí)型指針變量f并初始化使它指向NULL,即還沒有為f在內(nèi)存中開辟存儲(chǔ)單元,不能向*f代表的存儲(chǔ)單元(不存在)中寫數(shù)據(jù),故選項(xiàng)B錯(cuò)誤;選項(xiàng)C中首先定義了一個(gè)字符變量t并給它賦初值’m’,然后定義一個(gè)字符型指針c并讓它指向了變量t,這一部分正確,然后接著用了一個(gè)語(yǔ)句“*c=&t;”應(yīng)該將該語(yǔ)句中c前的*去掉,故選項(xiàng)C運(yùn)用指針變量不正確。選項(xiàng)D中的’\0’是一個(gè)轉(zhuǎn)移字符,稱作“空值”,可以給指針變量L賦值。所以,4個(gè)選項(xiàng)中選項(xiàng)D符合題意。30、有以下程序:#include<stdio.h>main(){printf("%d\n",NULL));程序運(yùn)行后的輸出結(jié)果是()。A、0B、1C、-1D、NULL沒定義,出錯(cuò)標(biāo)準(zhǔn)答案:1知識(shí)點(diǎn)解析:在C語(yǔ)言中NULL的ASCII碼值為0,而輸出函數(shù)要求以整形格式輸出,故最后的輸出數(shù)為0。所以,4個(gè)選項(xiàng)中選項(xiàng)A符合題意。31、已定義c為字符型變量,則下列語(yǔ)句中正確的是()。A、c=’97’;B、c="97";C、c=97;D、c="a";標(biāo)準(zhǔn)答案:4知識(shí)點(diǎn)解析:用單引號(hào)括起來(lái)的—介字符稱為字符常量,而選項(xiàng)B和選項(xiàng)D中用的是雙引號(hào),而用雙引號(hào)括起來(lái)的字符為字符串常量,故選項(xiàng)B和選項(xiàng)D不正確。因?yàn)樵贑語(yǔ)言中,字符常量在存儲(chǔ)時(shí),并不是把該字符本身放到內(nèi)存單元中去,而是將該字符的相應(yīng)ASCII代碼放到存儲(chǔ)單元中,所以C語(yǔ)言使字符型數(shù)據(jù)和整形數(shù)據(jù)之間可以通用,選項(xiàng)C正確。而選項(xiàng)A中,給字符型變量賦值時(shí)只能賦一個(gè)字符,9,7作為字符時(shí)為兩個(gè)字符且必須分別為單引號(hào)括起來(lái),故選項(xiàng)A不正確,所以,4個(gè)選項(xiàng)中選項(xiàng)C符合題意。32、以下不能正確定義二維數(shù)組的選項(xiàng)是()。A、inta[2][12]={{1},{2}};B、inta[][2]={1,2,3,4};C、inta[2][2]={{1},2,3}:D、inta[2][]={{1,2},{3,4}};標(biāo)準(zhǔn)答案:8知識(shí)點(diǎn)解析:在定義中如果對(duì)所有元素賦初值,其第1維的長(zhǎng)度可以省略,故選項(xiàng)B正確;二維數(shù)組初始化也可以只對(duì)每行或前若干個(gè)行的前若干個(gè)元素賦初值,故選項(xiàng)A和選項(xiàng)C正確:在二維數(shù)組定義時(shí)不能省略第二維的長(zhǎng)度,故選項(xiàng)D錯(cuò)誤。所以,4個(gè)選項(xiàng)中選項(xiàng)D符合題意。33、若有如下程序:main(){chara[3][5]={"name","age","sex"},n;for(n=0;n<3;n++)printf("%s\n",a[n]);}則程序執(zhí)行后的輸出結(jié)果是()。A、nameagesexB、nameC、nameD、nameagexexgeagesexxsex標(biāo)準(zhǔn)答案:4知識(shí)點(diǎn)解析:a[3][5]是一個(gè)二維數(shù)組,它也可以看成是一個(gè)有3個(gè)元素的一維數(shù)組a[0]、a[1]、a[2],同時(shí)這3個(gè)元素也是一維數(shù)組,分別保存字符串“name”、“age”、“sex”。for循環(huán)循環(huán)3次,輸出3個(gè)字筘串“name”、“age”、“sex”。所以,C選項(xiàng)為所選。34、有以下程序:main(){intm[][3]={1,4,7,2,5,8,3,6,9}inti,j,k=2;for(i=0;i<3;i++){printf("%d",m[k][i]);}}執(zhí)行后輸出結(jié)果是()。A、456B、258C、369D、789標(biāo)準(zhǔn)答案:4知識(shí)點(diǎn)解析:變量k的初值為2,循環(huán)執(zhí)行了3次,分別輸出m[2][0]、m[2][1]和m[2][2],其值分別為3、6、9。所以,C選項(xiàng)為所選。35、執(zhí)行下列程序的結(jié)果是()。#defineN5#defineH(x)((N+2)*x)main(){inta=2,b=3,C;c=H(a+b);printf("%d",c);}A、15B、17C、23D、35標(biāo)準(zhǔn)答案:2知識(shí)點(diǎn)解析:用a+b替代宏H(x)中的參數(shù)x,用5替代N,則((N+2)*x)=((5+2)*a=b)=((5+2)*2+3)=17。36、有以下程序:main(){chars[]="\n123\\";printf(’%d,%d\n’,strlen(s),sizeof(s));}執(zhí)行后輸出結(jié)果是()。A、賦初值的字符串有錯(cuò)B、6,7C、5,6D、6,6標(biāo)準(zhǔn)答案:4知識(shí)點(diǎn)解析:本題在定義字符數(shù)組時(shí)沒有定義數(shù)組長(zhǎng)度,但用字符常量給數(shù)組賦了初值,這時(shí)初值的個(gè)數(shù)即為數(shù)組的長(zhǎng)度,故數(shù)組長(zhǎng)度為6(包括’\0’)。字符串的長(zhǎng)度為有效字符的個(gè)數(shù)5。strlen(s)返回值為串中字符的個(gè)數(shù)(不計(jì)最后的’\0’),則輸出值為5。sizeof(s)計(jì)算數(shù)組所占的字節(jié)數(shù),包含’\0’,則輸出值為6。因此,C選項(xiàng)正確。37、閱讀以下函數(shù):fun(char*s1,char*s2){inti=0;while(s1[i]==s2[i]&&s2[i]!=’\0’)i++;return(s1[i]==&&s2{i)!==’\0’);}此函數(shù)的功能是()。A、將s2所指字符串賦給s1B、比較s1和s2所指字符串的大小,若s1比s2的大,函數(shù)值為1,否則函數(shù)值為0C、比較s1和s2所指字符串是否相等,若相等,函數(shù)值為1,否則函數(shù)值為0D、比較s1和s2所指字符串的長(zhǎng)度,若s1比s2的長(zhǎng),函數(shù)值為1,否則函數(shù)值為0標(biāo)準(zhǔn)答案:4知識(shí)點(diǎn)解析:在函數(shù)fun()中有兩個(gè)字符型指針變量s1和s2,在函數(shù)中程序執(zhí)行while循環(huán),該循環(huán)退出條件有兩個(gè):一個(gè)是s1[i]!=s2[i](兩個(gè)字符串不相等);第二個(gè)是s1[i]和s2[i]相等均為\0(兩個(gè)字符串相等)。循環(huán)退出后,執(zhí)行return語(yǔ)句,即兩個(gè)字符串相等則返回1,不相等則返回0。所以,C選項(xiàng)為所選。38、以下敘述中正確的是()。A、全局變量的作用域一定比局部變量的作用域范圍大B、靜態(tài)(static)類別變量的生存期貫穿于整個(gè)程序的運(yùn)行期間C、函數(shù)的形參都屬于全局變量D、未在定義語(yǔ)句中賦初值的auto變量和static變量的初值都是隨機(jī)值標(biāo)準(zhǔn)答案:2知識(shí)點(diǎn)解析:若在函數(shù)中定義與全局變量名字相同的局部變量,則全局變量在該函數(shù)中將不起作用,因此全局變量的作用域并不一定比局部變量的作用域大,故選項(xiàng)A不正確;靜態(tài)變量一旦定義,將在整個(gè)程序的運(yùn)行期間都存布,故選項(xiàng)B正確;函數(shù)的形參只在函數(shù)調(diào)用的時(shí)候分配存儲(chǔ)空間,在退出函數(shù)時(shí)收回存儲(chǔ)空間,因此是局部的,故選項(xiàng)C不正確;沒有賦值的auto型變量的初值是隨機(jī)的,沒有賦值的static型變量的初值是0,故選項(xiàng)D不正確。所以,B選項(xiàng)為所選。39、設(shè)有如下說(shuō)明:typedefstruct{intn;charc;doublex;)STD;則以下選項(xiàng)中,能正確定義結(jié)構(gòu)體數(shù)組并賦初值的語(yǔ)句是()。A、STDtt[2]={{1,’A’,62},{2,’B’,75}};B、STDtt[2]={1,"A",62},2,"B",75};C、stmctt[2]={{1,’A’),{2,’B’}};D、structt[2]={{1,"A",62.5),{2,"B",75.0}};標(biāo)準(zhǔn)答案:1知識(shí)點(diǎn)解析:本題定義了一個(gè)結(jié)構(gòu)體類型并自定義類型名為STD,用戶自定義類型后,就可以利用它進(jìn)行變量與數(shù)組的定義。定義的方法,與C語(yǔ)言中其他類型的定義完全一樣,定義結(jié)構(gòu)型數(shù)組并賦初值時(shí),每個(gè)元素用一對(duì){和}括起來(lái),字符型元素用,括起來(lái),選項(xiàng)A、B、C、D中只有選項(xiàng)A符合條件。所以,A選項(xiàng)為所選。40、在下列定義中的共用體所占內(nèi)存字節(jié)數(shù)是()。union{chark[6];struct{intm;floarf;}a;doubled;}b;A、8B、14C、18D、10標(biāo)準(zhǔn)答案:1知識(shí)點(diǎn)解析:結(jié)構(gòu)體變量所占的存儲(chǔ)空間是各個(gè)分量所占空間的總和。共用體變量中的所有成員占有同一個(gè)存儲(chǔ)空間,其字節(jié)數(shù)與成員中占字節(jié)數(shù)最多的那個(gè)成員相等。m占2個(gè)字節(jié),f占4個(gè)字節(jié),因此結(jié)構(gòu)體變量a所占的存儲(chǔ)空間為6字節(jié)。k[6]占6個(gè)字節(jié),d占8個(gè)字節(jié)。共用體變量b所占的存儲(chǔ)空間與占存儲(chǔ)空間最多的d所占存儲(chǔ)空間的字節(jié)數(shù)相同。所以,A選項(xiàng)為所選。41、若有以下結(jié)構(gòu)體,則正確的定義或引用是()。structTest{intx;inty;}v1;A、Test.x=10;B、Testv2;v2.x=10;C、structTestv2;v2.x=10;D、structTest.v2=10;標(biāo)準(zhǔn)答案:4知識(shí)點(diǎn)解析:定義結(jié)構(gòu)體類型的變量的方式有:①緊跟在結(jié)構(gòu)體類型說(shuō)明之后進(jìn)行定義,如題目中給出的;②在說(shuō)明對(duì)結(jié)構(gòu)成員的引用形式為結(jié)構(gòu)體變量名.成員名選項(xiàng)A對(duì)結(jié)構(gòu)成員的引用的形式是錯(cuò)誤的,Test是結(jié)構(gòu)體名,不能用來(lái)引用結(jié)構(gòu)成員。選項(xiàng)B中定義結(jié)構(gòu)體類型的變量的形式是錯(cuò)誤的,Test是結(jié)構(gòu)體名,不能用宋定義結(jié)構(gòu)體類型的變量。選項(xiàng)D中對(duì)結(jié)構(gòu)成員的引用的形式是錯(cuò)誤的,對(duì)結(jié)構(gòu)成員的引用的形式為:結(jié)構(gòu)體變量名.成員名。4個(gè)選項(xiàng)中只有選項(xiàng)C是正確的定義或引用。42、有以下程序:main(){chars[]="Yes\n/No",*ps=s;puts(ps+4);*(ps+4)=0;puts(s);}程序運(yùn)行后的輸出結(jié)果是(選項(xiàng)D中的第一行是空行)()。A、n/NoYes/NoB、/NoYesC、n/NoYes/NoD、/NoYes標(biāo)準(zhǔn)答案:2知識(shí)點(diǎn)解析:主函數(shù)中定義了一個(gè)字符數(shù)組s并賦初值,一個(gè)字符串指針變量ps并讓它指向s。程序中p+4的地址為數(shù)組第5個(gè)元素的地址,而調(diào)用put(str_adr)函數(shù)時(shí),將從str_adr這一地址開始,依次輸出存儲(chǔ)單元中的字符,遇到第一個(gè)\0時(shí)結(jié)束輸出,并自動(dòng)輸出一個(gè)換行符。所以put(p+4)將輸出n/No,put(s)將從s第一個(gè)元素開始輸出到第3個(gè)元素結(jié)束(因?yàn)閳?zhí)行*(p+4)=0語(yǔ)句后s中的第5個(gè)元素的值為0,而s中的第4個(gè)元素為\,puts將遇到\0,結(jié)束輸出),即輸出yes。所以,4個(gè)選項(xiàng)中選項(xiàng)B符合題意。43、有以下程序:voidfun(int*a,inti,intj){intt;if(i<j){t=a[i];a[i]=a[j];a[j]=t;fun(a,++i,--j);}}main(){inta[]={1,2,3,4,5,6),i;fun(a,0,5)for(i=0;i<6;i++)printf("%d",a[i]);}執(zhí)行后的輸出結(jié)果是()。A、654321B、432156C、456123D、123456標(biāo)準(zhǔn)答案:1知識(shí)點(diǎn)解析:函數(shù)fun()中有3個(gè)參數(shù),參數(shù)a為一個(gè)指針變量,接收的實(shí)參可以是數(shù)組名,參數(shù)i和j分別表示數(shù)組元素的下標(biāo),當(dāng)下標(biāo)i小于下標(biāo)j時(shí),a[i]和a[j]交換,然后對(duì)自身進(jìn)行調(diào)用,可見這是一個(gè)遞歸函數(shù)。其實(shí)現(xiàn)的功能是把數(shù)組a從下標(biāo)為i的元素到下標(biāo)為j的元素之間的所有元素反序存放。在主函數(shù)中調(diào)用fun()函數(shù),把a(bǔ)數(shù)組從a[0]到a[5]之間的所有元素反序存放,最后輸出從a[0]到a[5]的值,因此輸出的值為6、5、4、3、2、1,.所以,A選項(xiàng)為所選。44、假定下列程序的可執(zhí)行文件名為filel.exe,在該程序的子目錄下輸入命令行:file1ChinaBejing<回車>main(intargc,char*argv[]){while(argc-->1)printf("%s\n",*++argv);}則程序運(yùn)行后的輸出結(jié)果是()。A、filelChinaBejingB、ChinaBejingC、ChinaD、Bejing標(biāo)準(zhǔn)答案:2知識(shí)點(diǎn)解析:主函數(shù)的第一個(gè)參數(shù)argc為整形參數(shù),記下從命令行輸入的參數(shù)的個(gè)數(shù);第二個(gè)參數(shù)argv是一個(gè)字符型的指針數(shù)組,它的每一個(gè)指針指向命令行輸入的參數(shù)字符數(shù)。在本例中argc的值為3,argv[0]指向字符串.“filel”,argv[l]指向參數(shù)字符串“China”,argv[2]指向字符串“Bejing”。在main()函數(shù)中,while循環(huán)執(zhí)行了2次。第1次循環(huán),argc=3,3>1為真,argc-1=3-1=2,執(zhí)行循環(huán)體輸出*++argv,argv為字符型的指針數(shù)組的數(shù)組名,代表數(shù)組的首地址,同時(shí)也是數(shù)組第1個(gè)元素的地址,++argv指向數(shù)組的第2個(gè)元素,第2個(gè)元素是一個(gè)指針,它指向字符串“China”。第2次循環(huán),argc=2,2>1為真,argc-1=2-1=1,執(zhí)行循環(huán)體輸出*++argv,這次循環(huán)畔++argv指向數(shù)組的第3個(gè)元素,第3個(gè)元素是一個(gè)指針,它指向字符串“Bejing”。argc=1時(shí),1>1為假,退出循環(huán)。所以,4個(gè)選項(xiàng)中選項(xiàng)B符合題意。45、有如下說(shuō)明和定義語(yǔ)句:structstudent{intage;charnum{8};};structstudentstu[3]={{20,"200401"},{21,"200402"),{19,"200403"}};structstudent*p=stu;以下選項(xiàng)中引用結(jié)構(gòu)體變量成員的表達(dá)式錯(cuò)誤的是()。A、(p++)->numB、p->numC、(*p).numD、stu[3].age標(biāo)準(zhǔn)答案:8知識(shí)點(diǎn)解析:結(jié)構(gòu)體變量也有地址,因此可以把它的地址賦值給一個(gè)指針變量,然后通過(guò)該指針變量來(lái)引用結(jié)構(gòu)體的成員,選項(xiàng)A和選項(xiàng)B就是通過(guò)指針變量來(lái)引用結(jié)構(gòu)體的成員,故選項(xiàng)A和選項(xiàng)B都正確,也可以通過(guò)結(jié)構(gòu)體數(shù)組元素的成員引用,選項(xiàng)C和選項(xiàng)D屬于這種情況,而在選項(xiàng)D中stu[3].age不正確,因?yàn)榻Y(jié)構(gòu)體數(shù)組stu共有3個(gè)元素,其下標(biāo)應(yīng)該為0,1,2。所以,4個(gè)選項(xiàng)中選項(xiàng)D符合題意。46、若要說(shuō)明一個(gè)類型名STP,使得定義語(yǔ)句STPs等價(jià)于char*s,以下選項(xiàng)中正確的是()。A、typedefSTPchar*s;B、typedef*charSTP;C、typedefSTP*char;D、typedefchar*STP;標(biāo)準(zhǔn)答案:8知識(shí)點(diǎn)解析:指針類型的白定義形式如下:typedef類型說(shuō)明符*用戶類型名。不難看出只有選項(xiàng)D是正確的定義形式。所以,D選項(xiàng)為所選。47、下面程序的輸出結(jié)果為()。structst{intx;int*y;}*p;intdt[4]={10,20,30,40);structstaa[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3]};main(){p=aa;printf("%d\n",++p->x);printf("%d|n",(++p)->x);printf("%d\n",++(*p->y));}A、102020B、506021C、516021D、607031標(biāo)準(zhǔn)答案:4知識(shí)點(diǎn)解析:第1個(gè)輸出語(yǔ)句中由于->的優(yōu)先級(jí)高于++,因此先取結(jié)構(gòu)體的分量x,再對(duì)x的值加1,再輸出。p的初值為結(jié)構(gòu)體數(shù)組aa的首地址即a[0]的地址,a[0]的x分量值為50,加1后輸出51。第2個(gè)輸出語(yǔ)句中++p被括號(hào)括起來(lái),括號(hào)的優(yōu)先級(jí)與->相同,自左至右結(jié)合,因此先對(duì)p加1,再取p所指向的元素的x分量的值。p加1后p指向數(shù)組元素a[1],a[1]的x分量的值為60,輸出60。第3個(gè)輸出語(yǔ)句中括號(hào)的優(yōu)先級(jí)高于++,因此先求括號(hào)中表達(dá)式的值,又由于->的優(yōu)先級(jí)高于*,所以先取p所指向的數(shù)組元素的y分量的值,p所指向的元素為a[1],y分量的值為&dt[1]。&dt[1]是一個(gè)存儲(chǔ)單元的地址,是數(shù)組dt第2個(gè)元素的地址值,再取該存儲(chǔ)單元中的值為20,最后對(duì)20加1,輸出21。選項(xiàng)C為所選。48、表達(dá)式“~9&9<<1|4”的值為()。A、0B、4C、5D、22標(biāo)準(zhǔn)答案:8知識(shí)點(diǎn)解析:優(yōu)先級(jí)由高到低的順序?yàn)椤?、<<?、|。9的二進(jìn)制形式為00001001,4的二進(jìn)制形式為00000100?!?即11110110。9<<1為00010010,11110110&00010010=00010010,00010010|00000100=10110即22。49、以下敘述中不正確的是()。A、C語(yǔ)言中的文本文件以ASCII碼形式存儲(chǔ)數(shù)據(jù)B、C語(yǔ)言中對(duì)二進(jìn)制文件的訪問(wèn)速度比文本文件快C、C語(yǔ)言中,隨機(jī)讀寫方式不適用于文本文件D、C語(yǔ)言中,順序讀寫方式不適用于二進(jìn)制文件標(biāo)準(zhǔn)答案:8知識(shí)點(diǎn)解析:在C語(yǔ)言中文本文件是以ASCII碼形式存放的,每個(gè)字符占一個(gè)字節(jié)。由于數(shù)據(jù)在計(jì)算機(jī)中是以二進(jìn)制形式存放的,因此二進(jìn)制文件中的數(shù)據(jù)可以直接讀出,而不需要像文本文件那樣把ASCII碼轉(zhuǎn)換成二進(jìn)制,因此速度較快。在文本文件葉,,數(shù)據(jù)以ASCII碼形式存放,用戶很難判定一個(gè)數(shù)據(jù)到底占幾個(gè)字節(jié),所以不適合使用隨機(jī)讀寫方式。數(shù)據(jù)以二進(jìn)制形式存放,占有的字節(jié)數(shù)是固定的,所以可以進(jìn)行隨機(jī)讀寫,當(dāng)然也可以順序讀寫。故D選項(xiàng)為所選。50、有以下程序(提示,程序中fseek(fp,-2L*sizeof(int),SEEK_END);語(yǔ)句的作用是使位置指針從文件末尾向前移2*sizeof(int)字節(jié)):#include<stdio.h>main(){FILE*fp;inti,a[4]={l,2,3,4},b;fp=fopen("data.dat","wb");for(i=0;i<4;i++)fwrite(&a[i],sizeof(int),1,fp);fclose(fp);fp=fopen("data.dar","rb");fseek(fp,-2L*sizeof(int),SEEKEND);fread(&b,sizeof(int),1,fp);/*從文件中讀取sizeof(int)字節(jié)的數(shù)據(jù)到變量b中*/fclose(fp);printf("%d\n",b);}執(zhí)行后輸出結(jié)果是()。A、2B、1C、4D、3標(biāo)準(zhǔn)答案:8知識(shí)點(diǎn)解析:函數(shù)fopen(constchar*filename,constchar*mode)的功能足以mode指定的模式打開filename指定的磁盤文件;fclose(FILE*fp)的功能是關(guān)閉文件指針fp指向的文件;函數(shù)fscanf(FILE*fp,constchar*format[,address,--])的功能是根據(jù)format中的格式從fp指向的文件中讀取數(shù)據(jù),并存入到相應(yīng)的address指向的變量中。函數(shù)fprintf(FILE*fp,constchar*format[,argument,--])的功能是把a(bǔ)rgument列表中的表達(dá)式值寫到fp所指向的文件中;函數(shù)fwrite(void*ptr,intsize,intn,FILE*fp)的功能足把ptr指向的緩沖區(qū)中的size×n個(gè)字節(jié)寫到文件指針fp指向的文件中。本題中首先定義了一個(gè)文件指針fp,然后通過(guò)函數(shù)fopen以可wb的方式打開文件data.dat,直接通過(guò)一個(gè)for循環(huán),每循環(huán)一次調(diào)用函數(shù)fwrite將數(shù)組中的元素a[i]的值寫進(jìn)fp所指的文件中,該循環(huán)共循環(huán)4次,循環(huán)完后fp所指文件的內(nèi)容為123,然后通過(guò)fclose函數(shù)關(guān)閉fp所指文件。接著通過(guò)函數(shù)fopen以rb的方式打開文件data.dat,通過(guò)fseek函數(shù)讓指針fp從文件末尾向前移動(dòng)兩個(gè)血型大小字節(jié),再通過(guò)函數(shù)fread從fp所指的文件畔,讀取一個(gè)int型大小的數(shù)據(jù)到變量b中,故此時(shí)b的值為3,因此最后輸出b的值為3,所以,4個(gè)選項(xiàng)中選項(xiàng)D符合題意。四、公共基礎(chǔ)填空題(本題共5題,每題1.0分,共5分。)51、在一個(gè)容量為25的循環(huán)隊(duì)列中,若頭指針front=16,尾指針rear=9,則該循環(huán)隊(duì)列中共有【】個(gè)元素。標(biāo)準(zhǔn)答案:18知識(shí)點(diǎn)解析:設(shè)循環(huán)隊(duì)列的容量為n。若rear>front,則循環(huán)隊(duì)列中的元素個(gè)數(shù)為rear-front;若rear<front,則循環(huán)隊(duì)列中的元素個(gè)數(shù)為n+(rear-front)。題中,front=16,rear=9,即rear<front,所以,循環(huán)隊(duì)列中的元素個(gè)數(shù)為m+(rear-front)=25+(9-16)=18。52、在面向?qū)ο蠓椒ㄖ?,屬性與操作相似的一組對(duì)象稱為【】。標(biāo)準(zhǔn)答案:類知識(shí)點(diǎn)解析:在面向?qū)ο蠓椒ㄖ?,類描述的是具有相似性質(zhì)的一組對(duì)象。所以,屬性與操作相似的一組對(duì)象稱為類。53、在軟件開發(fā)中,結(jié)構(gòu)化方法包括結(jié)構(gòu)化分析方法、結(jié)構(gòu)化設(shè)計(jì)方法和結(jié)構(gòu)化程序設(shè)計(jì)方法。詳細(xì)設(shè)計(jì)階段所采用的是【】方法。標(biāo)準(zhǔn)答案:結(jié)構(gòu)化設(shè)計(jì)知識(shí)點(diǎn)解析:在軟件開發(fā)中,結(jié)構(gòu)化方法包括結(jié)構(gòu)化分析方法、結(jié)構(gòu)化設(shè)計(jì)方法和結(jié)構(gòu)化程序設(shè)計(jì)方法。詳細(xì)設(shè)計(jì)階段所采用的是結(jié)構(gòu)化設(shè)計(jì)方法。54、在關(guān)系模型中,把數(shù)據(jù)看成一個(gè)二維表,每一個(gè)二維表稱為一個(gè)【】。標(biāo)準(zhǔn)答案:關(guān)系知識(shí)點(diǎn)解析:在關(guān)系模型中,把數(shù)據(jù)看成一個(gè)二維表,每一個(gè)二維表稱為一個(gè)關(guān)系。55、實(shí)體之間的聯(lián)系可以歸結(jié)為一對(duì)一的聯(lián)系,一對(duì)多的聯(lián)系與多對(duì)多的聯(lián)系。如果一個(gè)學(xué)校有許多教師,而一個(gè)教師只歸屬于一個(gè)學(xué)校,則實(shí)體集學(xué)校與實(shí)體集教師之間的聯(lián)系屬于【】的聯(lián)系。標(biāo)準(zhǔn)答案:一對(duì)多知識(shí)點(diǎn)解析:實(shí)體之間的聯(lián)系可歸結(jié)為一對(duì)一、一對(duì)多與多對(duì)多的聯(lián)系。如一個(gè)學(xué)校有許多教師,一個(gè)教師只歸屬于一個(gè)學(xué)校,則實(shí)體集學(xué)校與實(shí)體集教師之間的聯(lián)系屬于一對(duì)多的聯(lián)系。五、填空題(本題共12題,每題1.0分,共12分。)56、已知字符A的ACSII碼值為65,以下語(yǔ)句的輸出結(jié)果是【】。charch=’B’;printf("%c%d\n",ch,ch);標(biāo)準(zhǔn)答案:B66知識(shí)點(diǎn)解析:printf函數(shù)的功能是按照指定的格式,在標(biāo)準(zhǔn)輸出設(shè)備上輸出數(shù)據(jù),它有兩種參數(shù):格式控制參數(shù)和輸出項(xiàng)參數(shù)。本題中,printf("%c%d\n",ch,ch)表示以字符格式和十進(jìn)制整數(shù)格式輸出ch,B的ACSII碼值為66,即在計(jì)算機(jī)中B的十進(jìn)制整數(shù)格式是66。所以,輸出為B66。57、以下程序段的輸出結(jié)果是【】。main(){inta=2,b=2,c=4;a*=16+(b++)-(++C);printf("%d",a);}標(biāo)準(zhǔn)答案:26知識(shí)點(diǎn)解析:a*=16+(b++)-(++c)等價(jià)于a*=a*(16+(b++)-(++c))=2*(16+(2-5)=26。b++是先使用b的值參加運(yùn)算,再對(duì)b加1;++c是先c加1,再使用c的值參加運(yùn)算。58、有以下程序main(){intt=1,i=5;for(;i>=0;i--)t*=i;printf("%d\n",t);}執(zhí)行后輸出結(jié)果是【】。標(biāo)準(zhǔn)答案:0知識(shí)點(diǎn)解析:本題中的for循環(huán)共執(zhí)行了6次,每執(zhí)行一次將相應(yīng)i的值相乘,最后當(dāng)i=-1時(shí)停止循環(huán)。該for循環(huán)執(zhí)行完后t的值為5*4*3*2*1*0=0,故最后輸出t的值為0。59、若有以下程序:main(){inta=4,b=3,c==5,t=0;if(a<b)t=a;a=b;b=t;if(a<c)t=a;a=c;c=t;printf("%d%d%d\n",a,b,C);}執(zhí)行后輸出結(jié)果是【】。標(biāo)準(zhǔn)答案:503知識(shí)點(diǎn)解析:先判斷表達(dá)式a<b為假,不執(zhí)行t=a,但執(zhí)行“a=b;b=t;”,a的值為3,b的值為0。再判斷表達(dá)式a<C,值為真,所以執(zhí)行后面的3條語(yǔ)句“t=a;a=c;c=t”,結(jié)果a的值為5,c的值為3,所以最后輸出的結(jié)果為5、0和3。60、有以下程序:#include<stdio.h>main(){charch1,ch2;intn1,n2;ch1=getchar();ch2=getchar();n1=ch1-’0’;n2=n1*10+(ch2-’0’);printf("%d\n",n2);;}程序運(yùn)行時(shí)輸入12<回車>,執(zhí)行后輸出結(jié)果是【】。標(biāo)準(zhǔn)答案:12知識(shí)點(diǎn)解析:字符類型的數(shù)據(jù)在內(nèi)存中以相應(yīng)的ASCII碼存放,在C語(yǔ)言中,字符數(shù)據(jù)可以等價(jià)為與其相應(yīng)的ASCII碼的整數(shù),還可以作為整數(shù)參加運(yùn)算。在本題中,n1=ch1-’0’=’1-’0’=49-48=1,n2=n1*10+(ch2-’0’)=1*10+(’2’-’0’)=10+2=12,所以,最后輸出為12。61、有以下程序:voidf(inty,int*x){y=y+*x;*x=*x+y;}main(){intx=2,y=4;f(y,&x);ptintf("%d%d\n",x,y);}執(zhí)行后輸出結(jié)果是【】。標(biāo)準(zhǔn)答案:84知識(shí)點(diǎn)解析:“值傳遞”指實(shí)參將值傳遞給形參后,實(shí)參與形參再無(wú)聯(lián)系。也就是說(shuō)對(duì)行參的改變將不影響實(shí)參;地址傳遞是指地址或數(shù)組名作為形參時(shí)的參數(shù)傳遞,這種情況下對(duì)形參的改變將對(duì)實(shí)參產(chǎn)生影響。函數(shù)f(y,*x)的作用是讓y的值加上指針x所指向變量的值,讓指針x所指向變量的值加上y的值。由于形參y是傳值的,形參x是傳地址的,故調(diào)用該函數(shù)后,作為實(shí)參y的值將不改變,而實(shí)參x的值將改變,故最后輸出的y值為4,而x的值為8。62、若x、y和z均是int型變量,則執(zhí)行下面表達(dá)式后的x值為【】。x=(y=4)+(z=3)標(biāo)準(zhǔn)答案:7知識(shí)點(diǎn)解析:x=(y=4)+(z=3)等價(jià)于y=4,z=3,x=y+z=4+3=7。63、以下程序中,for循環(huán)體執(zhí)行的次數(shù)是【】。#defineN2#defineMN+1#defineKM+1*M/2main(){inti;for(i=1;i<K;i++){...}}標(biāo)準(zhǔn)答案:4知識(shí)點(diǎn)解析:將程序中所有的宏替換掉可得:M=2+1,K=2+1*2+1/2=4,所以for循環(huán)共循環(huán)了K-1+1次,即4-1+1共4次。64、設(shè)有如下變量說(shuō)明,則a+(int)((int)b+c)>>(int)(b-c)的值為【】。inta=5;floatb=7.2,c=3.6;標(biāo)準(zhǔn)答案:1知識(shí)點(diǎn)解析:在表達(dá)式a+(int)((int)b+c)>>(int)(b-c)中圓括號(hào)最優(yōu)先,其次為類型轉(zhuǎn)換(int)、加法+、減法-、右移運(yùn)算>>。所以先看兩個(gè)圓括號(hào)((int)b+c)和(b-c),前者b先被轉(zhuǎn)換為int型7,然后與c相加得10.6,后者結(jié)果是3.6,現(xiàn)在表達(dá)式為a+(iot)10.6>>(int)3.6。C語(yǔ)言中,float型轉(zhuǎn)換為int型是截尾取整,所以表達(dá)式進(jìn)一步簡(jiǎn)化為5+10>>3=>15>>3。由于15的二進(jìn)制為000011112(下標(biāo)),所以15>>3的結(jié)栗是000000012(下標(biāo)),即1。65、main(){printf("Thesum=%d\n",SunFun(10));}SunFun(intn){intx,s=0;for(x=0;x<=n;x++)s+=F(【】);returns;}F(intx){return(【】);)標(biāo)準(zhǔn)答案:xx*x+1或1+x*x知識(shí)點(diǎn)解析:題目中要求從x=0開始將f(x)的值累加起來(lái),直到x=10。在SunFun()函數(shù)中用了一個(gè)for循環(huán),每循環(huán)一次將f(x)累加到s中,所以在本題的第一個(gè)空白處應(yīng)該填x,然后x+1,共循環(huán)10次。F()函數(shù)的功能應(yīng)該是求數(shù)學(xué)表達(dá)式f(x)的值,所以其返回值應(yīng)該為x*x+1。66、若有如下程序:main(){intx=5,y,*t;t=&x;y=++(*t);printf("%d,%d",x,y);}則程序執(zhí)行后的x值為【】,y的值為【】。標(biāo)準(zhǔn)答案:66知識(shí)點(diǎn)解析:本題定義兩個(gè)iht型變量x、y,一個(gè)int型指針t,并將x初始化為5,t指向變量x。表達(dá)式y(tǒng)=++(*t)的意思是:讓t所指地址內(nèi)容自增1,然后賦給y。所以執(zhí)行后t所指的內(nèi)容(即變量x的值為6)y也為6。故本題的兩個(gè)空都應(yīng)該填6。67、下面函數(shù)用來(lái)求兩個(gè)單精度數(shù)之和,并通過(guò)形參將結(jié)果傳回,請(qǐng)?zhí)羁?。voidsub(floatx,floaty,【】z){【】=x+y;}標(biāo)準(zhǔn)答案:float**z知識(shí)點(diǎn)解析:C程序中可以通過(guò)傳送地址的方式在被調(diào)用函數(shù)中直接改變被調(diào)用函數(shù)中變量的值,從而達(dá)到函數(shù)之間數(shù)據(jù)的傳遞。國(guó)家二級(jí)(C語(yǔ)言)筆試模擬試卷第2套一、公共基礎(chǔ)選擇題(本題共10題,每題1.0分,共10分。)1、下列選項(xiàng)中,不是一個(gè)算法的基本特征的是()。A、完整性B、可行性C、有窮性D、擁有足夠的情報(bào)標(biāo)準(zhǔn)答案:1知識(shí)點(diǎn)解析:作為一個(gè)算法,一般應(yīng)該具有下列4個(gè)特征:①可行性,即考慮到實(shí)際的條件能夠達(dá)到一個(gè)滿意的結(jié)果;②確定性,算法中的第一個(gè)步驟都必須是有明確定義的:③有窮性,一個(gè)算法必須在有限的時(shí)間內(nèi)做完;④擁有足夠的情報(bào)。2、下列數(shù)據(jù)結(jié)構(gòu)中,屬于非線性的是()。A、線性表B、隊(duì)列C、樹D、棧標(biāo)準(zhǔn)答案:4知識(shí)點(diǎn)解析:線性結(jié)構(gòu),是指數(shù)據(jù)元素只有一個(gè)直接前件元素和直接后件元素。線性表是線性結(jié)構(gòu)。棧和隊(duì)列是指對(duì)插入和刪除操作有特殊要求的線性表,樹是非線性結(jié)構(gòu)。3、下列敘述中錯(cuò)誤的是()。A、線性表是由n個(gè)元素組成的一個(gè)有限序列B、線性表是一種線性結(jié)構(gòu)C、線性表的所有結(jié)點(diǎn)有且僅有一個(gè)前件和后件D、線性表可以是空表標(biāo)準(zhǔn)答案:4知識(shí)點(diǎn)解析:線性表是一種線性結(jié)構(gòu),由n(n≥0)個(gè)元素組成,所以線性表可以是空表。但是在線性表中,第一個(gè)結(jié)點(diǎn)沒有前件,最后一個(gè)結(jié)點(diǎn)沒有后件,其他結(jié)點(diǎn)有且只有一個(gè)前件和后件,所以C是錯(cuò)誤的。4、按照“先進(jìn)先出”組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是()。A、隊(duì)列B、棧C、雙向鏈表D、二叉樹標(biāo)準(zhǔn)答案:1知識(shí)點(diǎn)解析:隊(duì)列是一種特殊的線性表,只允許在表的一端插入元素,在表的另一端刪除元素,插入元素的一端叫“隊(duì)尾”,刪除元素的一端叫“隊(duì)頭”,先插入的元素先被刪除,是按“先進(jìn)先出”的原則組織數(shù)據(jù)的。5、下列關(guān)于線性鏈表的描述中正確的是()。A、存儲(chǔ)空間不一定連續(xù),且各元素的存儲(chǔ)順序是任意的B、存儲(chǔ)空間不一定連續(xù),且前件元素一定存儲(chǔ)在后件元素的前面C、存儲(chǔ)空間必須連續(xù),且各前件元素一定存儲(chǔ)在后件元素的前面D、存儲(chǔ)空間必須連續(xù),且各元素的存儲(chǔ)順序是任意的標(biāo)準(zhǔn)答案:1知識(shí)點(diǎn)解析:線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)中的結(jié)點(diǎn)空間是動(dòng)態(tài)生成的,它們?cè)趦?nèi)存中的地址可能是連續(xù)的,也可能是不連續(xù)的。6、某二叉樹共有60個(gè)葉子結(jié)點(diǎn)與50個(gè)度為1的結(jié)點(diǎn),則該二叉樹中的總結(jié)點(diǎn)數(shù)為()。A、148B、169C、182D、198標(biāo)準(zhǔn)答案:2知識(shí)點(diǎn)解析:葉子結(jié)點(diǎn)總是比度為2的結(jié)點(diǎn)多一個(gè)。所以,具有60個(gè)葉子結(jié)點(diǎn)的二叉樹有59個(gè)度為2的結(jié)點(diǎn)??偨Y(jié)點(diǎn)數(shù)=60個(gè)葉子結(jié)點(diǎn)+59個(gè)度為2的結(jié)點(diǎn)+50個(gè)度為1的結(jié)點(diǎn)=169個(gè)結(jié)點(diǎn)。7、下列數(shù)據(jù)結(jié)構(gòu)中,能用二分法進(jìn)行查找的是()。A、順序存儲(chǔ)的有序線性表B、結(jié)性鏈表C、二叉鏈表D、有序線性鏈表標(biāo)準(zhǔn)答案:1知識(shí)點(diǎn)解析:二分法查找只適用于順序存儲(chǔ)的有序線性表,對(duì)于順序存儲(chǔ)的非有序線性表和線性鏈表。都只能采用順序查找。8、簡(jiǎn)單的交換排序方法是()。A、快速排序B、選擇排序C、堆排序D、冒泡排序標(biāo)準(zhǔn)答案:8知識(shí)點(diǎn)解析:所謂的交換類排序方法是指借助數(shù)據(jù)元素之間的互相交換進(jìn)行排序的一種方法,包括冒泡排序和快速排序,冒泡排序是一種最簡(jiǎn)單的交換排序方法,它通過(guò)相鄰元素的交換,逐步將線性表變成有序。9、對(duì)于長(zhǎng)度為n的線性表,在最壞情況下,下列各種排序法所對(duì)應(yīng)的比較次數(shù)中正確的是()。A、冒泡排序?yàn)閚/2B、冒泡排序?yàn)閚C、快速排序?yàn)閚D、快速排序?yàn)閚(n-1)/2標(biāo)準(zhǔn)答案:8知識(shí)點(diǎn)解析:在最壞情況下,冒泡排序和快速排序的比較次數(shù)都是n(n-1)/2。所謂冒泡排序,就是將相鄰的兩個(gè)數(shù)據(jù)相比較,如前面的數(shù)據(jù)大于后面的,則位置互換。這樣不停地比較、互換,其實(shí)就是把大的數(shù)往后排,小的數(shù)往前排(就像冒泡一樣冒出來(lái)了)。10、結(jié)構(gòu)化程序設(shè)計(jì)的3種基本結(jié)構(gòu)是()。A、過(guò)程、子程序和分程序B、順序、選擇和重復(fù)C、遞歸、堆棧和隊(duì)列D、調(diào)用、返回和轉(zhuǎn)移標(biāo)準(zhǔn)答案:2知識(shí)點(diǎn)解析:程序的3種基本控制結(jié)構(gòu)包括順序、選擇和重復(fù)(循環(huán)),這3種結(jié)構(gòu)就足以表達(dá)出各種其他形式的結(jié)構(gòu)。二、選擇題(1分)(本題共10題,每題1.0分,共10分。)11、C語(yǔ)言可執(zhí)行程序的開始執(zhí)行點(diǎn)是()。A、包含文件中的第一個(gè)函數(shù)B、程序中第一個(gè)函數(shù)C、程序中的main()函數(shù)D、程序中第一條語(yǔ)句標(biāo)準(zhǔn)答案:4知識(shí)點(diǎn)解析:每個(gè)C程序有且只有一個(gè)主函數(shù)main(),且程序必須從main函數(shù)開始執(zhí)行,并在main()函數(shù)中結(jié)束。12、可以在C語(yǔ)言程序中用做用戶標(biāo)識(shí)符的一組標(biāo)識(shí)符是()。A、void123BBNB、aaabccasC、as+b3-123IfD、6fDoSIG標(biāo)準(zhǔn)答案:2知識(shí)點(diǎn)解析:C語(yǔ)言規(guī)定,標(biāo)識(shí)符是由字母、數(shù)字或下畫線組成,并且它的第一個(gè)字符必須是字母或者下畫線。13、下列正確的實(shí)型常量是()。A、E3.4B、-12345C、2.2e0.8D、4標(biāo)準(zhǔn)答案:2知識(shí)點(diǎn)解析:實(shí)型常量有兩種書寫形式。①小數(shù)形式,它由符號(hào)、整數(shù)部分、小數(shù)點(diǎn)及小數(shù)部分組成;②指數(shù)形式,由十進(jìn)制小數(shù)形式加上指數(shù)部分組成,其形式為:十進(jìn)制小數(shù)e指數(shù)或十進(jìn)制小數(shù)E指數(shù)。注:e或E后面的指數(shù)必須是整數(shù),并且在e或E的前面必須有數(shù)字。本題中,選項(xiàng)A)中E的前面沒有數(shù)字,因此錯(cuò)誤。選項(xiàng)C)中0.8不是整數(shù),因此錯(cuò)誤。選項(xiàng)D)中4是整型常量而不是實(shí)型常量。14、下列表達(dá)式中,可以正確表示x≤0或x)1的關(guān)系是()。A、(x>=1)||(x<=0)B、x>l||x=0C、x>=1ORx<=0D、x>=1&&x<=0標(biāo)準(zhǔn)答案:1知識(shí)點(diǎn)解析:題中要求x的取值是小于等于0或者大于等于1,這說(shuō)明表達(dá)式是或的關(guān)系,所以在寫成C語(yǔ)言表達(dá)式應(yīng)是邏輯或的關(guān)系,邏輯或運(yùn)算符是“||”。15、若有定義inta=5,b=7;,則表達(dá)式a%=(b%2)運(yùn)算后,a的值為()。A、0B、1C、11D、3標(biāo)準(zhǔn)答案:1知識(shí)點(diǎn)解析:本題考查“%”運(yùn)算符的使用。運(yùn)算符“%”要求兩個(gè)運(yùn)算對(duì)象都為整型,其結(jié)果是整數(shù)除法的余數(shù)。本題中表達(dá)式a%=(b%2)等價(jià)于a=a%(b%2)=5%(7%2)=5%1=0。16、已知i、j、k為int型變量,若要從鍵盤輸入2、3、4<CR>,使i、j、k的值分別為2、3、4下列正確的輸入語(yǔ)句是()。A、scanf(“%3d,%3d,%3d”,&i,&j,&k);B、scanf(“%d,%d,%d”,&i,&j,&k);C、scanf(“%d%do/od”,&i,&j,&k);D、scaaf(“i=%d,j=%d,k=%d”,&i,&j,&k);標(biāo)準(zhǔn)答案:2知識(shí)點(diǎn)解析:函數(shù)scanf()的調(diào)用形式是:scanf(格式字符串,輸入項(xiàng)地址表)。其中,“格式字符串”是要輸入的變量的格式符;“輸入項(xiàng)地址表”是要輸入的變量的地址。若在格式符中插入了其他字符,則在輸入時(shí)要求按一一對(duì)應(yīng)的位置原樣輸入這些字符,其中的逗號(hào)也必須輸入。17、下列程序的輸出結(jié)果是()。main(){intp[8]={11,12,13,14,15,16,17,18},i=0,j=0;while(i++<7)if(p[i]%2)j+=p[i];printf("%d\n",j);}A、42B、45C、56D、60標(biāo)準(zhǔn)答案:2知識(shí)點(diǎn)解析:在C語(yǔ)言中,數(shù)組的下標(biāo)默認(rèn)為0,因此數(shù)組p的下標(biāo)范圍為:0~7。程序循環(huán)過(guò)程為:第1次循環(huán)i=0,執(zhí)行循環(huán),并且i自加,得i=1,因此p[i]為p[1]=12,12%2=0,不執(zhí)行后面的語(yǔ)句;接著進(jìn)行第2次循環(huán),此時(shí)i=1,小于7執(zhí)行循環(huán),并且i自加,得i=2,因此p[i]為p[2]=13,13%2=1,執(zhí)行后面的語(yǔ)句;這樣一直到退出循環(huán)。最后j的值為j=13+15+17=45。18、若有下列定義(設(shè)int類型變量占2個(gè)字節(jié)):inti=8,j=9;則下列語(yǔ)句:printf("i=%u,j=%x\n",i,j);輸出的結(jié)果是()。A、i=8,j=9B、8.9C、89D、i=8,j=8標(biāo)準(zhǔn)答案:1知識(shí)點(diǎn)解析:本題考查函數(shù)printf()的格式?!?x”表示以十六進(jìn)制輸出整型數(shù)據(jù);“%u”表示以十進(jìn)制無(wú)符號(hào)型輸出整型數(shù)據(jù)。printf函數(shù)中格式說(shuō)明符之前插入的任何字符都原樣輸出。19、設(shè)有定義:intk=1,m=2;floatf=7;則下列選項(xiàng)中錯(cuò)誤的表達(dá)式是()。A、k=k>=kB、-k++C、k%int(f)D、k>=f>=m標(biāo)準(zhǔn)答案:4知識(shí)點(diǎn)解析:在C語(yǔ)言中,求余運(yùn)算符“%”兩邊的運(yùn)算對(duì)象都應(yīng)為整型數(shù)據(jù),所以需要對(duì)變量f進(jìn)行強(qiáng)制類型轉(zhuǎn)換,正確的寫法為k%(int)f。在C語(yǔ)言中,邏輯運(yùn)算符與賦值運(yùn)算符、算術(shù)運(yùn)算符、關(guān)系運(yùn)算符之間從高到低的運(yùn)算優(yōu)先次序是:!(邏輯“非”)、算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、&&(邏輯“與”)、||(邏輯“或”)、賦值運(yùn)算符。根據(jù)運(yùn)算符的優(yōu)先級(jí)與結(jié)合性,對(duì)于選項(xiàng)A),先計(jì)算k>=k的值(為真,即1),再用1對(duì)k進(jìn)行賦值。對(duì)于選取項(xiàng)B),先計(jì)算k++的值,再對(duì)其取負(fù)數(shù)。對(duì)于選項(xiàng)D),先計(jì)算k>=f的值(為假,即0),再用0與出進(jìn)行比較,故最終結(jié)果為0。20、若執(zhí)行下列程序時(shí)從鍵盤上輸入2,則輸出結(jié)果是()。#include<stdio.h>main(){inta;scanf("%d",&a);if(a++<3)printf("%d\n",a);elseprintf("%d\n",va--);}A、1B、3C、2D、4標(biāo)準(zhǔn)答案:2知識(shí)點(diǎn)解析:本題考查ifelse語(yǔ)句。程序中首先使用函數(shù)scanf()通過(guò)鍵盤讀入a的值,并通過(guò)第1個(gè)if語(yǔ)句,先判斷條件,取a的值2和3比較,然后將a的值加1,發(fā)現(xiàn)條件成立,執(zhí)行下列的printf語(yǔ)句,輸出a的值3。三、選擇題(2分)(本題共20題,每題1.0分,共20分。)21、有下列程序段: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)答案:2知識(shí)點(diǎn)解析:因?yàn)閍<b成立,所以條件表達(dá)式a<b?b:a的值等于b的值等于2,因此變量k的值等于2。又因?yàn)閗=2>c=3不成立,所以條件表達(dá)式k>c?e:k的值等于k的值等于2。把條件表達(dá)式k>c?e:k的值賦給變量k,因而變量k的值等于2。因此,選項(xiàng)B)為正確答案。22、有下列程序:main(){inty=20;do{y--;}while(--y);printf("%d\n",y--);}當(dāng)執(zhí)行程序時(shí),輸出的結(jié)果是()。A、-1B、1C、4D、0標(biāo)準(zhǔn)答案:8知識(shí)點(diǎn)解析:本題考查do…while循環(huán)。當(dāng)-y是0(即y是0)時(shí)結(jié)束循環(huán),輸出y--是先輸出y的值再將y的值減1。23、有下列程序段:structSt{intx;int*y;)*pt;inta[]={1,2),b[]={3,4);structstc[2]={10,a,20,b);pt=c;下列選項(xiàng)中表達(dá)式的值為11的是()。A、*pt->yB、pt->xC、++pt->xD、(pt++)->x標(biāo)準(zhǔn)答案:4知識(shí)點(diǎn)解析:由題目的已知條件可知,pt指向結(jié)構(gòu)體數(shù)組c[2]的第一元素c[0],所以pt->x=10,執(zhí)行自加運(yùn)算后為11。24、表達(dá)式’8’-’2’的值是()。A、整數(shù)6B、字符6C、表達(dá)式不合法D、字符8標(biāo)準(zhǔn)答案:1知識(shí)點(diǎn)解析:在C語(yǔ)言中,雖然字符都是變?yōu)槠鋵?duì)應(yīng)的ASCII碼值來(lái)參與算術(shù)運(yùn)算的,但字符間的相對(duì)位置關(guān)系還是不變的,字符8和字符2的ASCII碼值相差仍是6。25、在嵌套使用if語(yǔ)句時(shí),C語(yǔ)言規(guī)定else總是()。A、和之前與其具有相同縮進(jìn)位置的if配對(duì)B、和之前與其最近的if配對(duì)C、和之前與其最近的且不帶else的if配對(duì)D、和之前的第一個(gè)if配對(duì)標(biāo)準(zhǔn)答案:4知識(shí)點(diǎn)解析:C語(yǔ)言的語(yǔ)法規(guī)定:else子句總是與前面最近的不帶else的if相結(jié)合,與書寫格式無(wú)關(guān)。所以選項(xiàng)C)為正確答案。26、下列函數(shù)值的類型是()。fun(doublex){floaty;y=3*x-4;returny;}A、intB、不確定C、voidD、float標(biāo)準(zhǔn)答案:1知識(shí)點(diǎn)解析:本題考查默認(rèn)函數(shù)的函數(shù)值的類型。在函數(shù)調(diào)用時(shí),盡管y的類型是float,x的類型是double,但是因?yàn)楹瘮?shù)定義時(shí)省去類型說(shuō)明,系統(tǒng)默認(rèn)函數(shù)值的類型為int型,所以計(jì)算后的y的類型是int型。27、有下列程序:main(){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、235B、235C、2356D、2356標(biāo)準(zhǔn)答案:2知識(shí)點(diǎn)解析:因?yàn)樽兞康某跏贾捣謩e為k=5,n=0,所以程序第1次進(jìn)入循環(huán)時(shí),執(zhí)行default語(yǔ)句,輸出0,k減1;這時(shí)n=0,k=4,程序進(jìn)行第2次循環(huán),執(zhí)行case4:這個(gè)分支,結(jié)果是n=2,k=3,打印出2;這時(shí)n=2,k=3,程序進(jìn)行第3次循環(huán),執(zhí)行case3:這個(gè)分支,結(jié)果是n=3,k=2,打印出3;這時(shí)n=3,k=2,程序然后進(jìn)行第4次循環(huán),執(zhí)行case2:case4:這個(gè)分支,結(jié)果是n=5,k=1,打印出5,這時(shí)因?yàn)閚=5不滿足n<5的循環(huán)條件,因此退出循環(huán),程序運(yùn)行結(jié)束。所以在屏幕上打印出的結(jié)果是0235。28、下列程序執(zhí)行輸出的結(jié)果是()。#include<stdio.h>f(inta){intb=0;staticc=3;a=c++;b++;return(a);}main(){inta=2,i,k;for(i=0;i<2;i++)k=f(a++);printf("%d\n",k);}A、3B、4C、5D、6標(biāo)準(zhǔn)答案:2知識(shí)點(diǎn)解析:本題考查函數(shù)調(diào)用時(shí)的參數(shù)傳遞。在函數(shù)調(diào)用時(shí),static變量在函數(shù)調(diào)用結(jié)束后所做的所有變化均保持(即上次調(diào)用結(jié)束時(shí)的值)。在主函數(shù)中,第一次循環(huán),i=0,調(diào)用k=f(a++)=f(2),調(diào)用完之后才將a加1,a變?yōu)?,在f(2)中,先將c=3賦值給a返回,然后將c加1,得到k=a=3,c=4。第二次循環(huán),i=1,調(diào)用k=f(a++)=f(3),調(diào)用完之后才將a加1,a變?yōu)?,在f(3)中,先將c=4賦值給a返回,然后將c加1,得到k=a=4,c=5。29、設(shè)有下列的程序段:charstr[]="HelloWorld";char*ptr;ptr==str;執(zhí)行上面的程序段后,*(ptr+10)的值為()。A、’\0’B、’0’C、不確定的值D、’0’的地址標(biāo)準(zhǔn)答案:1知識(shí)點(diǎn)解析:本題涉及字符數(shù)組和指針兩個(gè)知識(shí)點(diǎn):①在C語(yǔ)言中,字符型數(shù)組在存放字符串時(shí)會(huì)自動(dòng)在末尾加上’\0’,所以題中數(shù)組str有11個(gè)元素;②ptr指向數(shù)組str的首地址,ptr+10是指向str[10],*(ptr+10)是引用str[10]的值。30、分析下列程序:#include<stdio.h>main(){int*p1,*p2,*p;inta=6,b=9;p1=&a;p2=&b;if(a<b){p=p1;p1=p2;p2=p;}printf("%d,%d",*p1,*p2);printf("%d,%d",a,b);}程序的輸出結(jié)果為()。A、9,66,9B、6,99,6C、6,96,9D、9,69,6標(biāo)準(zhǔn)答案:1知識(shí)點(diǎn)解析:通過(guò)p1=&a,p2=&b分別將a、b的地址賦給指針p1、p2,接著執(zhí)行if語(yǔ)句,發(fā)現(xiàn)a<b成立,則通過(guò)交換p1、p2的值,即交換a、b所在存儲(chǔ)單元的地址,但是a、b的值并沒有發(fā)生變化。31、若有定義inta[10],*p=a,則p+6表示()。A、數(shù)組元素a[5]的值B、數(shù)組元素a[5]的地址C、數(shù)組元素a[6]的地址D、數(shù)組元素a[0]的值加上5標(biāo)準(zhǔn)答案:4知識(shí)點(diǎn)解析:指針中存放的是變量的地址,指針也可以進(jìn)行加減運(yùn)算,這時(shí)指針移動(dòng)的最小單位是一個(gè)存儲(chǔ)單元,而不是一個(gè)字節(jié)。所以題中p+6指的是將指針向后移動(dòng)了6個(gè)存儲(chǔ)單元,指向a[6],存放的是a[6]的地址。32、下列說(shuō)法正確的是()。A、在C語(yǔ)言中,可以使用動(dòng)態(tài)內(nèi)存分配技術(shù),定義元素個(gè)數(shù)可變的數(shù)組B、在C語(yǔ)言中,數(shù)組元素的個(gè)數(shù)可以不確定,允許隨機(jī)變動(dòng)C、在C語(yǔ)言中,數(shù)組元素的數(shù)據(jù)類型可以不一致D、在C語(yǔ)言中,定義了一個(gè)數(shù)組后,就確定了它所容納的元素的個(gè)數(shù)標(biāo)準(zhǔn)答案:8知識(shí)點(diǎn)解析:本題考查數(shù)組的兩個(gè)知識(shí)點(diǎn):①在C語(yǔ)言中,數(shù)組元素的個(gè)數(shù)是確定的,不允許隨機(jī)變動(dòng),數(shù)組定義好之后,它所能容納的元素的個(gè)數(shù)也就確定了;②同一個(gè)數(shù)組中所有元素的類型是一樣的。33、下列的程序用來(lái)輸出兩個(gè)字符串前7個(gè)字符中對(duì)應(yīng)相等的字符及其位置號(hào),程序空白處應(yīng)該填寫的是()。#include<stdio.h>main(){chars1[]="chinese",s2[]="japnese";inti;for(i=0;s1[i]!=’\0’&&s2[i]!=’\0’;i++)if(s1[i]==s2[i]&&i<7)__________________;}A、putchar(s2[i]);putchar(i)B、puts(s1[i],i)C、printf("%c%d\n",s2[i],i)D、printf("%c",s1[i]);printf("%d\n",i)標(biāo)準(zhǔn)答案:4知識(shí)點(diǎn)解析:putchar(s)的功能是把字符s輸出到標(biāo)準(zhǔn)輸出設(shè)備;puts(s1)是把s1指向的字符串輸出到標(biāo)準(zhǔn)輸出設(shè)備。34、若已包括頭文件<stdio.h>和<string.h>,運(yùn)行下列程序段時(shí)輸出結(jié)果是()。inti=0;chars1[10]="ABCD",s2[10]="EFG";strcat(s1,s2);while(s2[i++]!=’\0’)s2[i]=s1[i];puts(s2);A、ABCB、ABCDEFC、EBCDEFGD、CBD標(biāo)準(zhǔn)答案:4知識(shí)點(diǎn)解析:strcat(s1,s2)把s2連接到s1的后面,s1=ABCDEFG,執(zhí)行while(s2[i++]!=’\0’)后i的值變?yōu)?,往后執(zhí)行s2[i]=s1[i]時(shí)是從把s1的第二位給s2的第二位開始,把s1賦給s2。35、下列程序的運(yùn)行結(jié)果是()。#include<stdio.h>main(){staticchara[]="Languagef",b[]="programe";char*p1,*p2;intk;p1=a;p2=b;for(k=0;k<=8;k++)if(*(p1+k)==*(p2+k))printf("%c",*(p1+k));}A、gaeB、angC、programD、有語(yǔ)

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論