




版權(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ǔ)言)機(jī)試模擬試卷23(共9套)(共382題)國(guó)家二級(jí)(C語(yǔ)言)機(jī)試模擬試卷第1套一、選擇題(本題共39題,每題1.0分,共39分。)1、設(shè)有定義:inta=1,b=2,C=3;,以下語(yǔ)句中執(zhí)行效果與其他三個(gè)不同的是()。A、if(a>b)c=a,a=b,b=c;B、if(a>b){c=a,a=b,b=c}C、if(a>b)c=a;a=b;bc;D、if(a>b){c=a;a=b.b=c}標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:C語(yǔ)言中if語(yǔ)句后面只跟一條語(yǔ)句時(shí),可以省略大括號(hào)。即if語(yǔ)句僅作用于緊隨其后的那條語(yǔ)句或者是復(fù)合語(yǔ)句的內(nèi)容,所以A項(xiàng)執(zhí)行三條語(yǔ)句組成的復(fù)合語(yǔ)句;BD兩項(xiàng)執(zhí)行大括號(hào)中的三條語(yǔ)句;而C項(xiàng)只執(zhí)行c=a;。2、若變量都已正確說(shuō)明,則以下程序段輸出結(jié)果為()。#include<stdio.h>main(){chara=’a’;intb=2;printf(a>b?’’***a=%d’’:’’###b=%d’’,a,b);}A、***a=3B、###b=3C、***a=3###b=5D、全部錯(cuò)誤標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查printf函數(shù)的格式和三目運(yùn)算符“?:”的使用。printf函數(shù)中格式說(shuō)明符之前插入的任何字符都原樣輸出。本題中“a>b”為真,所以返回“***a=97”。3、設(shè)x和y都是int類(lèi)型,且x=1,y=2,則printf("%d%d",x,y,(x,y))的輸出結(jié)果是()。A、12B、122C、1,2D、輸出值不確定標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題考查printf函數(shù)的格式和逗號(hào)表達(dá)式。printf函數(shù)在輸出時(shí),是根據(jù)格式說(shuō)明符的個(gè)數(shù)輸出的,如果函數(shù)中有多余的項(xiàng)將不予輸出;如果有輸出項(xiàng)少于格式說(shuō)明符,則出錯(cuò),不能輸出正確的結(jié)果。本題中逗號(hào)表達(dá)式(x,y)只返回y的值。此時(shí)格式說(shuō)明的個(gè)數(shù)是2,而輸出項(xiàng)的個(gè)數(shù)是3,因此printf函數(shù)只輸出前兩項(xiàng)。4、設(shè)有定義:chars[81];inti=0;,以下不能將一行(不超過(guò)80個(gè)字符)帶有空格的字符串正確讀入的語(yǔ)句或語(yǔ)句組是()。A、gets(s);B、while((s[i++]=getchar())!=’\n’);s[i]=‘\0’;C、seanf(“%s”,s);D、d0{seanf(“%c”,&s[i]);}while(s[i++]!=‘\n’);s[i]=‘\0’;標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:字符串的輸入不能使用scanf(“%s”,s);而應(yīng)該使用gets(s)。5、以下敘述錯(cuò)誤的是()。A、C語(yǔ)言區(qū)分大小寫(xiě)B(tài)、C程序中的一個(gè)變量,代表內(nèi)存中一個(gè)相應(yīng)的存儲(chǔ)單元,變量的值可以根據(jù)需要隨時(shí)修改C、整數(shù)和實(shí)數(shù)都能用C語(yǔ)言準(zhǔn)確無(wú)誤地表示出來(lái)D、在C程序中,正整數(shù)可以用十進(jìn)制、八進(jìn)制和十六進(jìn)制的形式來(lái)表示標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:本題涉及C語(yǔ)言最基本的3個(gè)概念:①C語(yǔ)言是區(qū)分大小寫(xiě)的,q和Q是兩個(gè)不同的變量;②變量的實(shí)質(zhì)就是在內(nèi)存中占據(jù)一定的存儲(chǔ)單元,存儲(chǔ)單元里存放的是該變量的值,變量的值可以根據(jù)需要進(jìn)行修改;③整數(shù)在允許的范圍內(nèi)可以準(zhǔn)確的表示出來(lái),但不可能表示無(wú)限度的實(shí)數(shù)。正整數(shù)可用二進(jìn)制、十進(jìn)制、八進(jìn)制和十六進(jìn)制表示。6、按照C語(yǔ)言規(guī)定的用戶標(biāo)識(shí)符命名規(guī)則,不能出現(xiàn)在標(biāo)識(shí)符中的是()。A、大寫(xiě)字母B、下劃線C、數(shù)字字符D、連接符標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:C語(yǔ)言中標(biāo)識(shí)符由字母、下劃線、數(shù)字組成,且開(kāi)頭必須是字母或下劃線。所以D選項(xiàng)中的連接符不合法。7、有以下程序段#includemain(){inta,b,c;a=10;b=50;c=30;if(a>b)a=b,b=c;c=a;printf("a-=%db=%dc=%d\n",a,b,c);}程序的輸出結(jié)果是()。A、a=10b=50c=30B、a=10b=50c=10C、a=10b=30c=10D、a=50b=30c=50標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:C語(yǔ)言中使用分號(hào)來(lái)作為語(yǔ)句的結(jié)束,所以a=b,b=c;是一條含有逗號(hào)運(yùn)算符語(yǔ)句。if條件不滿足,直接執(zhí)行c=a。8、在軟件設(shè)計(jì)中不使用的工具是()。A、系統(tǒng)結(jié)構(gòu)圖B、PAD一圖C、數(shù)據(jù)流圖(DFD圖)D、程序流程圖標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:系統(tǒng)結(jié)構(gòu)圖是對(duì)軟件系統(tǒng)結(jié)構(gòu)的總體設(shè)計(jì)的圖形顯示。在需求分析階段,已經(jīng)從系統(tǒng)開(kāi)發(fā)的角度出發(fā),把系統(tǒng)按功能逐次分割成層次結(jié)構(gòu),是在概要設(shè)計(jì)階段用到的。PAD圖是在詳細(xì)設(shè)計(jì)階段用到的。程序流程圖是對(duì)程序流程的圖形表示,在詳細(xì)設(shè)計(jì)過(guò)程中用到。數(shù)據(jù)流圖是結(jié)構(gòu)化分析方法中使用的工具,它以圖形的方式描繪數(shù)據(jù)在系統(tǒng)中流動(dòng)和處理的過(guò)程,由于它只反映系統(tǒng)必須完成的邏輯功能,所以它是一種功能模型,是在可行性研究階段用到的而非軟件設(shè)計(jì)時(shí)用到,所以選擇C。9、有以下程序:#inelude<stdio.h>#definePT3.5;#defineS(x)PT*x*x;mai.(){inta=1,b=2;printf("%4.1f\n",S(a+b));}程序運(yùn)行后的輸出結(jié)果是()。A、7.5B、31.5C、程序有錯(cuò)無(wú)輸出結(jié)果D、14.0標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:宏定義不是C語(yǔ)句,末尾不需要有分號(hào)。所以語(yǔ)句printf("%4.1f\n",S(a+b));展開(kāi)后為printf("%4.1f、n",3.5;*a+b*a+b;);所以程序會(huì)出現(xiàn)語(yǔ)法錯(cuò)誤。10、以下數(shù)據(jù)結(jié)構(gòu)中,屬于非線性數(shù)據(jù)結(jié)構(gòu)的是()。A、棧B、線性表C、隊(duì)列D、二叉樹(shù)標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:二叉樹(shù)屬于非線性結(jié)構(gòu)。棧是一種特殊的線性表,這種線性表只能在固定的一端進(jìn)行插入和刪除操作;隊(duì)列可看作是插入在一端進(jìn)行,刪除在另一端進(jìn)行的線性表。11、下列工具中,小屬于結(jié)構(gòu)化分析的常用二L具的是()。A、數(shù)據(jù)流圖B、數(shù)據(jù)字典C、判定樹(shù)D、N—S圖標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:結(jié)構(gòu)化分析的常用工具有數(shù)據(jù)流圖、數(shù)據(jù)字典、判定樹(shù)和判定表。12、下面描述中,不屬于軟件危機(jī)表現(xiàn)的是()。A、軟件過(guò)程不規(guī)范B、軟件開(kāi)發(fā)生產(chǎn)率低C、軟件質(zhì)量難以控制D、軟件成本不斷提高標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:軟件危機(jī)主要表現(xiàn)在:軟件需求的增長(zhǎng)得不到滿足;軟件開(kāi)發(fā)成本和進(jìn)度無(wú)法控制;軟件質(zhì)量難以保證;軟件不可維護(hù)或維護(hù)程度非常低;軟件的成本不斷提高;軟件開(kāi)發(fā)生產(chǎn)率的提高趕不上硬件的發(fā)展和應(yīng)用需求的增長(zhǎng)。所以選擇A。13、有兩個(gè)關(guān)系R、S如下:由關(guān)系R通過(guò)運(yùn)算得到關(guān)系S,則所使用的運(yùn)算為()。A、選擇B、投影C、插AD、連接標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:投影運(yùn)算是指對(duì)于關(guān)系內(nèi)的域指定可引入新的運(yùn)算。本題中S是在原有關(guān)系R的內(nèi)部進(jìn)行的,是由R中原有的耶些域的列所組成的關(guān)系。所以選擇B。14、關(guān)于C語(yǔ)言標(biāo)識(shí)符,以下敘述中錯(cuò)誤的是()。A、標(biāo)識(shí)符可全部由數(shù)字組成B、標(biāo)識(shí)符可全部由下畫(huà)線組成C、標(biāo)識(shí)符可全部由小寫(xiě)字母組成D、標(biāo)識(shí)符可全部由大寫(xiě)字母組成標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:C語(yǔ)言標(biāo)識(shí)符只能由字母、數(shù)字、下畫(huà)線構(gòu)成,且只能以字母、下畫(huà)線開(kāi)頭,故選項(xiàng)A不正確。15、有以下程序#include<stdio.h>voidmain(){intn=2,k=1;while(!(k>0||n++));printf(’’%d%d\n’’,k,n);}程序運(yùn)行后的輸出結(jié)果是()。A、02B、13C、57D、12標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:在程序中整型變量n的初始值等于2,整型變量k的初始值等于1,在執(zhí)行while語(yǔ)句時(shí),由于表達(dá)式k的值大于0為真,所以不再需要判斷“n++’是否為真,“(k>0‖n++)”表達(dá)式的值為真?!?(k>0‖n++)”表達(dá)式的值為假,所以while語(yǔ)句中的條件不滿足,循環(huán)語(yǔ)句不會(huì)執(zhí)行,變量n的值也不會(huì)加1,所在輸出變量k和n的值是1和2。16、以下敘述中正確的是()。A、charc1,c2,*c3,c4[40];是合法的變量定義語(yǔ)句B、數(shù)組下標(biāo)的下限由數(shù)組中第一個(gè)非零元素的位置決定C、數(shù)組下標(biāo)的下限由數(shù)組中第一個(gè)被賦值元素的位置決定D、數(shù)組下標(biāo)的下限是1標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:A)正確,charc1,c2,*c3,c4[40]表示定義了兩個(gè)字符變量c1、c2,一個(gè)字符指針c3,一個(gè)字符數(shù)組c4。數(shù)組的下限永遠(yuǎn)為0,選項(xiàng)B)、C)、D)錯(cuò),答案選A)。17、有以下程序段:structst{intx;int*y;}*pt;inta[]={1,2},b[]={3,4};struetstc[2]={10,a,20,b};pt=c;以下選項(xiàng)中表達(dá)式的值為11的是()。A、++pt->xB、pt->xC、*pt->yD、(pt++)->X標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題考查結(jié)構(gòu)體數(shù)組初始化以及結(jié)構(gòu)體變量的引用,題目中定義了一個(gè)結(jié)構(gòu)體數(shù)組c并初始化,指針pt指向c的第一個(gè)元素,那么pt->x為10,++pt->x為11,*pt->y為1,(pt++)->x為20,所以答案為A。18、有以下程序段int*p;p=__________malloc(sizeof(int));若要求使p指向一個(gè)int型的動(dòng)態(tài)存儲(chǔ)單元,在橫線處應(yīng)填入的是()。A、(int*)B、intC、int*D、(*int)標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:語(yǔ)句"malloc(sizeof(int))"為動(dòng)態(tài)分配了一塊內(nèi)存,因?yàn)閜為int型指針,所以需要使用強(qiáng)制轉(zhuǎn)換將該內(nèi)存地址轉(zhuǎn)換成int*類(lèi)型后再指給p,填入的內(nèi)容為(int*),答案選A)。19、下列敘述中正確的是()。A、線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)與順序存儲(chǔ)結(jié)構(gòu)所需要的存儲(chǔ)空間是相同的B、線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)所需要的存儲(chǔ)空間一般要多于順序存儲(chǔ)結(jié)構(gòu)C、線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)所需要的存儲(chǔ)空間一般要少于順序存儲(chǔ)結(jié)構(gòu)D、線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)與順序存儲(chǔ)結(jié)構(gòu)在存儲(chǔ)空間的需求上沒(méi)有可比性標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:線性鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)中每個(gè)結(jié)點(diǎn)都由數(shù)據(jù)域與指針域兩部分組成,增加了存儲(chǔ)空間,所以一般要多于順序存儲(chǔ)結(jié)構(gòu)。20、設(shè)有定義#include<stdio.h>#include<stdlib.h>typedefstruet{intx,y;}T;typedefstruet{intx,y;}*USER;USERfun(){USERp;p=(USER)malloc(sizeof(T));p->x=1:p->y=2:returnp;}函數(shù)fun返回值的類(lèi)型是()。A、T類(lèi)型的結(jié)構(gòu)體B、指向結(jié)構(gòu)體類(lèi)型的指針C、int類(lèi)型的元素D、int類(lèi)型的指針標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:由題意可知:使用typeclef將類(lèi)型:struet{intx,y;}*重命名為usER,所以函數(shù)fun的返回類(lèi)型為struct{intx,y;}*,即指向結(jié)構(gòu)體類(lèi)型的指針,本題答案為B。21、下列選項(xiàng)中不屬于結(jié)構(gòu)化程序設(shè)計(jì)原則的是()。A、可封裝B、自頂向下C、模塊化D、逐步求精標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:結(jié)構(gòu)化程序設(shè)計(jì)的基本原則包括:①模塊化;②自頂向下;③逐步求精;④限制使用goto語(yǔ)句??煞庋b是面向?qū)ο蟮脑O(shè)計(jì)思想。22、有以下程序#definer(X,Y)(X)*(Y)main(){inta=3,b=4;printf("%dLn",F(xiàn)(a++,b++));}程序運(yùn)行后的輸出結(jié)果是()。A、12B、15C、16D、20標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:此題考查的是編譯預(yù)處理命令以及自加運(yùn)算符。F(a++,b++)先取a和b的值,、參加運(yùn)算,再把a(bǔ)和b的值分別加1,所以F(a++,b++)=F(3,4)=3*4=12。23、閱讀下面程序,程序執(zhí)行后的結(jié)果為()。#include"stdioh"main(){char*str="abcdefghijklmnopq";while(*str++!=’e’);printf("%c\n",*str);}A、fB、aC、eD、q標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題考查的是取內(nèi)容運(yùn)算符“·”和自加運(yùn)算符“++”的優(yōu)先級(jí)問(wèn)題。由于“++”的優(yōu)先級(jí)高于“*”,所以題干中*str++!=’e’,即*(str++)!=’e’,當(dāng)str指向字符’e’時(shí),while循環(huán)的條件不成立,但str已經(jīng)進(jìn)行了自加指向了字符’f’,所以*six輸出字符’f’。24、當(dāng)變量c的值不為2、4、6時(shí),值也為”真”的表達(dá)式是()。A、(c>=2&&c<=6)&&(c%21=1)B、(c:=2)||(c==4)||(c==6)C、(c>=2&&c<=6)&&!(c%2)D、(c>=2&&c<=6)||(c!=3)||(c!=5)標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:邏輯或運(yùn)算符中只要有一個(gè)運(yùn)算量為真結(jié)果就是真,當(dāng)c>=2&&c<=6條件不成立時(shí)c的值肯定不是2、3、4、5、6,所以c!=3,與c!=5均成立。所以D選項(xiàng)的結(jié)果一定為真。25、有以下程序:#includemain(){intx;scanf("%d",&x);if(x<=0);elseif(x!=5)printf("%d\n",x);}程序運(yùn)行時(shí),輸入的值在哪個(gè)范圍才會(huì)有輸出結(jié)果()。A、不等于5的整數(shù)B、大于0且不等5的整數(shù)C、大于0或等于5的整數(shù)D、小于5的整數(shù)標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:題目中,雖然else和第二個(gè)if不在同一行上,但等價(jià)于在同一行上,因此,程序的意思是當(dāng)x大于0且不等于5時(shí)將其打印出來(lái)。26、有以下程序:#include<stdio.h>Structord{intx,y;}dt[2]=;{1,2,3,4};main(){structord*p=dt:printf("%d,",++(p->x));printf("%d\n",++(p->y));程序運(yùn)行后的輸出結(jié)果是()。A、3,4B、4,1C、2,3D、1.2標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:本題考查結(jié)構(gòu)體數(shù)組的相關(guān)操作,dt為結(jié)構(gòu)體數(shù)組,那么指針p指向了結(jié)構(gòu)體數(shù)組的一個(gè)元素,所以p->x為1,p->y為2,結(jié)果為2,3選項(xiàng)C正確。27、以下敘述中錯(cuò)誤的是()。A、可以給指針變量賦一個(gè)整數(shù)作為地址值B、函數(shù)可以返回地址值C、改變函數(shù)形參的值,不會(huì)改變對(duì)應(yīng)實(shí)參的值D、當(dāng)在程序的開(kāi)頭包含頭文件stdio.h時(shí),可以給指針變量賦NULL標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:不能將一個(gè)整數(shù)直接賦給指針變量作為地址,所以A選項(xiàng)是錯(cuò)誤的。函數(shù)的返回值可以是地址,即指針。函數(shù)調(diào)用中形參值的變化不會(huì)傳遞給實(shí)參。28、有以下程序:#include#defineN4voidfun(inta[][N],intb[]){inti;for(i=0;i<N;i++)b[i]=a[i][i];}voidmain(){intx[][N]={{1,2,3},{4,3},{5,6,7,8},{9,10,11}},y[N],i;fun(x,y);for(i=0;i<N;i++)printf(’’%d,’’,y[i]);printf(’’\n’’);}程序運(yùn)行后的輸出結(jié)果是()。A、1,3,5,9,B、1,2,3,4,C、1,3,7,0,D、3,4,8,10標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:子函數(shù)的功能是將一個(gè)4*4的二維矩陣的對(duì)角線上的元素賦給另外一個(gè)有4個(gè)元素的一維數(shù)組。在主函數(shù)中定義數(shù)組時(shí),沒(méi)有指定元素默認(rèn)為零,因此,主函數(shù)中的數(shù)組x[4][4]={{1,2,3,0},{4,3,0,0},{5,6,7,8},{9,10,11,0},對(duì)角線上的元素為1,3,7,0。29、以下敘述中正確的是A、每個(gè)后綴為.C的C語(yǔ)言源程序都可以單獨(dú)進(jìn)行編譯B、每個(gè)后綴為.C的C語(yǔ)言源程序都應(yīng)該包含一個(gè)main函數(shù)C、在C語(yǔ)言程序中,main函數(shù)必須放在其他函數(shù)的最前面D、在C語(yǔ)言程序中,只有main函數(shù)才可單獨(dú)進(jìn)行編譯標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:一個(gè)普通的C函數(shù)可以單獨(dú)作為一個(gè)C的程序文件存在被包含到其他程序中,每個(gè)后綴為.C的C語(yǔ)言源程序都可以單獨(dú)進(jìn)行編譯,所以B、D錯(cuò)誤。main函數(shù)可以放在程序的開(kāi)始,中間,最后,所以C錯(cuò)誤。30、關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)能實(shí)現(xiàn)的專(zhuān)門(mén)關(guān)系運(yùn)算包括()。A、排序、索引、統(tǒng)計(jì)B、選擇、投影、連接C、關(guān)聯(lián)、更新、排序D、顯示、打印、制表標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)的專(zhuān)門(mén)關(guān)系運(yùn)算包括選擇運(yùn)算、投影運(yùn)算和連接運(yùn)算。31、有以下程序(其中的strstr()函數(shù)頭部格式為:char*strstr(char*p1,char*p2)確定p2字符串是否在p1中出現(xiàn),并返回p2第一次出現(xiàn)的字符串首地址)#include<stdio.h>#include<string.h>char*a="you";char*b="WelcomeyoutoBeijing!";main(){char*p;p=strstr(b,a)+strlen(a)+1;printf("%s\n",p);}程序的運(yùn)行結(jié)果是A、toBeijing!B、youtoBeijing!C、WelcomeyoutoBeijing!D、Beijing!標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:調(diào)用strstr函數(shù),可知a指向的字符串在b指向的字符串中第一次出現(xiàn)的位置,并將此地址賦給指針p。strlen()函數(shù)是求字符串的實(shí)際長(zhǎng)度(不包含結(jié)束標(biāo)志),并且作為函數(shù)值返回。strstr函數(shù)返回的地址下標(biāo)值為9,加上a長(zhǎng)度3,再加1,此時(shí)p指向的地址下標(biāo)值為13,輸出"toBeijing!",A選項(xiàng)正確。32、以下敘述正確的是A、不能在數(shù)組說(shuō)明符的一對(duì)方括號(hào)中使用表達(dá)式B、charc1,*c2,**c3,c4[2];是C語(yǔ)言的合法語(yǔ)句C、數(shù)組下標(biāo)的最小值可以是負(fù)值D、若有數(shù)組定義intarray[5];則語(yǔ)句printf("%d",array[1.23]);是合法的標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:在B選項(xiàng)中,c1是字符型變量,c2是字符型指針變量,c3是指向字符型指針的指針變量,c4[2]是一個(gè)一維字符數(shù)組,這些都是C語(yǔ)言的合法語(yǔ)句,因此答案為B選項(xiàng)。33、有以下程序#include<stdio.h>#include<string.h>structS{charname[10];};main(){structSs1,s2;strcpy(,"XXX");strcpy(,"=");s1=s2;printf("%s\n",);}程序運(yùn)行后的輸出結(jié)果是A、=B、XXXC、#NAME?D、X=標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:主函數(shù)首先為結(jié)構(gòu)體定義兩個(gè)變量s1,s2,分別使用字符串拷貝函數(shù)strcpy()為s1和s2的成員name賦值,再將s2中的成員信息賦值給s1,因此輸出為"=",答案為A選項(xiàng)。34、為了降低算法的空間復(fù)雜度,要求算法盡量采用原地工作(inplace)。所謂原地工作是指A、執(zhí)行算法時(shí)所使用的額外空間固定(即不隨算法所處理的數(shù)據(jù)空間大小的變化而變化)B、執(zhí)行算法時(shí)所使用的額外空間隨算法所處理的數(shù)據(jù)空間大小的變化而變化C、執(zhí)行算法時(shí)不使用額外空間D、執(zhí)行算法時(shí)不使用任何存儲(chǔ)空間標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:算法的空間復(fù)雜度是指執(zhí)行這個(gè)算法所需要的內(nèi)存空間,包括輸入數(shù)據(jù)所占的存儲(chǔ)空間、程序本身所占的存儲(chǔ)空間、算法執(zhí)行過(guò)程中所需要的額外空間。如果額外空間量相對(duì)于問(wèn)題規(guī)模(即輸入數(shù)據(jù)所占的存儲(chǔ)空間)來(lái)說(shuō)是常數(shù),即額外空間量不隨問(wèn)題規(guī)模的變化而變化,則稱(chēng)該算法是原地工作的。故選A選項(xiàng).35、設(shè)有以下程序段floata[8]={1.0,2.0};intb[1]={0};charc[]={"A","B"};chard=="1";以下敘述正確的是A、只有變量c的定義是合法的B、只有變量a,b,c的定義是完全合法的C、所有變量的定義都是完全合法的D、只有變量a,b的定義是完全合法的標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:floata[8]={1.0,2.0};定義了一個(gè)包含8個(gè)float型元素的數(shù)組,并初始化了數(shù)組的前2項(xiàng),其他項(xiàng)是隨機(jī)數(shù)。intb[1]={0},定義了只有一個(gè)int型元素的數(shù)組,并初始化為0。charc[]={"A","B"};定義一個(gè)char型數(shù)組,大小有初始化元素決定,但初始化值是字符串,類(lèi)型不兼容,編譯出錯(cuò)。chard="1";定義一個(gè)char型變量,但是初始化賦值字符串,類(lèi)型不兼容,編譯出錯(cuò)。因此只有a,b定義和初始化正確。故答案為D選項(xiàng)36、下面屬于面向?qū)ο蠓椒ㄖ袑?duì)象基本特點(diǎn)的是A、多態(tài)性B、方法唯一性C、可修改性D、靈活性標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:對(duì)象的基本特點(diǎn)如下:由上表可知,本題選A選項(xiàng).37、設(shè)循環(huán)隊(duì)列的存儲(chǔ)空間為Q(1:50),初始狀態(tài)為front=rear=50?,F(xiàn)經(jīng)過(guò)一系列入隊(duì)與退隊(duì)操作后,front=rear=1,此后又正常地插入了兩個(gè)元素。最后該隊(duì)列中的元素個(gè)數(shù)為A、2B、1C、3D、52標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:循環(huán)隊(duì)列是隊(duì)列的一種順序存儲(chǔ)結(jié)構(gòu),用隊(duì)尾指針rear指向隊(duì)列中的隊(duì)尾元素,用排頭指針指向排頭元素的前一個(gè)位置。循環(huán)隊(duì)列長(zhǎng)度為50,由初始狀態(tài)為front=rear=50可知此時(shí)循環(huán)隊(duì)列為空。入隊(duì)運(yùn)算時(shí),首先隊(duì)尾指針進(jìn)1(即rear+1),然后在rear指針指向的位置插入新元素。特別的,當(dāng)隊(duì)尾指針rear=50+1時(shí),置rear=1。退隊(duì)運(yùn)算時(shí),排頭指針進(jìn)1(即front+1),然后刪除front指針指向的位置上的元素,當(dāng)排頭指針front=50+1時(shí),置front=1。若經(jīng)過(guò)運(yùn)算,front=rear=1可知隊(duì)列空或者隊(duì)列滿。此后又正常地插入了兩個(gè)元素說(shuō)明插入前隊(duì)列為空,則插入后隊(duì)列元素個(gè)數(shù)為2。故選A選項(xiàng)38、以下是while語(yǔ)句的基本形式:while(表達(dá)式){語(yǔ)句;>其中“表達(dá)式”()。A、必須是邏輯表達(dá)式B、必須是關(guān)系表達(dá)式C、必須是邏輯表達(dá)式或關(guān)系表達(dá)式D、可以是任意合法的表達(dá)式標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查while表達(dá)式。while(表達(dá)式)中的表達(dá)式可以為任何合法的表達(dá)式,一般情況下為邏輯、條件表達(dá)式,需要注意的是,當(dāng)?shù)忍?hào)(==)誤寫(xiě)為賦值號(hào)(=)時(shí)不會(huì)報(bào)錯(cuò)的,但是其值恒為1。39、有以下程序:#include<stdio.h>voidfun(inta[],intn){inti.t:for(i=0;i<n/2;i++){t=a[i]:a[i]=a[n一1一i];a[n一1一i]=t;}}main(){intk[10]={1,2,3,4,5,6,7,8,9,10},i;fun(k,5):for(i=2;i<8;i++)printf("%d",k[i]);printf("\n");}程序運(yùn)行的結(jié)果是()。A、3456787B、876543C、1098765D、321678標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:由于數(shù)組名本身是一個(gè)地址,所以在用數(shù)組名作為實(shí)參傳遞時(shí),對(duì)應(yīng)的形參相當(dāng)于一個(gè)指針變量,在函數(shù)中可以通過(guò)指針變量來(lái)引用數(shù)組元素,從而改變?cè)氐闹怠1绢}中函數(shù)fun的作用是將數(shù)組A的前n個(gè)元素進(jìn)行逆轉(zhuǎn),fun(k,5)的結(jié)果是數(shù)組k的前五個(gè)元素1、2、3、4、5變?yōu)?、4、3、2、1。逆轉(zhuǎn)后,輸出數(shù)組中第3個(gè)至第8個(gè)元素。二、程序填空題(本題共1題,每題1.0分,共1分。)40、給定程序中,函數(shù)fun的功能是:將形參n中,各位上為偶數(shù)的數(shù)取出,并按原來(lái)從高位到低位的順序組成一個(gè)新的數(shù),并作為函數(shù)值返回。例如,從主函數(shù)輸入一個(gè)整數(shù):27638496,函數(shù)返回值為:26846。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!1#include<stdio.h>2unsignedlongfun(unsignedlongn)3{unsignedlongx=0,s,i;intt;4s=n;5/**********found**********/6i=__1__;7/**********found**********/8while(__2__)9{t=s%10;10if(t%2==0){11/**********found**********/12x=x+t*i;i=__3__;13}14s=s/10;15}16returnx;17}18main()19{unsignedlongn=-1;20while(n>99999999||n<0)21{printf(’’Pleaseinput(0<n<100000000):’’);scanf(’’%1d’’,&n);}22printf(’’\nTheresultis:%1d\n’’,fun(n));23}標(biāo)準(zhǔn)答案:(1)1(2)s(3)i*10知識(shí)點(diǎn)解析:函數(shù)fun的功能是將形參n中,各位上為偶數(shù)的數(shù)取出,組成新數(shù)。第一空:由“if(t%2==0){x=x+t*i;i=__3__;}”可知,如果t是偶數(shù),那么t添加到返回值里面,比如第一次得到t=2,那么x=0+2*1;下一次得到了t=4,那么此時(shí)x的值應(yīng)該是2+2*10;再下一一次得到t=2,那么x=22+2*100,即x的值是在上一次值的基礎(chǔ)上加上新得到的值乘以其權(quán)值,因此i是代表權(quán)值。第一空處是初始化i,第一次進(jìn)入if語(yǔ)句時(shí)市,x是個(gè)1位數(shù),此時(shí)權(quán)值i應(yīng)為l,故第一空處應(yīng)為“1”。第二空:第二空處是填循環(huán)的終止條件,在循環(huán)體內(nèi),s每次縮小10倍,在最后一次進(jìn)入循環(huán)的時(shí)候,s是一個(gè)一位數(shù),s/10之后s變成0,下次就不應(yīng)該進(jìn)入while循環(huán),因此while循環(huán)的終止條件是s不為0,故第二空處為“s”或“s!=0”。第三空:由第一空的分析可知權(quán)值i是在上一次的基礎(chǔ)上增加10倍,故第三空處應(yīng)為“i*10”。三、程序修改題(本題共1題,每題1.0分,共1分。)41、下列給定程序的功能是:讀入一個(gè)英文文本行,將其中每個(gè)單詞的第一個(gè)字母改成大寫(xiě),然后輸出此文本行(這里”單詞”是指由空格隔開(kāi)的字符串)。例如,若輸入"Iamastudenttotaketheexamination",則應(yīng)輸出"IAmAStudentToTakeTheExamination"。請(qǐng)改正程序中的錯(cuò)誤,使程序能得出正確的結(jié)果。注意:部分源程序在文件MODI1.C中,不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:1#include<stdlib.h>2#include<string.h>3#include<conio.h>4#include<ctype.h>5#include<stdio.h>6#include<string.h>7/*********found*********/8voidupfst(charP)9{10intk=0;11for(;*P;P++)12if(k)13{14if(*P==’’)15k=0;16}17else18{19if(*P!=’’)20{21k=1;22*P=toupper(*P);23}24}25}26voidmain()27{28charchrstr[81]j29System("CLS");30printf("\nPleaseenteranEnglishtext;lihe:");31gets(chrstr);32printf("\nBoforechanging:\n%s",chrstr);33upfst(chrstr);34printf("\nAfterchanging:\n%s\n",chrstr);35}標(biāo)準(zhǔn)答案:voidupfst(char*p)知識(shí)點(diǎn)解析:主函數(shù)中fun函數(shù)的調(diào)用方式說(shuō)明函數(shù)fun的參數(shù)應(yīng)為指針類(lèi)型。四、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)42、下列程序定義了N×N的二維數(shù)組,并在主函數(shù)中賦值。請(qǐng)編寫(xiě)函數(shù)fun,函數(shù)的功能是:求出數(shù)組周邊元素的平均值并作為函數(shù)值返回給主函數(shù)中的s。例如,若a數(shù)組中的值為:0127919745238314568259141則返回主程序后s的值應(yīng)為3.375。注意:部分源程序在文件PROG1.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。試題程序:1#include<stdio.h>2#include<conio.h>3#include<Stdlib.h>4#defineN55doublefun(intw[][N])6{78}9voidmain()10{11FILE*wf;12inta[N][N]={0,1,2,7,9,1,9,7,4,5,2,3,8,3,1,4,5,6,8,2,5,9,1,4,1);13inti,j;14doubles;15system("CLS");16printf("***Thearray***\n");17for(i=0;i<N;i++)18{for(j=0;j<N;j++)19{printf("%4d",a[i][j]);)20print:f("\n");21}22s=fun(a);23printf("***THERESULT***\n");24printf("Thesumis:%lf\n",s);25/*****************/26wf=fopen("out.dat","w");27fprintf(wf,"%lf",s);28fclose(wf);29/*****************/30}標(biāo)準(zhǔn)答案:doublefun(intw[][N]){inti,j,k=0;doublesum=0.0;for(i=0;i<N;i++)for(j=0;j<N;j++)if(i==0‖i==N—1‖j==0‖j==N—1)/*只要下標(biāo)中有一個(gè)為0或N—1,則它一定是周邊元素*/{sum=sum+w[i][j];/*將周邊元素求和*/k++;}returnsum/k;/*求周邊元素的平均值*/}知識(shí)點(diǎn)解析:本題要求計(jì)算二維數(shù)組周邊元素的平均值,for循環(huán)語(yǔ)句控制循環(huán)過(guò)程,if條件語(yǔ)句根據(jù)數(shù)組元素的下標(biāo)判斷該元素是否為二維數(shù)組的周邊元素。本題采用逐一判斷的方式,周邊元素的規(guī)律為下標(biāo)中有一個(gè)是0或N—1,所以只要下標(biāo)中有一個(gè)為0或N—1,那么它一定是周邊元素。計(jì)算周邊元素個(gè)數(shù)的方式是當(dāng)給sum累加一個(gè)值時(shí),k也加1。國(guó)家二級(jí)(C語(yǔ)言)機(jī)試模擬試卷第2套一、選擇題(本題共39題,每題1.0分,共39分。)1、算法的時(shí)間復(fù)雜度是指()。A、算法的長(zhǎng)度B、執(zhí)行算法所需要的時(shí)間C、算法中的指令條數(shù)D、算法執(zhí)行過(guò)程中所需要的基本運(yùn)算次數(shù)標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:算法的時(shí)間復(fù)雜度,是指執(zhí)行算法所需要的工作量,可以用算法在執(zhí)行過(guò)程中所需基本運(yùn)算的執(zhí)行次數(shù)來(lái)度量算法的工作量。2、以下數(shù)據(jù)結(jié)構(gòu)中,屬于非線性數(shù)據(jù)結(jié)構(gòu)的是()。A、棧B、線性表C、隊(duì)列D、二叉樹(shù)標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:二叉樹(shù)屬于非線性結(jié)構(gòu)。棧是一種特殊的線性表,這種線性表只能在固定的一端進(jìn)行插入和刪除操作;隊(duì)列可看作是插入在一端進(jìn)行,刪除在另一端進(jìn)行的線性表。3、數(shù)據(jù)結(jié)構(gòu)中,與所使用的計(jì)算機(jī)無(wú)關(guān)的是數(shù)據(jù)的()。A、存儲(chǔ)結(jié)構(gòu)B、物理結(jié)構(gòu)C、邏輯結(jié)構(gòu)D、線性結(jié)構(gòu)標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:數(shù)據(jù)的邏輯結(jié)構(gòu)反映的是數(shù)據(jù)元素之間的邏輯關(guān)系,與使用的計(jì)算機(jī)無(wú)關(guān)。4、內(nèi)聚性是對(duì)模塊功能強(qiáng)度的衡量,下列選項(xiàng)中,內(nèi)聚性較弱的是()。A、順序內(nèi)聚B、偶然內(nèi)聚C、時(shí)間內(nèi)聚D、邏輯內(nèi)聚標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:內(nèi)聚是從功能角度來(lái)衡量模塊的聯(lián)系,它描述的是模塊內(nèi)的功能聯(lián)系。內(nèi)聚有如下種類(lèi),它們之間的內(nèi)聚度由弱到強(qiáng)排列:偶然內(nèi)聚一一模塊中的代碼無(wú)法定義其不同功能的調(diào)用。但它使該模塊能執(zhí)行不同的功能,這種模塊為巧合強(qiáng)度模塊。邏輯內(nèi)聚一一這種模塊把幾種相關(guān)的功能組合在一起,每次被調(diào)用時(shí),由傳送給模塊的參數(shù)來(lái)確定該模塊應(yīng)完成那一種功能。時(shí)間內(nèi)聚一一這種模塊順序完成一類(lèi)相關(guān)功能,比如初始化模塊,它順序地為變量置初值。過(guò)程內(nèi)聚一一如果一個(gè)模塊內(nèi)的處理元素是相關(guān)的,而且必須以特定次序執(zhí)行,則稱(chēng)為過(guò)程內(nèi)聚。通信內(nèi)聚一一這種模塊除了具有過(guò)程內(nèi)聚的特點(diǎn)外,還有另外一種關(guān)系,即它的所有功能都通過(guò)使用公用數(shù)據(jù)而發(fā)生關(guān)系。順序內(nèi)聚一一如果一個(gè)模塊內(nèi)各個(gè)處理元素和同一個(gè)功能密切相關(guān),而且這些處理必須順序執(zhí)行,處理元素的輸出數(shù)據(jù)作為下一個(gè)處理元素的輸入數(shù)據(jù),則稱(chēng)為順序內(nèi)聚。功能內(nèi)聚一一如果一個(gè)模塊包括為完成某一具體任務(wù)所必需的所有成分,或者說(shuō)模塊中所有成分結(jié)合起來(lái)是為了完成一個(gè)具體的任務(wù),此模塊則為功能內(nèi)聚模塊。5、在關(guān)系中凡能惟一標(biāo)識(shí)元組的最小屬性集稱(chēng)為該表的鍵或碼。二維表中可能有若干個(gè)鍵,它們稱(chēng)為該表的()。A、連接碼B、關(guān)系碼C、外碼D、候選碼標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:在關(guān)系中凡能惟一標(biāo)識(shí)元組的最小屬性集稱(chēng)為該表的鍵或碼。二維表中可能有若干個(gè)鍵,它們稱(chēng)為該表的候選碼或候選鍵。從二維表的所有候選鍵中選取一個(gè)作為用戶使用的鍵稱(chēng)為主鍵或主碼。6、檢查軟件產(chǎn)品是否符合需求定義的過(guò)程稱(chēng)為()。A、確認(rèn)測(cè)試B、需求測(cè)試C、驗(yàn)證測(cè)試D、路徑測(cè)試標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:確認(rèn)測(cè)試的任務(wù)是驗(yàn)證軟件的功能和性能,以及其他特性是否滿足需求規(guī)格說(shuō)明中確定的各種需求。7、數(shù)據(jù)流圖用于抽象描述一個(gè)軟件的邏輯模型,數(shù)據(jù)流圖由一些特定的圖符構(gòu)成。下列圖符名標(biāo)識(shí)的圖符不屬于數(shù)據(jù)流圖合法圖符的是()。A、控制流B、加工C、存儲(chǔ)文件D、源和潭標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:數(shù)據(jù)流圖用于抽象描述一個(gè)軟件的邏輯模型,它由一些特定的圖符構(gòu)成,包括4個(gè)方面,即加工、數(shù)據(jù)流、存儲(chǔ)文件、源和潭。8、待排序的關(guān)鍵碼序列為(15,20,9,30,67,65,45,90),要按關(guān)鍵碼值遞增的順序排序,采取簡(jiǎn)單選擇排序法,第一趟排序后關(guān)鍵碼15被放到第()個(gè)位置。A、2B、3C、4D、5標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:選擇排序的基本思想是掃描整個(gè)線性表,從中選出最小的元素,將它交換到表的最前面,然后對(duì)剩下的子表采用同樣的方法,直到子表為空。所以第一趟排序后,將選出最小的元素9放在第一個(gè)位置,元素15則被交換放在第三個(gè)位置。9、對(duì)關(guān)系S和關(guān)系R進(jìn)行集合運(yùn)算,結(jié)果中既包含關(guān)系Sp的所有元組也包含關(guān)系R中的所有元組,這樣的集合運(yùn)算稱(chēng)為()。A、并運(yùn)算B、交運(yùn)算C、差運(yùn)算D、除運(yùn)算標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:關(guān)系的并運(yùn)算是指,由結(jié)構(gòu)相同的兩個(gè)關(guān)系合并,形成一個(gè)新的關(guān)系,其中包含兩個(gè)關(guān)系中的所有元組。10、下列選項(xiàng)中,不屬于數(shù)據(jù)管理員(DBA)職責(zé)的是()。A、數(shù)據(jù)庫(kù)維護(hù)B、數(shù)據(jù)庫(kù)設(shè)計(jì)C、改善系統(tǒng)性能,提高系統(tǒng)效率D、數(shù)據(jù)類(lèi)型轉(zhuǎn)換標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:數(shù)據(jù)庫(kù)管理員(DataBaseAdminiswator,DBA)是指對(duì)數(shù)據(jù)庫(kù)的規(guī)劃、設(shè)計(jì)、維護(hù)、監(jiān)視等的人員,其主要工作如下:數(shù)據(jù)庫(kù)設(shè)計(jì)。DBA的主要任務(wù)之一是數(shù)據(jù)庫(kù)設(shè)計(jì),具體地說(shuō)是進(jìn)行數(shù)據(jù)模式的設(shè)計(jì);數(shù)據(jù)庫(kù)維護(hù)。DBA必須對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)安全性、完整性、并發(fā)控制及系統(tǒng)恢復(fù)、數(shù)據(jù)定期轉(zhuǎn)儲(chǔ)等進(jìn)行實(shí)施與維護(hù);改善系統(tǒng)性能,提高系統(tǒng)效率。DBA必須隨時(shí)監(jiān)視數(shù)據(jù)庫(kù)的運(yùn)行狀態(tài),不斷調(diào)整內(nèi)部結(jié)構(gòu),使系統(tǒng)保持最佳狀態(tài)與效率。11、C語(yǔ)言規(guī)定,在一個(gè)C程序中,main()函數(shù)的位置()。A、必須在系統(tǒng)調(diào)用的庫(kù)函數(shù)之后B、必須在程序的開(kāi)始C、必須在程序的最后D、可以在任意位置標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:每個(gè)C程序有且只有一個(gè)主函數(shù)(main),且程序必須從“main()”函數(shù)開(kāi)始執(zhí)行,而且“main()”函數(shù)可以放在程序中的任意位置。12、以下敘述中正確的是()。A、C語(yǔ)言比其他語(yǔ)言高級(jí)B、C語(yǔ)言可以不用編譯就能被計(jì)算機(jī)識(shí)別執(zhí)行C、C語(yǔ)言以接近英語(yǔ)國(guó)家的自然語(yǔ)言和數(shù)學(xué)語(yǔ)言作為語(yǔ)言的表達(dá)形式D、C語(yǔ)言出現(xiàn)的最晚,具有其他語(yǔ)言的一切優(yōu)點(diǎn)標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:此題考查的是C語(yǔ)言的基本特點(diǎn)。C語(yǔ)言是一種高級(jí)編程語(yǔ)言,但并不是比其他語(yǔ)言高級(jí);C語(yǔ)言源程序必須經(jīng)過(guò)編譯生成目標(biāo)文件才能被計(jì)算機(jī)識(shí)別執(zhí)行;C語(yǔ)言出現(xiàn)比較晚,它既有優(yōu)點(diǎn)也有缺點(diǎn),而并不是具有其他一切語(yǔ)言的優(yōu)點(diǎn)。13、下列敘述中錯(cuò)誤的是()。A、C語(yǔ)句必須以分號(hào)結(jié)束B(niǎo)、復(fù)合語(yǔ)句在語(yǔ)法上被看作一條語(yǔ)句C、空語(yǔ)句出現(xiàn)在任何位置都不會(huì)影響程序運(yùn)行D、賦值表達(dá)式末尾加分號(hào)就構(gòu)成賦值語(yǔ)句標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:C語(yǔ)言規(guī)定每條語(yǔ)句和數(shù)據(jù)定義的最后必須有一個(gè)分號(hào),分號(hào)是C語(yǔ)句的必要組成部分。復(fù)合語(yǔ)句也稱(chēng)為“語(yǔ)句塊”,其形式如下:{語(yǔ)句1;語(yǔ)句2;……”語(yǔ)句n;},即用一對(duì)大括號(hào)把若干語(yǔ)句括起來(lái)構(gòu)成一個(gè)語(yǔ)句組。一個(gè)復(fù)合語(yǔ)句在語(yǔ)法上視為一條語(yǔ)句,在一對(duì)花括號(hào)內(nèi)的語(yǔ)句數(shù)量不限。一個(gè)賦值表達(dá)式的最后加一個(gè)分號(hào)就成為一條語(yǔ)句,即賦值語(yǔ)句??照Z(yǔ)句是只有一個(gè)分號(hào)的語(yǔ)句,它什么也不做,程序設(shè)計(jì)中有時(shí)需要加一個(gè)空語(yǔ)句來(lái)表示存在一條語(yǔ)句,但隨意加分號(hào)會(huì)導(dǎo)致邏輯上的錯(cuò)誤,而且這種錯(cuò)誤十分隱蔽,編輯器也不會(huì)提示邏輯錯(cuò)誤,需要慎用。14、若有定義:inta=7;floatx=2.5,y=4.7;則表達(dá)式“x+a%3*(int)(x+y)%2/4”的值是()。A、2.500000B、2.750000C、3.500000D、0.000000標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:此題考查的是變量的類(lèi)型轉(zhuǎn)換。表達(dá)式中“(int)(x+y)把x+y=(7.2)”的值強(qiáng)制轉(zhuǎn)化成整型即得到7,那么“a%3*(int)(x+y)%2”的值為整型常量1,所以“a%3*(int)(x+y)%2/4”的值為0;因?yàn)樽兞縳是浮點(diǎn)型變量,所以表達(dá)式“x+a%3*(int)(x+y)%2/4”的結(jié)果也是浮點(diǎn)型,得到2.500000。15、若下列選項(xiàng)中的各變量均為整型且已有值,其中不正確的賦值語(yǔ)句是()。A、++i;B、n1=(n2/(n3=2));C、k=-i=j;D、a=b+c=2;標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查賦值表達(dá)式。賦值表達(dá)式的一般形式是:變量名=表達(dá)式。C語(yǔ)言規(guī)定,不能給變量表達(dá)式賦值。16、下列關(guān)于邏輯運(yùn)算符兩側(cè)運(yùn)算對(duì)象的敘述中正確的是()。A、只能是整數(shù)0或1B、只能是整數(shù)0或非0整數(shù)C、可以是結(jié)構(gòu)體類(lèi)型的數(shù)據(jù)D、可以是任意合法的表達(dá)式標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:邏輯運(yùn)算符兩側(cè)的運(yùn)算對(duì)象可以是任意合法的表達(dá)式。邏輯表達(dá)式的運(yùn)算結(jié)果或者為1(“真”),或者為0(“假”)。17、若有說(shuō)明inta[3][4];則a數(shù)組元素的非法引用是()。A、a[0][2*1]B、a[1][3]C、a[4-2][0]D、a[0][4]標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:此題考查的是數(shù)組元素的引用。對(duì)于已定義的數(shù)組a[M][N],數(shù)組元素的正確引用必須滿足行下標(biāo)小于M,列下標(biāo)小于N且為正整數(shù)。此題中,選項(xiàng)D)中列下標(biāo)值出現(xiàn)溢出。18、下列說(shuō)法不正確的是()。A、int*ptr;//指針指向整形數(shù)據(jù)B、char*ptr;//指針的類(lèi)型是字符型指針C、int**ptr;//指針的類(lèi)型是雙重指針D、int(*ptr)[3];//是一個(gè)指針數(shù)組,數(shù)組共有三個(gè)元素,而三個(gè)元素是int型指針標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:血(*ptr)[3]是一個(gè)數(shù)組指針,指針指向一個(gè)有3個(gè)int型變量的數(shù)組。19、有以下程序#include<stdio.h>voidmain(){chars[]={"0laXy"};inti,n=0;for(i=0;s[i]!=0;i++)if(s[i]<=’a’&&s[i]>=’z’)n++;printf("%d\n",n);}程序運(yùn)行后的輸出結(jié)果是()。A、0B、2C、3D、5標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:這段程序的功能求出字符串s中字符的ASCII碼小于小寫(xiě)字符a并且大于小寫(xiě)字符z的字符的個(gè)數(shù)。因?yàn)樾?xiě)字符z的ASCII碼大于小寫(xiě)字符a的ASCII碼,所以滿足a的ASCII碼并且大于z的ASCII碼的字符是不存在的,所以輸出0。20、有以下程序:#include<stdio.h>main()(inta[]={1,2,3,4),y,*p=&a[3];--p;y=*p;printf("y=%d\n",y);}程序的運(yùn)行結(jié)果是()。A、y=0B、y=1C、y=2D、y=3標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:程序首先定義了一個(gè)一維數(shù)組和指針,接著將數(shù)組第4個(gè)元素的地址賦給“*p”,進(jìn)行-p使指針p指向了數(shù)組的第3個(gè)元素;通過(guò)“y=*p”,將數(shù)組第3個(gè)元素的值3賦給了y,所以選項(xiàng)D)正確。21、下面的for語(yǔ)句的循環(huán)次數(shù)為()。for(x=1,y=0;(y!=19)&&(x<6);x++);A、是無(wú)限循環(huán)B、循環(huán)次數(shù)不定C、最多執(zhí)行6次D、最多執(zhí)行5次標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查for循環(huán)。只考慮x的取值變化,x從1取到5,可以循環(huán)5次,但是并不知道y是如何變化的,有可能出現(xiàn)y=19提前跳出循環(huán)的情況,所以是最多執(zhí)行了5次。22、下列程序的輸出結(jié)果是()。#include<stdio.h>voidmain(){inta=0,b=1,c=2;if(++a>0‖++b>0)++c;printf("%d,%d,%d",a,b,c);}A、0,1,2B、1,2,3C、1,1,3D、1,2,2標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:本題考查if語(yǔ)句。先判斷if語(yǔ)句的條件是否成立,因?yàn)椤?+a=1>0”,所以條件成立,又因?yàn)槭沁M(jìn)行邏輯或運(yùn)算,在己知其中一個(gè)運(yùn)算對(duì)象為真的情況下,不必判斷另外一個(gè)運(yùn)算對(duì)象的真假,即不進(jìn)行抖b操作,就可以直接得出整個(gè)表達(dá)式的值為邏輯1,執(zhí)行下面的++c。23、有以下程序:#include<stdio.h>main(){intc;while((c=getchar())!=’\n’){switch(c-’3’){case0:case1:putchat(c+4);case2:putchar(c+4);break;case3:putchar(c+3);case4:putchar(c+3);break;}}printf("\n");}從第一列開(kāi)始輸入數(shù)據(jù)(<CR>代表一個(gè)回車(chē)符):3845<CR>,則程序輸出結(jié)果為()。A、77889B、77868C、776810D、77886610標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:題中while循環(huán)的條件是:當(dāng)從鍵盤(pán)讀入的字符不是“\n”時(shí),執(zhí)行while循環(huán)。輸入第一個(gè)字符3時(shí):執(zhí)行case0,什么也不輸出;case1,輸出7;case2,輸出7;遇到break語(yǔ)句,跳出switch語(yǔ)句。輸入第二個(gè)字符8時(shí)“c-’3’=5”,不執(zhí)行任何語(yǔ)句。輸入第三個(gè)字符4時(shí)“c-’3’=1”,執(zhí)行case1輸出8:case2,輸出8;遇到break語(yǔ)句,跳出switch語(yǔ)句。輸入第四個(gè)字符5時(shí)“c-’3’=2”,執(zhí)行case2,輸出9;遇到break語(yǔ)句,跳出switch語(yǔ)句。24、C語(yǔ)言規(guī)定,函數(shù)返回值的類(lèi)型是()。A、由調(diào)用該函數(shù)時(shí)的主調(diào)函數(shù)類(lèi)型所決定B、由return語(yǔ)句中的表達(dá)式類(lèi)型所決定C、由調(diào)用該函數(shù)時(shí)系統(tǒng)臨時(shí)決定D、由定義該函數(shù)時(shí)所指定的數(shù)值類(lèi)型決定標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查函數(shù)調(diào)用時(shí)的數(shù)值類(lèi)型。函數(shù)調(diào)用時(shí),函數(shù)返回值的類(lèi)型既不由主調(diào)函數(shù)類(lèi)型所決定,也不由return語(yǔ)句中的表達(dá)式類(lèi)型所決定,更不是由系統(tǒng)臨時(shí)決定,而是由定義該函數(shù)時(shí)所指定的數(shù)值類(lèi)型所決定。25、執(zhí)行下列程序時(shí)輸入“456<空格>789<空格>123<回車(chē)>”,輸出結(jié)果是()。#include<stdio.h>main(){charm[80];intc,i;scanf("%c",&c);scanf("%d",&i);scanf("%s",&m);printf("%c,%d,%s\n",c,i,m);}A、456,789,123B、4,789,123C、4,56,789,123D、4,56,789標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:scanf函數(shù)中的“%c”表示通過(guò)鍵盤(pán)只讀入一個(gè)字符型的數(shù)據(jù),“&c”表示將該數(shù)據(jù)賦值給c,所以c=4。另外,以“%d”格式讀入數(shù)據(jù)時(shí),只有遇到空格或者換行等間隔符時(shí)才停止讀入,所以i=56,m=789。26、已知下列函數(shù)定義:fun(int*b,intc,intd){intk;for(k=0;k<c*d;k++){*b=c+d;b++;}}則調(diào)用此函數(shù)的正確寫(xiě)法是(假設(shè)變量a的說(shuō)明為inta[10])()。A、fun(*a,6,14);B、fun(&a,6,8);C、fun(a,8,4);D、fun((int)a,8,6):標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:本題考查函數(shù)調(diào)用時(shí)的參數(shù)傳遞。fun函數(shù)的調(diào)用形式為fun(int*b,intc,intd)。調(diào)用數(shù)組時(shí),用數(shù)組名表示一個(gè)指向數(shù)組的第一個(gè)元素的指針,因此,調(diào)用時(shí)的形式為“fun(a,8,4)”。27、設(shè)Y為整型變量,A=1,A的地址為EF01;B=2,B的地址為EF02;執(zhí)行語(yǔ)句B=&A;Y=&B;后Y的值()。A、1B、2C、EF01D、EF02標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:&是取地址運(yùn)算符,“Y=&B”是將B的地址賦給Y,因此,Y值為EF02。28、有以下程序:#include<stdio.h>intf(intt[],intn);main(){inta[4]={1,2,3,4},s;s=f(a,2);printf("%d\n",s);}intf(intt[],intn){if((n>0)&&(n<5))returnt[n+1]+f(t,-1);elsereturn0;}程序運(yùn)行后的輸出結(jié)果是()。A、4B、7C、10D、6標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題主要考查的是函數(shù)的遞歸調(diào)用,子函數(shù)f是一個(gè)遞歸函數(shù),所以主函數(shù)中執(zhí)行“f(a,2)”時(shí),其執(zhí)行過(guò)程是“a[3]+f(a,1)=a[3]+a[2]+f(a,0)=7”。29、以下語(yǔ)句定義正確的是()。A、inta[1][4]={1,2,3,4,5};B、floata[3][]={{1,2},{2,3),{3,1}};C、longa[2][3]={{1},{1,2},{1,2,3},{0,0}};D、doublea[][3]={8};標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查如何對(duì)二維數(shù)組的元素賦值。選項(xiàng)A),數(shù)組第二維的大小是4,但是卻賦值了5個(gè)元素,數(shù)組溢出:選項(xiàng)B),C語(yǔ)言規(guī)定,對(duì)于二維數(shù)組,只可以省略第一個(gè)方括號(hào)中的常量表達(dá)式,而不能省略第二個(gè)方括號(hào)中的常量表達(dá)式;選項(xiàng)C),數(shù)組第一維的大小是2,但是賦值超過(guò)了2;選項(xiàng)D),在對(duì)二維數(shù)組元素賦初值時(shí),可以只對(duì)部分元素賦初值,未賦初值的元素自動(dòng)取0。30、下列一維數(shù)組說(shuō)明中,不正確的是()。A、intN:scanf("%d",&N);intb[N];B、floata[]={1,6,6,0,2};C、#defineS10inta[S];D、#defineS10inta[S+5];標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題考查一維數(shù)組的賦值。一維數(shù)組的一般定義格式為:類(lèi)型說(shuō)明符數(shù)組名[常量表達(dá)式]。其中,“[]”中的內(nèi)容可以是整型常量,也可以是整型表達(dá)式。選項(xiàng)A)中的N是一個(gè)變量,所以錯(cuò)誤。31、下面函數(shù)的功能是()。sss(s,t)char*s,*t;{while((*s)&&(*t)&&(*t++==*s++));return(*s-*t);}A、將字符串s復(fù)制到字符串t中B、比較兩個(gè)字符串的大小C、求字符串的長(zhǎng)度D、將字符串s接續(xù)到字符串t中標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:“*s-*t”的輸出實(shí)際是比較兩個(gè)字符的ASCII碼值,比較兩個(gè)字符串的大小。32、有以下程序:#include<stdio-h>#include"string.h"voidfun(char*s[],intn){char*t;inti,j;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(strlen(s[i])>strlen(s[j])){t=s[i];s[i]=s[j];s[j]=t;}}main(){char*ss[]={"bcc","bbcc","xy","aaaacc","aabcc"};fun(ss,5);printf("%s,%s\n",ss[0],ss[4]);}程序的運(yùn)行結(jié)果是()。A、xy,aaaaccB、aaaacc,xyC、bcc,aabccD、aabcc,bcc標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:從main函數(shù)入手,定義了一個(gè)一維數(shù)組并賦初值,接著調(diào)用函數(shù)fun(),函數(shù)的功能是:比較數(shù)組中各元素的長(zhǎng)度,按元素長(zhǎng)度從小到大的順序排列元素,所以執(zhí)行“fun(ss,5)”函數(shù)后,“*ss[]={"xy","bcc","bbcc","aabcc","aaaacc"}”,所以調(diào)用printf函數(shù)輸出ss[0],ss[4]的值分別為xy,aaaacc。33、若已定義:inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0≤i≤9,則對(duì)a數(shù)組元素不正確的引用是()。A、a[p-a]B、*(&a[i])C、p[i]D、a[10]標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:此題考查對(duì)一維數(shù)組的引用。對(duì)于已定義的數(shù)組a[M],數(shù)組元素的正確引用必須滿足下標(biāo)小于M且為正整數(shù)。選項(xiàng)D)中下標(biāo)值出現(xiàn)溢出。34、以下選項(xiàng)中可用作C程序合法實(shí)數(shù)的是()。A、.1e0B、3.0e0.2C、E9D、9.12E標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:C程序的合法實(shí)數(shù)有兩種表示形式,一種是小數(shù)形式,另一種是指數(shù)形式,對(duì)于用指數(shù)形式表示的實(shí)數(shù)來(lái)說(shuō),需要注意的是字母e或E之前必須要有數(shù)字,且字母e或E后面的指數(shù)必須為整數(shù),所以選項(xiàng)A)為正確答案。35、以下敘述中不正確的是()。A、預(yù)處理命令行都必須以#號(hào)開(kāi)始,結(jié)尾不加分號(hào)B、在程序中凡是以#號(hào)開(kāi)始的語(yǔ)句行都是預(yù)處理命令行C、C程序在執(zhí)行過(guò)程中對(duì)預(yù)處理命令進(jìn)行處理D、預(yù)處理命令可以放在程序中的任何位置標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:本題考查預(yù)處理命令的特點(diǎn)。編譯預(yù)處理命令的特點(diǎn)有:①為了區(qū)分一般的語(yǔ)句,預(yù)處理命令行都必須以≠}開(kāi)始,結(jié)尾不加分號(hào);②預(yù)處理命令可以放在程序中的任意位置;③在程序中凡是以#開(kāi)始的語(yǔ)句都是預(yù)處理命令行。36、以下程序的輸出結(jié)果是()。#inelude<stdio.h>#defineF(x)2.84+x#definew(y)printf("%d",(int)(y))#defineP(y)w(y)main(){intx=2;P(F(5)*x);}A、12B、13C、14D、16標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題考查帶參數(shù)的宏定義及相關(guān)運(yùn)算。“P(F(5)*x)=P(2.84+5*2)=P(12.84)”,調(diào)用“w(12.84)”,輸出“(int)(12.84)=12”。37、設(shè)有下面的定義:structst{inta;floatb;}d;int*p;要使P指向結(jié)構(gòu)變量d中的a成員,正確的賦值語(yǔ)句是()。A、*p=d.a(chǎn);B、p=&a;C、p=d.a(chǎn);D、p=&d.a(chǎn);標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題主要考查按結(jié)構(gòu)數(shù)組元素方式引用結(jié)構(gòu)成員。結(jié)構(gòu)體變量的成員引用方法有3種:①結(jié)構(gòu)體變量名.成員名;②指針變量名->成員名;③(*指針變量名).成員名。因?yàn)閜是指針變量,所以應(yīng)該將地址值賦給p。38、交換兩個(gè)變量的值,不允許用臨時(shí)變量,應(yīng)該使用下列()位運(yùn)算符。A、&B、^C、‖D、~標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:按邏輯位運(yùn)算的特定作用主要有3點(diǎn):①用按位與運(yùn)算將特定位清0或保留特定位:②用按位或運(yùn)算將特定的位置設(shè)置為1;③用按位異或運(yùn)算將某個(gè)變量的特定位翻轉(zhuǎn)或交換兩個(gè)變量的值。39、如果需要打開(kāi)一個(gè)已經(jīng)存在的非空文件“FILE”并進(jìn)行修改,正確的語(yǔ)句是()。A、fp=fopen("FILE","ftr");B、fp=fopen("FILE","a+");C、fp=fopen("FILE","w+");D、fp=fopen("FILE","r+");標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查打開(kāi)文件函數(shù)fopen(),打開(kāi)文件函數(shù)fopen()的調(diào)用形式為:fp=fopen(文件名,文件使用方式)。“文件使用方式”說(shuō)明:方式“r”為以輸入方式打開(kāi)一個(gè)文本文件;方式“a+”為以讀/寫(xiě)方式打開(kāi)一個(gè)文本文件,保留文件中原有的數(shù)據(jù);方式“w+”為以讀/寫(xiě)方式建立一個(gè)新的文本文件;方式“r+”為以讀/寫(xiě)方式打開(kāi)一個(gè)文本文件。二、程序填空題(本題共1題,每題1.0分,共1分。)40、給定程序中,函數(shù)fun的作用是:不斷從終端讀入整數(shù),由變量a統(tǒng)計(jì)大于0的個(gè)數(shù),用變量C來(lái)統(tǒng)計(jì)小于0的個(gè)數(shù),當(dāng)輸入0時(shí)結(jié)束輸入,并通過(guò)形參pa和pb把統(tǒng)計(jì)的數(shù)據(jù)傳回主函數(shù)進(jìn)行輸出。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include<stdio.h>voidfun(int*px,int*py){/**********found**********/int___1___;sCarlf("%d",&k);/**********found**********/while___2___{if(k>0)a++;if(k<0)c++;/**********found**********/___3___;}*px=a;*py=c;}main(){intx,y;fun(&x,&y);printf("x=%dy=%d\n",x,y);}標(biāo)準(zhǔn)答案:(1)a=0,c=0,k(2)(k!=0)(3)scanf("%d",&k);知識(shí)點(diǎn)解析:本題中函數(shù)fun的功能是不斷從終端讀入整數(shù),由變量a統(tǒng)計(jì)大于0的個(gè)數(shù),用變量c來(lái)統(tǒng)計(jì)小于0的個(gè)數(shù),當(dāng)輸入0時(shí)結(jié)束輸入,然后通過(guò)形參pa和pb把統(tǒng)計(jì)的數(shù)據(jù)傳回主函數(shù)進(jìn)行輸出。因?yàn)榇撕瘮?shù)對(duì)于數(shù)字的大小有不同的處理方式,所以根據(jù)題意首先要區(qū)別大于0、小于0和等于0的數(shù)字,然后進(jìn)行統(tǒng)計(jì)和程序的進(jìn)行。然后我們就能想到要使用條件語(yǔ)句來(lái)進(jìn)行,while或者if都可,再利用自增運(yùn)算符既可以統(tǒng)計(jì),得到結(jié)果。三、程序修改題(本題共1題,每題1.0分,共1分。)41、給定程序MODI1.C中函數(shù)fun的功能是:將字符串中的字符按逆序輸出,但不改變字符串中的內(nèi)容。例如,若字符串為abed,則應(yīng)輸出:dcba。請(qǐng)改正程序中的錯(cuò)誤,使它能計(jì)算出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include<stdio.h>/**********found**********/fun(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)viidfun(char*a)(2)printf("%c",*a);知識(shí)點(diǎn)解析:本題中函數(shù)的功能是將字符串中的內(nèi)容逆序。題干中給出的fun函數(shù)通過(guò)遞歸調(diào)用自身,實(shí)現(xiàn)字符串的逆序。(1)主函數(shù)中“fun(s);”語(yǔ)句中的s是數(shù)組名,所以在fun函數(shù)中參數(shù)的定義應(yīng)該是指針型,“fun(chara)”改為“voidfun(char*a)”。(2)printf函數(shù)的調(diào)用形式是:printf(格式字符串,輸出項(xiàng)表),在格式字符串和輸出項(xiàng)表之間有“,”,因此,第二個(gè)標(biāo)識(shí)處應(yīng)該是“printf("%c",*a);”。四、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)42、請(qǐng)編寫(xiě)函數(shù)fun:在形參指針?biāo)傅?個(gè)整數(shù)中找出最大值和最小值,最大的放在a中,最小的放在d中。注意:部分源程序存在PROG1.C中,請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。#inolude<stdio.h>voidNONO();voidfun(int*a,int*b,int*c,int*d){}main(){inta,b,c,d;printf("請(qǐng)輸入4個(gè)整數(shù):");scanf("%d%d%d%d",&a,&b,&c,&d);printf("原始順序:%d,%d,%d,%d\n",a,b,c,d);fun(&a,&b,&C,&d);printf("處理后:%d,%d,%d,%d\n",a,b,c,d);NONO();}voidNONO(){/*本函數(shù)用于打開(kāi)文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FILE*fp,*wf;inti,a,b,c,d;fp=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<5;i++){facanf(fp,"%d%d%d%d",&a,&b,&c,&d);fun(&a,&b,&c,&d);fprintf(wf,"a=%d,d=%d\n",a,d);}fclose(fp);fclsee(wf);}標(biāo)準(zhǔn)答案:voidfun(int*a,int*b,int*c,int*d){intt;if(*a<*b){t=*a;*a=*b;*b=t;}if(*a<*c){t=*a;*a=*c;*c=t;}if(*a<*d){t=*a;*a=*d;*d=t;}if(*b<*c){t=*b;*b=*c;*c=t;}if(*b<*d){t=*b;*b=*d;*d=t;}if(*c<*d){t=*c;*c=*d;*d=t;}}知識(shí)點(diǎn)解析:本題中的函數(shù)功能主要是在形參指針?biāo)傅?個(gè)整數(shù)中找出最大值和最小值,最大的放在a中,最小的放在d中。這個(gè)題目類(lèi)似于排序,但是又不是嚴(yán)格的排序,只要重新排序最大值和最小值的位置即可。所以類(lèi)似于排序,這一題需要相互比較4個(gè)數(shù)字,然后進(jìn)行位置的調(diào)換?;舅悸肪褪潜容^相鄰的兩個(gè)數(shù)字,如果靠近a的數(shù)字比靠近d的數(shù)字要大,就不用進(jìn)行交換,如果靠近a的數(shù)字比靠近d的數(shù)字小,就進(jìn)行交換,這樣的話最大的數(shù)字就會(huì)慢慢交換到a的位置,然后最小的數(shù)字就會(huì)慢慢交換到d的位置。所以根據(jù)分析我們就要用到if語(yǔ)句來(lái)進(jìn)行判斷和處理,只要經(jīng)過(guò)幾輪的if判斷大小然后交換,就能實(shí)現(xiàn)題目條件所給出的位置的重置,得到要求的結(jié)果。首先在主函數(shù)main中我們需要的就是四個(gè)數(shù)字,這四個(gè)數(shù)字需要手動(dòng)輸入,件程序代碼第13~15行,四個(gè)數(shù)字輸入完城后就可以進(jìn)入fun函數(shù)進(jìn)行數(shù)據(jù)處理了。進(jìn)入到fun函數(shù)中,只要從a到d進(jìn)行比較,按照一開(kāi)始的規(guī)則即可,如果a大于b,不變,比較a與c,若a小b,a與b交換位置,交換過(guò)后a就大于b了,這樣就進(jìn)行a與c的比較;a與c的比較同理,這樣的循環(huán)比較,就能發(fā)現(xiàn),每比較一次,較大的數(shù)字就能交換到a的位置,較小的數(shù)字就離a越來(lái)越遠(yuǎn),也就是到了d的位置,這樣就完成了題目所給出的要求了,最大的數(shù)字放在a中,最小的數(shù)字放在d中。當(dāng)新的排序排好后,就可以返回主函數(shù)進(jìn)行輸出了。國(guó)家二級(jí)(C語(yǔ)言)機(jī)試模擬試卷第3套一、選擇題(本題共39題,每題1.0分,共39分。)1、設(shè)已有定義:floatx;,則以下對(duì)指針變量p進(jìn)行定義且賦初值的語(yǔ)句中正確的是()。A、int*p=(float)x;B、float*p=&x;C、floatp=&x;D、float*p=1024;標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:指針是用來(lái)存放地址的變量,用(類(lèi)型名*指針變量名)的形式定義。賦值時(shí)應(yīng)將某個(gè)變量地址即&x賦給指針變量,所以選擇B。2、設(shè)已有定義:floatx;,則以下對(duì)指針變量p進(jìn)行定義且賦初值的語(yǔ)句中正確的是()。A、int*p=(float)x;B、float*p=&x;C、floatp=&x;D、float*p=1024;標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:指針是用來(lái)存放地址的變量,用(類(lèi)型名*指針變量名)的形式定義。賦值時(shí)應(yīng)將某個(gè)變量地址即&x賦給指針變量,所以選擇B。3、—棵二叉樹(shù)的前序遍歷結(jié)果是ABCEDF,中序遍歷結(jié)果是CBAEDF,則其后序遍歷的結(jié)果是()。A、DBACEFB、CBEFDAC、FDAEBCD、DFABEC標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:由于該二叉樹(shù)的前序遍歷結(jié)果是ABCEDF,顯然A結(jié)點(diǎn)為根結(jié)點(diǎn),所以后序遍歷時(shí)A結(jié)點(diǎn)是最后遍歷的,其后序遍歷的結(jié)果為CBEFDA。4、以下選項(xiàng)中,不合法的C語(yǔ)言用戶標(biāo)識(shí)符是()。A、a_bB、AaBcC、a--bD、_1標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:C語(yǔ)言規(guī)定,變量命名必須符合標(biāo)識(shí)符的命名規(guī)則,C選項(xiàng)中包含了非法字符“一”,所以錯(cuò)誤。標(biāo)識(shí)符由字母、數(shù)字或下劃線組成,且第一個(gè)字符必須是大小寫(xiě)英文字母或者下劃線,而不能是數(shù)字。5、設(shè)有定義:inta=1,b=2,c=3;,以下語(yǔ)句中執(zhí)行效果與其他三個(gè)不同的是()。A、if(a>b)c=a,a=b,b=c;B、if(a>b){c=a,a=b,b=c}C、if(a>b)c=a;a=b;b=c;D、if(a>b){c=a;a=b;b=c}標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:C語(yǔ)言中if語(yǔ)句后面只跟一條語(yǔ)句時(shí),可以省略大括號(hào)。即if語(yǔ)句僅作用于緊隨其后的那條語(yǔ)句或者是復(fù)合語(yǔ)句的內(nèi)容,所以A項(xiàng)執(zhí)行三條語(yǔ)句組成的復(fù)合語(yǔ)句;BD兩項(xiàng)執(zhí)行大括號(hào)中的三條語(yǔ)句;而C項(xiàng)只執(zhí)行c=a;。6、C語(yǔ)言中規(guī)定,程序中各函數(shù)之間()。A、既允許直接遞歸調(diào)用也允許間接遞歸調(diào)用B、不允許直接遞歸調(diào)用也不允許間接遞歸調(diào)用C、允許直接遞歸調(diào)用不允許間接遞歸調(diào)用D、不允許直接遞歸調(diào)用允許間接遞歸調(diào)用標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題考查函數(shù)調(diào)用的基本概念。在函數(shù)調(diào)用時(shí),只要符合函數(shù)的使用,程序中的各個(gè)函數(shù)間既可以直接調(diào)用其他函數(shù),也可以遞歸調(diào)用其自身。7、以下不構(gòu)成無(wú)限循環(huán)的語(yǔ)句或語(yǔ)句組是()。A、n=0;do{++n;}while(n<=0);B、n=0;while(1){n++;}C、n=10;while(n);{n--;}D、for(n=0,i=1;;i++)n+=i;標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:選項(xiàng)A中do后面的語(yǔ)句只執(zhí)行了一次便結(jié)束了循環(huán);B選項(xiàng)中條件while(1)永遠(yuǎn)成立,所以是死循環(huán);C選項(xiàng)中n的值為10,而循環(huán)體為空語(yǔ)句,所以while(n)永遠(yuǎn)為真,進(jìn)入死循環(huán);D選項(xiàng)中for語(yǔ)句第二個(gè)表達(dá)式為空,所以沒(méi)有判別條件,進(jìn)入死循環(huán)。8、有以下程序:#include<stdio.h>main(){FlLE*pf;char*s1="China",*s2="Beijing";pf=fopen("abc.dat","wb+");fwrite(s2,7,1,pf);rewind(pf);/*文件位置指針回到文件開(kāi)頭*/fwrite(s1,5,1,pf);fclose(pf);}以上程序執(zhí)行后abc.dat文件的內(nèi)容是()。A、ChinaB、ChinangC、ChinaBeijingD、BeijingChina標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題考查函數(shù)fwrite的使用。函數(shù)fwrite的調(diào)用形式為:intfwrite(char*pt,unsignedn,F(xiàn)ILE*fp):其功能是把pt所指向的n*size個(gè)字節(jié)輸出到fp所指文件中,第二次調(diào)用該函數(shù)時(shí),從文件的第一個(gè)位置開(kāi)始寫(xiě)入,之前已有的會(huì)被覆蓋掉,如果第二次寫(xiě)入的長(zhǎng)度沒(méi)有第一次的長(zhǎng),則后面短出的部分保留原樣。9、關(guān)系模型允許定義3類(lèi)數(shù)據(jù)約束,下列不屬于數(shù)據(jù)約束的是()。A、實(shí)體完整性約束B(niǎo)、參照完整性約束C、屬性完整性約束D、用戶自定義的完整性約束標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:關(guān)系模型允許3類(lèi)數(shù)據(jù)約束,它們是:實(shí)體完整性約束該約束要求關(guān)系的主鍵中屬性值不能為空值,這是數(shù)據(jù)庫(kù)完整性的最基本要求。參照完整性約束該約束是關(guān)系之間相關(guān)聯(lián)的基本約束,它不允許關(guān)系引用不存在的元組:即在關(guān)系中的外鍵要么是所關(guān)聯(lián)關(guān)系中實(shí)際存在的元組,要么就為空值。用戶定義的完整性約束用戶定義的完整性就是針對(duì)某一具體關(guān)系數(shù)據(jù)庫(kù)的約束條件,它反映某一具體應(yīng)用所涉及的數(shù)據(jù)必
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 疾病預(yù)防控制與社區(qū)健康促進(jìn)計(jì)劃考核試卷
- 燈具銷(xiāo)售渠道拓展考核試卷
- 電子旅行充電寶考核試卷
- 電容器在能量?jī)?chǔ)存系統(tǒng)中的應(yīng)用考核試卷
- 海洋油氣開(kāi)采環(huán)境保護(hù)與節(jié)能減排技術(shù)考核試卷
- 衛(wèi)生陶瓷行業(yè)智能生產(chǎn)技術(shù)應(yīng)用考核試卷
- 煤炭批發(fā)企業(yè)戰(zhàn)略規(guī)劃考核試卷
- 中華護(hù)理學(xué)科技獎(jiǎng)
- 《宇宙的未來(lái)》課件-1
- 2025年新疆維吾爾自治區(qū)烏魯木齊市天山區(qū)校聯(lián)考中考一模語(yǔ)文試題(含答案)
- 2025年人教版英語(yǔ)五年級(jí)下冊(cè)教學(xué)進(jìn)度安排表
- 職工基本醫(yī)療保險(xiǎn)參保登記表
- 《海南航空簡(jiǎn)介》課件
- 課題申報(bào)書(shū):數(shù)字賦能突發(fā)公共衛(wèi)生事件治理的機(jī)理、路徑及對(duì)策研究
- DB45T 2623-2022 公路水路建設(shè)項(xiàng)目社會(huì)穩(wěn)定風(fēng)險(xiǎn)評(píng)估規(guī)程
- 《輔助投籃機(jī)器人設(shè)計(jì)》9500字(論文)
- 《德國(guó)古典主義哲學(xué)》課件
- 中國(guó)成人心肌炎臨床診斷與治療指南2024解讀
- 2024年咨詢(xún)工程師之工程項(xiàng)目組織與管理題庫(kù)附參考答案(b卷)
- 國(guó)開(kāi)(浙江)2024年秋《中國(guó)建筑史(本)》形考作業(yè)1-4答案
- 糖尿病小講課尹以麗護(hù)理病歷臨床病案
評(píng)論
0/150
提交評(píng)論