國家二級C語言機試(選擇題)模擬試卷37(共255題)_第1頁
國家二級C語言機試(選擇題)模擬試卷37(共255題)_第2頁
國家二級C語言機試(選擇題)模擬試卷37(共255題)_第3頁
國家二級C語言機試(選擇題)模擬試卷37(共255題)_第4頁
國家二級C語言機試(選擇題)模擬試卷37(共255題)_第5頁
已閱讀5頁,還剩66頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

國家二級C語言機試(選擇題)模擬試卷37(共9套)(共255題)國家二級C語言機試(選擇題)模擬試卷第1套一、選擇題(本題共40題,每題1.0分,共40分。)1、若有說明:typedefstruct{inta;charc;}w;則以下敘述正確的是()。A、編譯后系統(tǒng)為w分配5個字節(jié)B、編譯后系統(tǒng)為w分配6個字節(jié)C、編譯后系統(tǒng)為w分配58個字節(jié)D、編譯后系統(tǒng)不為w分配存儲空間標準答案:D知識點解析:w是一個自定義類型,而不是變量,故編譯后系統(tǒng)不為w分配存儲空間。當使用w定義變量時才會為其定義的變量分配存儲空間。2、設(shè)某二叉樹的后序序列為CBA,中序序列為ABC,則該二叉樹的前序序列為A、BCAB、CBAC、ABCD、CAB標準答案:C知識點解析:二叉樹的前序遍歷順序為首先訪問根結(jié)點,再依次訪問左結(jié)點和右結(jié)點。中序遍歷的順序為首先訪問左結(jié)點,然后依次訪問根結(jié)點和右結(jié)點。后序遍歷首先遍歷左子樹,然后遍歷右子樹,最后訪問根結(jié)點。根據(jù)后序可以很快確定根結(jié)點,然后可以查看根在中序中位置,將中序分為左右兩部分,左邊和右邊兩顆樹,在按照上述方式遞推出確定左子樹的根和右子樹。本題根據(jù)后序,可以確定A為根結(jié)點;根據(jù)B在中序中的位置,可以確定A沒有左子樹,BC為A的右子樹,C為B的右子樹。本題的具體二叉樹如下:因此,這棵二叉樹的前序是ABC,選項C正確。3、對長度為n的線性表進行順序查找,在最壞情況下所需要的比較次數(shù)為A、log2nB、n/2C、nD、n+1標準答案:C知識點解析:在進行順序查找過程中,如果被查的元素是線性表中的最后一個元素,或者被查元素根本不在線性表中,則為了查找這個元素需要與線性表中的所有元素進行比較,這是順序查找的最壞情況,需要比較的次數(shù)為n次。4、以下選項中,值為1的表達式是A、1一’0’B、’1’-0C、1-’\0’D、’\0’-’0’標準答案:C知識點解析:在C程序中,字符量可參與任何整數(shù)運算。字符參與運算時,首先要將字符轉(zhuǎn)換為其對應(yīng)的ASCII碼值再參與整數(shù)運算。字符’1’對應(yīng)的ASCII碼值是49,字符’0’對應(yīng)的ASCII碼值是48,字符’\0’是字符串結(jié)束標識符NULL,其對應(yīng)的ASCII碼值是0。5、數(shù)據(jù)庫系統(tǒng)的核心是()。A、數(shù)據(jù)模型B、數(shù)據(jù)庫管理系統(tǒng)C、數(shù)據(jù)庫D、數(shù)據(jù)庫管理員標準答案:B知識點解析:數(shù)據(jù)庫管理系統(tǒng)(DBMS)是數(shù)據(jù)庫的機構(gòu),它是一種系統(tǒng)軟件,負責(zé)數(shù)據(jù)庫中的數(shù)據(jù)組織、數(shù)據(jù)操縱、數(shù)據(jù)維護、控制及保護和數(shù)據(jù)服務(wù)等。所以,數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫系統(tǒng)的核心。6、下列排序法中,每經(jīng)過一次元素的交換會產(chǎn)生新的逆序的是A、快速排序B、冒泡排序C、簡單插入排序D、簡單選擇排序標準答案:A知識點解析:冒泡排序只交換相鄰元素,但不是每次移動都產(chǎn)生新的逆序。簡單插入排序的元素移動不會產(chǎn)生新的逆序??焖倥判蛎恳淮谓粨Q移動都會產(chǎn)生新的逆序,因為當不會有新的逆序產(chǎn)生時,本輪比較結(jié)束。故選項A正確。7、if語句的基本形式是:if(表達式)語句,以下關(guān)于’’表達式’’值的敘述中正確的是A、必須是整數(shù)值B、必須是正數(shù)C、可以是任意合法的數(shù)值D、必須是邏輯值標準答案:C知識點解析:在if語句中,表達式可以是任意合法的數(shù)值。當其值為非零時,執(zhí)行if語句,為0時執(zhí)行else語句。8、若在定義語句:inta,b,c,*p=&c;接著執(zhí)行以下選項中的語句,則能正確執(zhí)行的語句是A、scanf("%d%d%d",a,b,c);B、scanf("%d",a,b,c);C、scanf("%d”,p);D、scanf("%d",&p);標準答案:C知識點解析:程序語句inta,b,c,*p=&c;定義了三個整型變量a,b,c,和一個整型指針變量p,并且把變量c的地址賦給p。scanf函數(shù)的一般形式為“scanf(“格式控制字符串”,地址列表)”,其中的地址列表應(yīng)當是存放輸入數(shù)據(jù)變量的地址。9、有以下程序:#include#defineS(x)x*xvoidmain(){intk-5,j=2;prinff(“%d,%d\n”,S(k+j+2),S(+k+2));}程序的運行結(jié)果是()。A、21.18B、81,81C、21,21D、18.18標準答案:A知識點解析:帶參數(shù)的宏的調(diào)用格式:宏名(實參表),替換過程是:用宏調(diào)用提供的實參字符串,直接替換宏定義命令行中相應(yīng)形參字符串,非形參字符保持不變。S(k+j+2)被s換成k+j+2*k+j+2,計算時先計算2:I:k,結(jié)果為21;s(j+k+2)被s換成j+k+2*j+k+2,計算時先計算2冰j,結(jié)果為18。程序的運行結(jié)果是21,18。10、十進制整數(shù)設(shè)為整數(shù)類I,則下面屬于類I的實例的是A、一518B、0.518C、518E-2D、.518標準答案:A知識點解析:整數(shù)的全體構(gòu)成整數(shù)集,整數(shù)集是一個數(shù)環(huán)。在整數(shù)系中,零和正整數(shù)統(tǒng)稱為自然數(shù)。-1、-2、-3、…、-n、…(n為非零自然數(shù))為負整數(shù)。則正整數(shù)、零與負整數(shù)構(gòu)成整數(shù)系。整數(shù)不包括小數(shù)、分數(shù)。本題中,選項A是正確的,選項B是小數(shù),選項C是科學(xué)計數(shù),也是小數(shù),選項D是小數(shù)。11、軟件生命周期是指()。A、軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程B、軟件從需求分析、設(shè)計、實現(xiàn)到測試完成的過程C、軟件的開發(fā)過程D、軟件的運行維護過程標準答案:A知識點解析:通常,將軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程稱為軟件生命周期。也就是說,軟件產(chǎn)品從考慮其概念開始,到該軟件產(chǎn)品不能使用為止的整個時期都屬于軟件生命周期。12、以下錯誤的定義語句是A、intx[4][3]={{1,2,3),{1,2,3},{1,2,3},{1,2,3}};B、intx[][3]={{0),{1},{1,2,3}};C、intx[][3]={1,2,3,4};D、intx[4砌={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};標準答案:D知識點解析:一維數(shù)組定義和初始化是允許省略行下標,不允許省略列下標。13、設(shè)intx=0,*p;下列賦值語句正確的是()。A、*p=x;B、p=NULL;C、p=x;D、*p=NULL;標準答案:B知識點解析:定義指針變量時,必須將指針變量初始化為NULL(為空),否則,如果不賦給它地址,系統(tǒng)會隨機給它分配一個地址.以致出現(xiàn)錯誤的運算結(jié)果。14、下列敘述中正確的是()。A、循環(huán)隊列是隊列的一種鏈式存儲結(jié)構(gòu)B、循環(huán)隊列是隊列的一種順序存儲結(jié)構(gòu)C、循環(huán)隊列是非線性結(jié)構(gòu)D、循環(huán)隊列是一種邏輯結(jié)構(gòu)標準答案:B知識點解析:在實際應(yīng)用中,隊列的順序存儲結(jié)構(gòu)一般采用循環(huán)隊列的形式。15、關(guān)于結(jié)構(gòu)體函數(shù)的敘述中正確的是()。A、即使是同類型的結(jié)構(gòu)體變量。也不能進行整體賦值B、結(jié)構(gòu)體數(shù)組名不能作為實參傳給函數(shù)C、結(jié)構(gòu)體變量的地址不能作為實參傳給函數(shù)D、結(jié)構(gòu)體中可以含有指向本結(jié)構(gòu)體的指針成員標準答案:D知識點解析:C語言中的結(jié)構(gòu)體變量包含若干成員,這些成員可以是所有變量類型,甚至可以是正在定義的結(jié)構(gòu)體類型指針。用結(jié)構(gòu)體變量作實參時,取的是“值傳遞”的方式,將結(jié)構(gòu)體變量所占的內(nèi)存單元的內(nèi)容全部順序傳遞給形參。形參也必須是同類型的結(jié)構(gòu)體變量。結(jié)構(gòu)體數(shù)組作為參數(shù)時,采取了“地址傳遞”的方式,形參須為同類型的結(jié)構(gòu)指針或者形參結(jié)構(gòu)數(shù)組。16、以下敘述中正確的是A、當用scanf從鍵盤輸入數(shù)據(jù)時,每行數(shù)據(jù)在沒按下回車鍵(Enter鍵)前,可以任意修改B、花括號對{}只能用來表示函數(shù)的開頭和結(jié)尾,不能用于其他目的C、空語句就是指程序中的空行D、復(fù)合語句在語法上包含多條語句,其中不能定義局部變量標準答案:A知識點解析:當使用scanf函數(shù)從鍵盤輸入數(shù)據(jù)時,每行數(shù)據(jù)在未按F回車鍵之前,可以任意修改。但按下回車鍵后,scanf函數(shù)即接受了這一行數(shù)據(jù),不能再修改。選項A正確,對于選項B,{}還可以表明復(fù)合語句的開頭結(jié)尾,或者循環(huán)體的開頭結(jié)尾等,選項B錯誤,而空語句為;,不是空行,選項C錯誤,在復(fù)合語句中可以定義變量為局部變量,選項D錯誤。17、以下程序的輸出結(jié)果是()。#includemain(){inta=2,b;b=a<<2;printf(’’%d\n’’,b);}A、2B、4C、8D、16標準答案:C知識點解析:表達式a<<2,把a向左移動2位,相當于擴大4倍。即2×2倍。18、有以下程序#include#includevoidfun(chars[][10],intn){chart;intij;for(i=0;is[j][0]){t=s[i][0];s[i][0]=s[j][0];s[j][0]=t;}}main(){charss[5][10]={"bcc","bbcc","xy","aaaacc","aabcc"};fun(ss,5);printf("%s,%s\n",ss[0],ss[4]);}程序的運行結(jié)果是A、aaaacc,xyB、bcc,aabccC、xy,aaaaccD、aabcc,bcc標準答案:C知識點解析:函數(shù)fun(chars[][10],intn)通過兩重for循環(huán)語句,比較二維字符數(shù)組s[][10]的每個字符串的首字符大小,如果前一個字符串首字符大于后一個字符串的首字符,則交換這兩個字符串的首字符。在主函數(shù)中,語句fun(ss,5)的作用是對二維字符數(shù)組ss[5][10]的5個字符串的首字符進行從小到大的排序,不影響各個字符串另外的字符。所以排序結(jié)束后,5個字符串的第一個字符依次變?yōu)閍、a、b、b和x:最后輸出第1個和第4個字符串。19、以下敘述中錯誤的是A、可以用typedef將已存在的類型用一個新的名字來代表B、可以通過typedef增加新的類型C、用typedef定義新的類型名后,原有類型名仍有效D、用typedef可以為各種類型起別名,但不能為變量起別名標準答案:B知識點解析:C語言允許用typedef說明一利新類型名。typedef類型名標識符:其中“類型名”必須是在此語句之前己定義的類型標識符;“標識符”是一個用戶定義標識符,用作新的類型名;typedef語句的作用僅僅是用“標識符”來代表已存在的“類型名”,并未產(chǎn)生新的數(shù)據(jù)類型,原有類型名依然有效。20、用樹型結(jié)構(gòu)表示實體之間聯(lián)系的模型是A、層次模型B、關(guān)系模型C、網(wǎng)狀模型D、運算模型標準答案:A知識點解析:層次模型的基本結(jié)構(gòu)是樹形結(jié)構(gòu),這種結(jié)構(gòu)方式在現(xiàn)實世界中很普遍,它們自頂向下、層次分明。21、有以下程序structS{inta,b;}data[2]={10,100,20,200};main(){structSp=data[1];printf(”%dkn”,++(p.a(chǎn)));}程序運行后的輸出結(jié)果是A、11B、20C、21D、10標準答案:C知識點解析:在題目中定義了結(jié)構(gòu)體s類型的數(shù)組變量data,并對其賦初值。在程序中定義了指向結(jié)構(gòu)體s類型的變量p,并把數(shù)組data的第二個元素data[1]的值賦給它,所以此時成員變量p.a(chǎn)的值等于20,在輸出時分別加1,所以輸入結(jié)果為選項A。22、下列函數(shù)的功能是voidfun(char*a,char*b){while((*b=*a)!=’\0’){a++;b++;}}A、使指針b指向a所指字符串B、將a所指字符串和b所指字符串進行比較C、將a所指字符串賦給b所指空間D、檢查a和b所指字符串中是否有’\0’標準答案:C知識點解析:在while語句的條件中是把字符*a的值賦給字符*b,然后再判斷字符*b的值是否等于字符串的結(jié)束字符(’\0’),當不等于結(jié)束字符(’\0’)時,把字符指針變量a,b分別加1,指它們的下一個字符,直到字符串a(chǎn)的結(jié)束。這樣程序執(zhí)行的結(jié)果就是把字符串a(chǎn)賦給了b所指的存儲空間。23、已定義以下函數(shù)intfun(int*p){return*p;}fun函數(shù)返回值是A、不確定的值B、一個整數(shù)C、形參p中存放的值D、形參p的地址值標準答案:B知識點解析:由函數(shù)intfun(int*p){retum*p}的定義可知,返回值為整型指針變量p所指向的數(shù)據(jù)。24、若有以下函數(shù)首部intfun(doublex[10],intn)則下面針對此函數(shù)的函數(shù)聲明語句中正確的是A、intfun(double,int);B、intfun(double*x,intn);C、intfun(double*,int*);D、intfun(doublex,int*n);標準答案:C知識點解析:函數(shù)說明的一般形式為:類型名函數(shù)名(參數(shù)類型1,參數(shù)類型2,……)。因為函數(shù)intfun(doublex[10],int*n)的第1個形式參數(shù)是一個雙精度型的一維數(shù)組,第2個參數(shù)是一個整型指針,并返回一個整型值。一維數(shù)組的名字表示的是一維數(shù)組的地址。25、有以下函數(shù)intfun(char*x,char*y){intn=0:while((*x==*y)&&*x!=’\0’){x++;y++;n++;}returnn;)函數(shù)的功能是A、查找x和Y所指字符串中是否有’\0’B、統(tǒng)計X和Y所指字符串中最前面連續(xù)相同的字符個數(shù)C、將v所指字符串賦給x所指存儲空間D、統(tǒng)計X和Y所指字符串中相同的字符個數(shù)標準答案:B知識點解析:在while循環(huán)中的判斷表達式為(*x=*y)&&*x!=’\0’,所以只要字符串x與y的當前字符不相等時,循環(huán)就結(jié)束。26、有以下程序fun(intx,inty)main(){staticintm=0,i=2;{intj=l,m=1,k;i+=m+1;m=i+x+y;returnm;k=fun(j,m);printf("%d,",k);}k=fun(j,m);printf("%d\n",k);}執(zhí)行后的輸出結(jié)果是A、5,5B、5,11C、11,11D、11,5標準答案:B知識點解析:子函數(shù)fun(intx,inty),將變量m和i聲明為局部靜態(tài)變量,因此第1次調(diào)用主函數(shù)后,局部靜態(tài)變量m和i的值為5和3,第1次函數(shù)調(diào)用結(jié)束時,它們的值不釋放保持不變,所以第2次調(diào)用時,局部靜態(tài)變量m和i的初始值分別為5和3,即在執(zhí)行“i+=m+1”時,i的值為9,因此最終m的值為11。27、下面選項中的程序段,沒有編譯錯誤的是A、char*sp,s[10];sp="Hello";B、char*sp,s[10];s="Hello";C、charstrl[10]="computer",str2[10];str2=str1;D、charmark[1];mark="PROGRAM";標準答案:A知識點解析:選項B)中數(shù)組名為常量,不能賦值,選項C)字符數(shù)組之間無法完成賦值操作,選項D)和選項B)相同,無法對數(shù)組進行賦值。28、有以下程序#includevoidfun(char*c,intd{*c=*c+1;d=d+1;printf("%c,%c,",*c,d);}main(){charb=’a’,a=’A’;fun(&b,a);printf("%c,%c\n",b,a);}程序運行后的輸出結(jié)果是A、b,B,b,AB、b,B,B,AC、a,B,B,aD、a,B,a,B標準答案:A知識點解析:本題中fun函數(shù)的參數(shù)傳遞方式,形參c是傳地址,形參d是傳值,所以在主函數(shù)中,執(zhí)行fun時,把變量b的地址傳給了c,把a的值傳遞給了d,經(jīng)過運算,輸出的值為b,B。在主函數(shù)的輸出語句中,輸出變量b的值為b,變量a的值為A。29、下面結(jié)構(gòu)體的定義語句中,錯誤的是A、structord{intx;inty;intz;};structorda;B、structord{intx;inty;intz;}structorda;C、structord{intx;inty;intz;}a;D、struct{intx;inty;intz;)a;標準答案:B知識點解析:在選項B)中,由于在定義完結(jié)構(gòu)體后缺少分號“;”,所以這是一條不完整的語句,因而是錯誤的。30、有三個關(guān)系R、S和T如下:則由關(guān)系R和S得到關(guān)系T的操作是A、自然連接B、交C、投影D、并標準答案:A知識點解析:關(guān)系R和關(guān)系S有公共域,關(guān)系T是通過公共域的等值進行連接的結(jié)果,符合自然連接,選A。31、有以下程序#includemain(){charc[2][5]={"6938","8254"},*p[2];inti,j,s=0;for(i=0;i<2;i++)p[i]=c[i];for(i=0;i<2;i++)for(j=0;p[i][j]>0;j+=2)s=10*s+p[i][j]-’0’;printf("%d\n",s);}程序運行后的輸出結(jié)果是()。A、6385B、9824C、6982D、9284標準答案:A知識點解析:第一個for循環(huán)將數(shù)組中每個字符串的首地址賦值給了指針數(shù)組p的元素,所以p[i][j]與c[i][j]等價。第二個嵌套for循環(huán)中外層循環(huán)i從0到1,內(nèi)層循環(huán)j為偶數(shù)且從0遞增,語句"s=10*s+p[i][j]-?0?;"用一個整數(shù)s記錄數(shù)組c中列下標為偶數(shù)的所有數(shù)字,并按照其先后順序放置于整數(shù)s的不同位上,所以計算得到的結(jié)果為6385,答案選A。32、若有以下程序#include<stdio.h>intk=7,m=5;voidf(int**s){int*t=&k;s=&t;*s=&m;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、7,5,7,3,3,3,B、7,5,7,3,5,7,C、7,5,5,3,3,3,D、7,7,5,3,3,3,標準答案:C知識點解析:本題考查二級指針作為函數(shù)的參數(shù),可以通過函數(shù)調(diào)用來改變主函數(shù)中一級指針的指向。主函數(shù)中指針變量p指向i,r指向p,調(diào)用f函數(shù),形參指針s指向p,流程轉(zhuǎn)到f函數(shù)執(zhí)行,指針變量t指向k,s指向t,此時更改了s的指向,s指向了t,更改了s指向的地址空間內(nèi)容為m的地址,同時t也指向變量m,因此**s的值為m的值,*t為m的值,k為7。流程返回到主函數(shù),沒有對主函數(shù)空間的數(shù)據(jù)和指向作出更改,因此全部為3。33、下面選項中關(guān)于位運算的敘述正確的是()。A、位運算的對象只能是整型或字符型數(shù)據(jù)B、位運算符都需要兩個操作數(shù)C、左移運算的結(jié)果總是原操作數(shù)據(jù)2倍D、右移運算時,高位總是補0標準答案:A知識點解析:取反運算符"~"為單目運算符,選項B)錯誤;左移運算的結(jié)果總是原操作數(shù)據(jù)2^n倍,n為"<<"右邊移動的位數(shù),選項C)錯誤;右移運算正數(shù)高位補0,負數(shù)高位補1,選項D)錯誤;答案選A)。34、有以下程序#include#includetypedefstruct{charname[10];charsex;intage;}STU;voidfun(STUt){strcpy(,"Tong");t.age++;}main(){STUs[2]={"Hua",’m’,18,"Qin",’f’,19};fun(s[1]);printf("%s,%d,%s,%d\n",s[0].name,s[0].age,s[1].name,s[1].age);}程序運行后的輸出結(jié)果是()。A、Hua,18,Qin,19B、Hua,18,Tong,20C、Tong,19,Qin,19D、Hua,19,Tong,19標準答案:A知識點解析:結(jié)構(gòu)體變量名作為函數(shù)參數(shù)是值傳遞,形參數(shù)據(jù)的改變不會影響到實參數(shù)據(jù),所以函數(shù)調(diào)用結(jié)束后數(shù)組s中的數(shù)據(jù)沒有變化,輸出結(jié)果為選項A)。35、某二叉樹共有12個結(jié)點,其中葉子結(jié)點只有1個。則該二叉樹的深度為(根結(jié)點在第1層)A、3B、6C、8D、12標準答案:D知識點解析:二叉樹中,度為0的節(jié)點數(shù)等于度為2的節(jié)點數(shù)加1,即n2=n0-1,葉子節(jié)點即度為0,n0=1,則n2=0,總節(jié)點數(shù)為12=n0+n1+n2=1+n1+0,則度為1的節(jié)點數(shù)n1=11,故深度為12,選D。36、有以下程序#includestructSTU{charname[9];charsex;intscore[2];};voidf(structSTUa[]){structSTUb={"Zhao",’m’,85,90};a[1]=b;}main(){structSTUc[2]={{"Qian",’f’,95,92},{"Sun",’m’,98,99}};f(C);printf("%s,%c,%d,%d,",c[0].name,c[0].sex,c[0].score[0],c[0].score[1]);printf("%s,%c,%d,%d\n",c[1].name,c[1].sex,c[1].score[0],c[1].score[1]);}程序運行后輸出結(jié)果是A、Qian,f,95,92,Sun,m,98,99B、Qian,f,95,92,Zhao,m,85,90C、Zhao,m,85,90,Sun,m,98,99D、Zhao,m,85,90,Qian,f,95,92標準答案:B知識點解析:本題考查把數(shù)組名作為函數(shù)參數(shù),執(zhí)行f函數(shù)后,結(jié)構(gòu)體數(shù)組c的第二個元素被改寫,c[1].name為Zhao,選項B正確。37、若有以下程序#includevoidsp(int*a){intb=2;*a=*a*2;printf("%d,",*a);a=&b;*a=*a*2;printf("%d,",*a);}main(){intk=3;sp(&k);printf("%d\n",k);}則程序的輸出結(jié)果是A、6,12,12B、6,4,3C、6,4,6D、9,4,9標準答案:C知識點解析:首先在主函數(shù)中給整型變量k賦值為3,調(diào)用sp函數(shù),將變量k的地址作為實參傳遞給形參指針變量a;在sp函數(shù)中,*a=*a*2;即結(jié)果為6,通過printf()函數(shù)輸出。整型變量b的地址賦給指針變量a,再執(zhí)行*a=*a*2;,即結(jié)果為4,通過printf()函數(shù)輸出。返回主函數(shù),輸出k的值6。因此C選項正確。38、以下敘述中正確的是A、語句inta[8]={0};是合法的B、語句inta[]={0};是不合法的,遺漏了數(shù)組的大小C、語句chara[2]={"A","B"};是合法的,定義了一個包含兩個字符的數(shù)組D、語句chara[3];a="AB";是合法的,因為數(shù)組有三個字符空間的容量,可以保存兩個字符標準答案:A知識點解析:B選項中,如給全部元素賦值,則在數(shù)組說明中,可以不給出數(shù)組元素的個數(shù);C選項中,chara[2]={"A","B"};不合法,應(yīng)為chara[2]={’A’,’B’};;D選項中,用字符串方式賦值比用字符逐個賦值要多占1個字節(jié),在該選項中應(yīng)為3個字節(jié)。因此A選項正確。39、sizeof(double)是A、一個整型表達式B、一個雙精度型表達式C、一個不合法的表達式D、一種函數(shù)調(diào)用標準答案:A知識點解析:sizeof是C語言中的一個操作符(operator),不是函數(shù)調(diào)用,簡單的說其作用就是返回一個對象或者類型所占的內(nèi)存字節(jié)數(shù)。所以選擇A40、有以下程序:#includevoidfun(inta,intb){intt;t=a;a=b;b=t;}main(){intc[10]={1,2,3,4,5,6,7,8,9,0},i;for(i=0;i<10;i+=2)fun(c[i],c[i+1]);for(i=0;i<10;i++)printf("%d,",c[i]);printf("\n");}程序的運行結(jié)果是()。A、1,2,3,4,5,6,7,8,9,0,B、2,1,4,3,6,5,8,7,0,9,C、0,9,8,7,6,5,4,3,2,1,D、0,1,2,3,4,5,6,7,8,9,標準答案:A知識點解析:函數(shù)調(diào)用中發(fā)生的數(shù)據(jù)傳送是單向的。即只能把實參的值傳送給形參,而不能把形參的值反向地傳送給實參。因此在函數(shù)調(diào)用過程中,形參的值發(fā)生改變,而實參中的值不會變化,所以數(shù)組c中的元素的值并沒有變化,選擇A。國家二級C語言機試(選擇題)模擬試卷第2套一、選擇題(本題共40題,每題1.0分,共40分。)1、算法的有窮性是指A、算法程序的運行時間是有限的B、算法程序所處理的數(shù)據(jù)量是有限的C、算法程序的長度是有限的D、算法只能被有限的用戶使用標準答案:A知識點解析:算法的有窮性,是指算法必須能在有限的時間內(nèi)做完,即算法必須能在執(zhí)行有限個步驟之后終止。2、設(shè)R是一個2元關(guān)系,有3個元組,S是一個3元關(guān)系,有3個元組。如T=R×S,則T的元組的個數(shù)為()。A、6B、8C、9D、12標準答案:C知識點解析:R為n元關(guān)系,有p個元組S為m元關(guān)系,有q個元組。兩個關(guān)系笛卡兒積是一個n+m元的關(guān)系,元組個數(shù)是q×p。所以T的元組的個數(shù)為9個。3、以下選項中合法的標識符是A、1.1B、11C、11D、1標準答案:C知識點解析:本題考查標識符定義。合法標識符的要求是由下劃線、英文大小寫字母利數(shù)字組成的字符串,且第一個字符必須是字母或下劃線。4、冒泡排序在最壞情況下的比較次數(shù)是A、n(n+1)/2B、nlog2nC、n(n-1)/2D、n/2標準答案:C知識點解析:對n個結(jié)點的線性表采用冒泡排序,在最壞情況下,冒泡排序需要經(jīng)過n/2遍的從前往后的掃描和rd2遍的從后往前的掃描,需要的比較次數(shù)為n(n-1)/2。5、在黑盒測試方法中,設(shè)計測試用例的根據(jù)是()。A、數(shù)據(jù)結(jié)構(gòu)B、模塊間的邏輯關(guān)系C、程序調(diào)用規(guī)則D、軟件要完成的功能標準答案:D知識點解析:黑盒測試方法也稱功能測試或數(shù)據(jù)驅(qū)動測試。黑盒測試是對軟件已經(jīng)實現(xiàn)的功能是否滿足需求進行測試和驗證。它完全不考慮程序內(nèi)部的邏輯結(jié)構(gòu)和內(nèi)部特征,只依據(jù)程序的需求和功能規(guī)格說明,檢查程序的功能是否符合它的功能要求。6、如果定義floata[10],x;,則以下敘述中正確的是()。A、語句a=&x;是非法的B、表達式a+1是非法的C、三個表達式a[1]、*(a+1)、*&a[1]表示的意思完全不同D、表達式*&a[1]是非法的,應(yīng)該寫成*(&(a[1]))標準答案:A知識點解析:數(shù)組名表示該數(shù)組的首地址,是一個地址常量,不能對它重新賦值,選項A正確。但是可以把數(shù)組名看作一個指針常量,則表達式a+1表示的是數(shù)組中第二個元素的地址,選項B錯誤。表達式a[1]、*(a+1)、*&a[1]都指的是數(shù)組a中第二個元素的值,選項C錯誤。[]運算符的優(yōu)先級高于*、&,取值*和取址&運算符優(yōu)先級相等,是同一優(yōu)先級的運算符,運算次序由結(jié)合方向所決定,*&a[1]在運算符優(yōu)先級和結(jié)合性上沒有問題,并且取值*和取址&運算符互逆,*&a[1]和a[1]等價,相當于求得數(shù)組a第二個元素的值,選項D錯誤。故正確答案為A。7、以下敘述中正確的是A、由&&構(gòu)成的邏輯表達式與由‖構(gòu)成的邏輯表達式都有“短路”現(xiàn)象B、C語言的關(guān)系表達式:0C、邏輯“非”(即運算符!)的運算級別是最低的D、邏輯“或”(即運算符‖)的運算級別比算術(shù)運算要高標準答案:A知識點解析:邏輯表達式的運算比較復(fù)雜,有短路現(xiàn)象,也就是首先計算“邏輯與”或者“邏輯或”運算的第一個運算量的值,根據(jù)表達式的值決定是否進行第二個量的值的計算?!斑壿嬇c”和“邏輯或”運算低于關(guān)系運算和算術(shù)運算。但是“邏輯非”運算卻高于算術(shù)運算。8、表達式a+=a一=a=9的值是()。A、18B、一9C、0D、9標準答案:C知識點解析:首先計算a=9,然后計算a一=9,即a=a一9,結(jié)果為0,然后計算a+=0,即a=a+0,所以最終結(jié)果為0。9、某帶鏈隊列初始狀態(tài)為front=rear=NULL。經(jīng)過一系列正常入隊與退隊操作后,front=10,rear=5。該隊列中的元素個數(shù)為A、不確定B、5C、4D、6標準答案:A知識點解析:循環(huán)隊列用數(shù)組A[0:m-1]存放其元素值,已知其頭尾指針分別是front和rear,則當前隊列的元素個數(shù)是(rear-front+m)%m=(5-10+m)%m=(m-5)%m。因為本題中的m值不確定,所以(m-5)%m的值不能確定。所以選項A正確。10、若變量已正確定義,以下選項中非法的表達式是A、a!=4‖’b’B、’a’%4C、’a’=1/2*(x=y=20,x*3)D、’A’+32標準答案:C知識點解析:賦值表達式左邊應(yīng)為變量,選項C中左邊為字符常量,因此非法,其余表達式均為合法的表達式。11、以下選項中,沒有編譯錯誤的是()。A、charstr3[]={’d’,’e’,’b’,’u’,’g’,’\0’};B、charstrl[5]=“pass”,str2[6];str2=strl:C、charname[10];name=“china”;D、charstr4[];str4=“helloworld”;標準答案:A知識點解析:B選項中,不能直接將字符數(shù)組名直接賦值給另一個字符數(shù)組名。C選項賦值錯誤,不能將一個字符串常量賦值給一個字符指針。D選項定義str4時需要定義其長度。故A選項正確。12、有以下程序#includemain(){intx;scanf("%d",&x);if(x<=3);elseif(x!=10)printf("%d\n",x);}程序運行時,輸入的值在哪個范圍才會有輸出結(jié)果A、不等于10的整數(shù)B、大于3或等于10的整數(shù)C、小于3的整數(shù)D、大于3且不等10的整數(shù)標準答案:D知識點解析:題目中,雖然else和第二個if不在同一行上,但等價于在同一行上,因此,程序的意思是當x大十3且不等于10時打印出來。13、在E-R圖中,用來表示實體的圖形是A、矩形B、橢圓形C、菱形D、三角形標準答案:A知識點解析:在E一R圖中,用矩形表示實體集,在矩形內(nèi)寫上該實體集的名字;用橢圓形表示屬性;用菱形(內(nèi)部寫上聯(lián)系名)表示聯(lián)系。14、下列說法不正確的是()。A、int*ptr;//指針指向整形數(shù)據(jù)B、char*ptr;//指針的類型是字符型指針C、int**ptr;//指針的類型是雙重指針D、int(*ptr)[3];//是一個指針數(shù)組,數(shù)組共有三個元素,而三個元素是int型指針標準答案:D知識點解析:int(*ptr)[3]是一個數(shù)組指針,指針指向一個有3個int型變量的數(shù)組。15、若下列選項中的各變量均為整型且已有值,其中不正確的賦值語句是()。A、++i;B、nl=(n2/(n3=2));C、k=i=j;D、a=b+c=2;標準答案:D知識點解析:本題考查賦值表達式。賦值表達式的一般形式是:變量名=表達式。C語言規(guī)定,不能給變量表達式賦值。16、數(shù)據(jù)流圖(DFD)中的有向箭頭(→)表示A、數(shù)據(jù)流B、控制流C、輸入流D、輸出流標準答案:A知識點解析:數(shù)據(jù)流圖(DataFlowDiagram):簡稱DFD,它從數(shù)據(jù)傳遞和加工角度,以圖形方式來表達系統(tǒng)的邏輯功能、數(shù)據(jù)在系統(tǒng)內(nèi)部的邏輯流向和邏輯變換過程,是結(jié)構(gòu)化系統(tǒng)分析方法的主要表達工具及用于表示軟件模型的一種圖示方法。數(shù)據(jù)流程圖中有以下幾種主要元素:→:數(shù)據(jù)流。數(shù)據(jù)流是數(shù)據(jù)在系統(tǒng)內(nèi)傳播的路徑,因此由一組成分固定的數(shù)據(jù)組成;□:數(shù)據(jù)源或宿(“宿”表示數(shù)據(jù)的終點)。代表系統(tǒng)之外的實體;○:對數(shù)據(jù)的加工(處理)。加工是對數(shù)據(jù)進行處理的單元,它接收一定的數(shù)據(jù)輸入,對其進行處理,并產(chǎn)生輸出;:數(shù)據(jù)存儲。表示信息的靜態(tài)存儲。17、優(yōu)化數(shù)據(jù)庫系統(tǒng)查詢性能的索引設(shè)計屬于數(shù)據(jù)庫設(shè)計的()。A、需求分析B、概念設(shè)計C、邏輯設(shè)計D、物理設(shè)計標準答案:D知識點解析:數(shù)據(jù)庫物理設(shè)計的主要目標是對數(shù)據(jù)庫內(nèi)部物理結(jié)構(gòu)作調(diào)整并選擇合理的存取路徑,以提高數(shù)據(jù)庫訪問速度及有效利用存儲空間,答案選D。18、數(shù)據(jù)庫設(shè)計的四個階段是:需求分析、概念設(shè)計、邏輯設(shè)計和A、編碼設(shè)計B、測試階段C、運行階段D、物理設(shè)計標準答案:D知識點解析:數(shù)據(jù)庫設(shè)計目前一般采用生命周期法,即把整個數(shù)據(jù)庫應(yīng)用系統(tǒng)的開發(fā)分解成目標獨立的四個階段。它們分別是需求分析階段、概念設(shè)計階段、邏輯設(shè)計階段、物理設(shè)計階段。19、下列描述中錯誤的是A、在數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)的物理結(jié)構(gòu)必須與邏輯結(jié)構(gòu)一致B、數(shù)據(jù)庫技術(shù)的根本目標是要解決數(shù)據(jù)的共享問題C、數(shù)據(jù)庫設(shè)計是指在已有數(shù)據(jù)庫管理系統(tǒng)的基礎(chǔ)上建立數(shù)據(jù)庫D、數(shù)據(jù)庫系統(tǒng)需要操作系統(tǒng)的支持標準答案:A知識點解析:在數(shù)據(jù)庫系統(tǒng)中,物理獨立性是指數(shù)據(jù)的物理結(jié)構(gòu)(包括存儲結(jié)構(gòu)、存取方式等)的改變,如存儲設(shè)備的更換、物理存儲的更換、存取方式改變等都不影響數(shù)據(jù)庫的邏輯結(jié)構(gòu),從而不致引起應(yīng)用程序的變化。20、有兩個關(guān)系R和S如下:由關(guān)系R通過運算得到關(guān)系S,則所使用的運算為A、選擇B、投影C、插入D、連接標準答案:B知識點解析:一個關(guān)系R通過投影運算后仍為一個關(guān)系R′,R′是由R中投影運算所指出的那些域的列所組成的關(guān)系。所以題目中關(guān)系S是由關(guān)系R經(jīng)過投影運算所得(選擇運算主要是對關(guān)系R中選擇由滿足邏輯條件的元組所組成的一個新關(guān)系)。21、若有定義語句inta[2][3],*p[3];,則以下語句中正確的是()。A、p=a;B、p[0]=a;C、p[0]=&a[1][2];D、p[1]=&a;標準答案:C知識點解析:A選項錯誤,因為p是指向一個指針數(shù)組,作為數(shù)組名,不能指向別的地方。B選項錯誤,因為p[0]是一個int指針,也就是int*;而a是一個指向指針的指針int**。C選項正確,因為p[0]是一個int*,a[1][2]是int,&a[1][2]是int*,類型吻合。D選項錯誤,因為a作為數(shù)組名,不能取地址,即使能取,p[1]是int*,&a是int***,類型不對。22、以下選項中,值為1的表達式是A、1-’0’B、’1’-0C、1-’\0’D、’\0’-’0’標準答案:C知識點解析:在C程序中,字符量可參與任何整數(shù)運算。字符參與運算時,首先要將字符轉(zhuǎn)換為其對應(yīng)的ASCII碼值再參與整數(shù)運算。字符“’1’”對應(yīng)的ASCII碼值是49,字符’0’對應(yīng)的ASCII碼值是48,字符“’\0’”是字符串結(jié)束標識符NuLL,其對應(yīng)的ASCII碼值是0。23、有以下程序intfun(intx[],intn){staticintsum=0,i;for(i=0;i<n;i++)sum+=x[i];retumsum;}main(){inta[]-{1,2,3,4,5),b[]={6,7,8,9),s=0;s=fun(a,5)+fun(b,4);printf(’’%d\n’’,s);}A、50B、45C、60D、55標準答案:C知識點解析:在函數(shù)intfun(intx[],intn)的定義中,變量sum使川rstatic修飾符,這說明了變量sum為一個靜態(tài)局部變量。由于在整個程序運行期問,靜態(tài)局部變量在內(nèi)存中的靜態(tài)存儲區(qū)中占據(jù)著永久的存儲單元。即使退出函數(shù)之后,下次再進入該函數(shù)時,靜態(tài)局部變量繼續(xù)使用原來存儲單元中原來的值。函數(shù)intfun(intx[]intn)的功能是求出數(shù)組各個元素的和。所以在主函數(shù)中,調(diào)用函數(shù)Fun(a,5)后,變量sum=1+2+3+4+5=15,當再次調(diào)用Fun(b,4)后,變量sum=15+6+7+8+9=45,所以s=15+45=60。24、設(shè)fp為指向某二進制文件的指針,且已讀到此文件末尾,則函數(shù)feof(fp)的返回值為()。A、0B、’\0’C、非0值D、NULL標準答案:C知識點解析:本題考查文件的定位。feof函數(shù)的用法是從輸入流讀取數(shù)據(jù),如果到達文件末尾(遇文件結(jié)束符),eof函數(shù)值為非零值,否則為0,所以C選項正確。25、若有定義:inta;floatb;doublec;,程序運行時輸入:a=1,b=2,c=3<回車>,能把值1輸入給變量a、值2輸入給變量b、值3輸入給變量c的輸入語句是()。A、scanf("a=%d,b=%f,c=%lf",&a,&b,&c);B、scanf("%d%f%lf",&a,&b,&c);C、scanf("a=%d,b=%lf,c=%lf",&a,&b,&c);D、scanf("a=%d,b=%f,c=%f",&a,&b,&c);標準答案:A知識點解析:考查scanf的格式輸入。如果程序調(diào)試的時候有普通的字符,那么若要程序調(diào)試通則需要在scanf的""內(nèi)原樣帶有相同的字符,變量a、b、c的數(shù)據(jù)類型分別為int、float、double,對應(yīng)的格式控制符分別為%d、%f和%lf,答案選A。26、有以下程序#includetypedefstruct{intb,p;}A;voidf(Ac)/*注意:C是結(jié)構(gòu)變量名*/{intj;c.b+=1;c.p+=2;}main(){i;Aa={1,2);f(a);printf("%d,%dha",a.b,a.p);}程序運行后的輸出結(jié)果是A、2,4B、1,2C、1,4D、2,3標準答案:B知識點解析:在C語言中,數(shù)據(jù)只能從實參單向傳遞給形參,稱為“按值”傳遞。也就是說,當簡單變量作為實參時,用戶不可能在函數(shù)中政變對應(yīng)實參的值。所以本題中在main()函數(shù)f(a)語句中結(jié)構(gòu)體實參a作為值,傳遞給函數(shù)f(Ac)中的形參c:這種值傳遞的方式不會對實參a產(chǎn)生任何影響,所以結(jié)構(gòu)體實參a的值不會發(fā)生變化。27、有以下程序,程序運行后的輸出結(jié)果是#includemain(){intx,y,z;x=y=1;z=x++,y++,++y;printf("%d,%d,%d\n",x,y,z);}A、2,3,1B、2,3,2C、2,3,3D、2,2,1標準答案:A知識點解析:在程序中,整型變量x、y的初值都為1,賦值語句“z=x++,y++,++y”右邊的“x++,y++,++y”是一個逗號表達式,所以逗號表達式的值++y的值。執(zhí)行逗號表達式“x++,y++,++y”后,x的值為2,y的值為3,z取逗號表達式的值,為1。28、有以下程序#includemain()voidfun(char*c,intd){charb=’a’,a=’A’;{*c=*c+1;d=d+1;fun(&b,a);printf("%c,%c\n",b,a);printf("%c,%c,",*c,d);}}程序運行后的輸出結(jié)果是A、b,B,b,AB、b,B,B,AC、a,B,B,aD、a,B,a,B標準答案:A知識點解析:本題中fun函數(shù)的參數(shù)傳遞方式,形參c是傳地址,形參d是傳值,所以在主函數(shù)中,執(zhí)行fun時,把變量b的地址傳給了c,把a的值傳遞給了d,經(jīng)過運算,輸出的值為b,B。在主函數(shù)的輸出語句中,輸出變量b的值為b,變量a的值為A。29、下列選項中,能夠滿足“只要字符串s1等于字符串s2,則執(zhí)行ST”要求的是A、if(s1==s2)ST;B、if(strcpy(s1,s2)==1)ST;C、if(strcmp(s2,s1)==0)ST;D、if(s1-s2=0)ST;標準答案:C知識點解析:在C語言中要對兩個字符串的大小進行比較,就需要調(diào)用字符串比較函數(shù)strcmp(),如果這個函數(shù)的返回值等于0,說明兩個字符串相等。30、有以下程序#include<stdio.h>voidmain(){chars[]={"012xy"};inti,n=0;for(i=0;s[i]!=0:i++)if(s[i]>=’a’&&s[i]<=’Z’)n++;printf("%d\n",n);}程序運行后的輸出結(jié)果是A、0B、3C、5D、2標準答案:D知識點解析:這段程序的功能求出字符串s中字符在小寫字符a到z之間字符的個數(shù)。在程序中字符串s的值為“012xy”,所以在字符串s中符合要求的字符的個數(shù)等于2。31、有下列程序: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);}程序執(zhí)行后的輸出結(jié)果是A、20B、45C、36D、25標準答案:D知識點解析:本題在主函數(shù)中定義了一維整型數(shù)組t[]={1,2,3,4,5,6,7,8,9};然后在for循環(huán)語句中自變量i從0開始,每次自加2,執(zhí)行s+=*(t+i)語句,因為C語言規(guī)定數(shù)組名代表數(shù)組的首地址,也就是第一個元素的地址。因此*(t+i)代表數(shù)組的第i+1個元素。所以程序運行的結(jié)果是1+3+5+7+9_25,即變量s的值等于25。32、以下敘述中正確的是A、一條語句只能定義一個數(shù)組B、數(shù)組說明符的一對方括號中只能使用整型常量,而不能使用表達式C、每個數(shù)組包含一組具有同一類型的變量,這些變量在內(nèi)存中占有連續(xù)的存儲單元D、在引用數(shù)組元素時,下標表達式可以使用浮點數(shù)標準答案:C知識點解析:數(shù)組的定義格式:類型說明符數(shù)組名[整型常量表達式],…;可以同時定義多個類型相同的數(shù)組,之間以逗號分隔開,數(shù)組的類型表明了數(shù)組中元素的數(shù)據(jù)類型,數(shù)組中所有元素的類型相同,數(shù)組經(jīng)過定義以后就可使用,編譯程序?qū)ζ浞峙湟黄B續(xù)的存儲空間進行連續(xù)存儲。C語言中只能單個引用數(shù)組元素而不能一次引用整個數(shù)組。引用格式為:數(shù)組名[下標],引用元素時,需要注意下標只能為整型常量或整型表達式。33、設(shè)有定義doublea[10],*s=a;以下能夠代表數(shù)組元素a[3]的是A、(*s)[3]B、*s[3]C、*s+3D、*(s+3)標準答案:D知識點解析:語句*s=a,使用指針變量s指向一維數(shù)組a的首地址,所以*(s+3)表示的是引用數(shù)組a[3]。34、有以下程序#includevoidfun(char*p){++p;printf("%s\n",*p);)main(){char*a[]=("Morning","Afternoon","Evening","Night");fun(a);}程序的運行結(jié)果是A、fternoonB、MorningC、orningD、Afternoon標準答案:D知識點解析:在程序中,指針的指針變量a和p都是指向字符串的指針。執(zhí)行fun(a)語句時,p指向的是字符串數(shù)組a的第一個字符串“Morning”,p自加1之后,*p指向了字符串數(shù)組a的第2個字符串“Afternoon”。35、下面不屬于軟件需求分析階段主要工作的是A、需求變更申請B、需求分析C、需求評審D、需求獲取標準答案:A知識點解析:需求分析階段的工作可概括為4個方面:①需求獲取。②需求分析。③編寫需求規(guī)格說明書。④需求審評。36、有以下程序#include<stdio.h>#include<string.h>StructA{inta;charb[10];doublec;};structAf(structAt);main(){structAa={1001,"ZhangDa",1098.0};a=f(a);printf("%d,%s,%6.1f\n",a.a,a.b,a.c);}structAf(StructAt){t.a=1002;strcpy(t.b,"ChangRong");t.c=1202.0;returnt;}程序運行后的輸出結(jié)果是A、1002,ZhangDa,1202.0B、1002,ChangRong,1202.0C、1001,ChangRong,1098.0D、1001,ZhangDa,1098.0標準答案:B知識點解析:在主函數(shù)中定義結(jié)構(gòu)體A的變量a,并對其賦初值,再調(diào)用函數(shù)f(a),在函數(shù)f(a)中對結(jié)構(gòu)體變量a的各個成員重新進行了賦值操作,并把其值返回在屏幕上輸出。37、有以下程序:#includeintf(intx);main(){intn=1,m;m=f(f(f(n)));printf("%d\n",m);}intf(intx){returnx*2;}程序運行后的輸出結(jié)果是()。A、8B、2C、4D、1標準答案:A知識點解析:第一次調(diào)用m=f(f(f(1))),第二次為m=f(f(2)),第三次為m=f(4),即返回值為8。38、若有以下程序#includemain(){inti,j=0;chara[]="Howareyou!";for(i=0;a[i];i++)if(a[i]!=’’)a[j++]=a[i];a[j]=’\0’;printf("%s\n",a);}則程序的輸出結(jié)果是A、Hay!B、HowareyouC、Howareyou!D、Howareyou!標準答案:C知識點解析:主函數(shù)中首先定義字符數(shù)組a[]="Howareyou!";執(zhí)行for循環(huán)語句,語句if(a[i]!=’’)a[j++]=a[i];其功能是將字符數(shù)組中的空格去掉。因此C選項正確。39、以下敘述中正確的是A、語句inta[4][3]={{1,2},{4,5}};是錯誤的初始化形式B、語句inta[4][3]={1,2,4,5};是錯誤的初始化形式C、語句inta[][3]={1,2,4,5};是錯誤的初始化形式D、在邏輯上,可以把二維數(shù)組看成是一個具有行和列的表格或矩陣標準答案:D知識點解析:二維數(shù)組在初始化時,可以省略第1維,但是不可以省略第2維。可以為部分數(shù)組元素初始化。B選項、C選項和A選項內(nèi)的初始化都沒有錯誤。因此D選項正確40、有以下程序#includemain(){intk=5;while(--k)printf("%d",k-=3);printf("\n");}執(zhí)行后的輸出結(jié)果是A、1B、2C、4D、死循環(huán)標準答案:A知識點解析:--k先自減在使用,所以第一次判斷條件即為while(4),條件為真執(zhí)行打印k的值k=4-3,結(jié)果為1,第二次判斷條件即為while(0),條件為假,結(jié)束循環(huán),打印回車換行符。所以選擇A選項。國家二級C語言機試(選擇題)模擬試卷第3套一、選擇題(本題共25題,每題1.0分,共25分。)1、下列描述中正確的是A、一個邏輯數(shù)據(jù)結(jié)構(gòu)只能有一種存儲結(jié)構(gòu)B、數(shù)據(jù)的邏輯結(jié)構(gòu)屬于線性結(jié)構(gòu),存儲結(jié)構(gòu)屬于非線性結(jié)構(gòu)C、一個邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲結(jié)構(gòu),且各種存儲結(jié)構(gòu)不影響數(shù)據(jù)處理的效率D、一個邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲結(jié)構(gòu),且各種存儲結(jié)構(gòu)影響數(shù)據(jù)處理的效率標準答案:D知識點解析:數(shù)據(jù)的邏輯結(jié)構(gòu)是指數(shù)據(jù)集合中各數(shù)據(jù)元素之間所固有的邏輯關(guān)系;數(shù)據(jù)的存儲結(jié)構(gòu)是在對數(shù)據(jù)進行處理時,各數(shù)據(jù)元素在計算機中的存儲關(guān)系。數(shù)據(jù)的存儲結(jié)構(gòu)是指數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機中的表示,一種邏輯結(jié)構(gòu)可以表示成多種存儲結(jié)構(gòu);而采用不同的存儲結(jié)構(gòu),其數(shù)據(jù)處理的效率是不同的。2、某二叉樹共有12個結(jié)點,其中葉子結(jié)點只有1個。則該二叉樹的深度為(根結(jié)點在第1層)A、3B、6C、8D、12標準答案:D知識點解析:根據(jù)二叉樹的性質(zhì),度為0的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。題目中的二叉樹的葉子結(jié)點為1,因此度為2的結(jié)點的數(shù)目為0,故該二叉樹為12層,每層只有一個結(jié)點。3、下面對軟件測試描述錯誤的是()。A、嚴格執(zhí)行測試計劃,排除測試的隨意性B、隨機地選取測試數(shù)據(jù)C、軟件測試的目的是發(fā)現(xiàn)錯誤D、軟件測試是保證軟件質(zhì)量的重要手段標準答案:B知識點解析:軟件測試的準則如下:①所有測試都應(yīng)追溯到需求。②嚴格執(zhí)行測試計劃,排除測試的隨意性。③充分注意測試中的群集現(xiàn)象。④程序員應(yīng)避免檢查自己的程序。⑤窮舉測試不可能。⑥妥善保存測試計劃、測試用例、出錯統(tǒng)計和最終分析報告,為維護提供方便。4、設(shè)有定義:“l(fā)ongx=123450L;”,則以下能夠正確輸出變量x的是()。A、printf("x=%d\n",x);B、printf("x=%id\n",x);C、printf("x=%dL\n",x);D、printf("x=%ld\n",x);標準答案:D知識點解析:C語言規(guī)定,輸出long型數(shù)值的格式符為%ld。5、軟件詳細設(shè)計產(chǎn)生的圖如下,該圖是A、N-S圖B、PAD圖C、程序流程圖D、E-R圖標準答案:C知識點解析:本題考查程序流程圖的概念,流程圖直觀地描述了程序的具體步驟。6、若有以下程序main(){inta=6,b=0,c=0;for(;a&&(b=0);){b+=a;a-=c++;}printf(’’%d,%d,%d\n’’,a,b,c);}則程序的輸出結(jié)果是A、6,0,0B、5,6,0C、6,6,1D、5,6,1標準答案:C知識點解析:循環(huán)條件a&&(b=0),a非零同時b=0則執(zhí)行循環(huán)體,否則退出。循環(huán)體執(zhí)行一次,此時b=6,a=6,c=1。7、有以下程序:#include<stdio.h>#defineN3voidfun(inta[][N],intb[]){inti,j;for(i=0;i<=2;i++){intmax=a[i][0];for(j=i;j<=2;j++)if(max<a[i][j])max=a[i][j];b[i]=max;}}main(){intx[N][N]={1,2,3,4,5,6,7,8,9},y[N],i;fun(x,y);for(i=0;i<=2;i++){printf(″%d,″,y[i]);}printf(″\n″);}程序運行后的輸出結(jié)果是()。A、2,4,8,B、3,6,9,C、3,5,7,D、1,3,5,標準答案:B知識點解析:fun函數(shù)功能是把數(shù)組a的每一行的最大值賦給b,a的第一行的最大值是3,第二行的最大值是6,第三行的最大值是9,所以答案是3,6,9,。8、以下選項中合法的標識符是()。A、_11B、1-1C、1_1D、1__標準答案:A知識點解析:C語言規(guī)定,標識符由字母(A~Z,a~z)、數(shù)字(0~9)或者下劃線(_)組成,并且第一個字符必須為字母或者下劃線,答案選A。9、設(shè)有定義:intx=2;以下表達式中,值不為6的是A、2*x,x+=2B、x++,2*xC、x*=(1+x)D、x*=x+1標準答案:A知識點解析:本題考查逗號表達式。逗號表達式的求解過程是:先求解表達式1,再求解表達式2,整個逗號表達式的值是表達式2的值,因此,選項A)中值為4;選項B)中,值為6。選項C)中x*=x+1等價于x=x*(x+1),所以等于6;選項D)與選項C)等價,結(jié)果也為6。10、設(shè)有定義:intx[2][3];則以下關(guān)于二維數(shù)組X的敘述錯誤的是A、數(shù)組x可以看作是由x[0]和x[1]兩個元素組成的一維數(shù)組B、可以用x[0]=0;的形式為數(shù)組所有元素賦初值0C、元素x[0]可看作是由3個整型元素組成的一維數(shù)組D、x[0]和x[1]是數(shù)組名,分別代表一個地址常量標準答案:B知識點解析:二維數(shù)組的元素在內(nèi)存中占一系列連續(xù)的存儲單元。數(shù)組元素在內(nèi)存中的排列順序是先存放第0行的元素,再存放第1行的元素……稱這種存放順序為按行存放??梢园岩粋€二維數(shù)組看成是一個一維數(shù)組,每個數(shù)組元素又是包含有若干個元素的一維數(shù)組。另外在給二維數(shù)組賦初值時可以不用含花括號對。例如,inta[4][3]={1,2,4,5};在編譯時,系統(tǒng)將按a數(shù)組元素在內(nèi)存中排列的順序,將花括號內(nèi)的數(shù)據(jù)一一對應(yīng)地賦給各個元素,若數(shù)據(jù)不足,系統(tǒng)將給后面的元素自動補初值0。以上將給a數(shù)組第一行的元素和第二行的第一個元素依次賦予1、2、4、5,其他元素的初值都為0。11、以下關(guān)于宏的敘述中正確的是A、宏定義必須位于源程序中所有語句之前B、宏名必須用大寫字母表示C、宏調(diào)用比函數(shù)調(diào)用耗費時間D、宏替換沒有數(shù)據(jù)類型限制標準答案:D知識點解析:本題考查宏替換的規(guī)則。宏替換分為簡單的字符替換和帶參數(shù)的宏替換兩類。使用宏時應(yīng)注意以下幾點:①宏定義儀儀是符號替換,不是賦值語句,因此不做語法檢查;②為了區(qū)別程序中其他的標識符,宏名的定義通常用大寫字母,但不是必須用大寫:③雙引號中出現(xiàn)的宏名不替換;④使用宏定義可以嵌套,即后定義的宏中可以使用先定義的宏。12、以下敘述中正確的是A、不能用字符串常量對字符數(shù)組名進行整體賦值操作B、字符串常量’’Hello’’會被隱含處理成一個無名字符型數(shù)組,它有5個元素C、charstr[7]=’’string!’’;在語法上是合法的,運行也是安全的D、char*str;str=’’Hello’’;與charstr[];str=’’Hello’’;效果是一樣的標準答案:A知識點解析:字符數(shù)組僅僅可以采用定義時初始化以及輸入得到數(shù)據(jù),在程序其他部分不允許對其進行賦值。字符串常量中除了實際字符之外還有結(jié)束標志,選項B錯誤,而選項C中,沒有空間存放字符串結(jié)束標志,因此運行是不安全的。選項D中第一個str為指針,可以賦值,而后面的為數(shù)組,在程序中賦值出錯。13、程序段:intx=12;doubley=3.141593;printf("%d%8.6f",x,y);的輸出結(jié)果是A、123.141593B、123.141593C、12,3.141593D、123.1415930標準答案:A知識點解析:本題考查格式化輸出函數(shù)printf。在printf函數(shù)調(diào)用里面首先輸入整型變量x的值12,然后按照“%8.6f”格式輸出double類型變量y的值,“%8.6f”表示輸出8位,小數(shù)點后輸出6位。14、設(shè)有定義:doublea,b,c;若要求通過輸入分別給a、b、c輸入1、2、3,輸入形式如下(注:此處□代表一個空格)□□1.0□□2.0□□3.0則能進行正確輸入的語句是A、scanf("%1f%1f%1f’,a,b,c);B、scanf("%f%f%f’,&a,&b,&c);C、scanf("%1f%1f%1f’,&a,&b,&c);D、scanf("%5.11f%5.11f%5.1f",&a,&b,&c);標準答案:C知識點解析:輸入格式scanf(格式控制,輸入項1,輸入項2,…),其中在scanf。函數(shù)的格式字符前可以加入一個正整數(shù)指定輸入數(shù)據(jù)所占的寬度,但不可以用實數(shù)指定小數(shù)位的寬度。輸入double型數(shù)據(jù),格式控制必須用%1f。(或%1e)。否則。數(shù)據(jù)不能正確輸入。由于輸入是一個字符流,scanf函數(shù)從這個字符流中按照格式控制指定的格式解析出相應(yīng)數(shù)據(jù),送到指定地址的變量中。15、在數(shù)據(jù)庫設(shè)計中,將E-R圖轉(zhuǎn)換成關(guān)系數(shù)據(jù)模型的過程屬于A、邏輯設(shè)計階段B、需求分析階段C、概念設(shè)計階段D、物理設(shè)計階段標準答案:A知識點解析:數(shù)據(jù)庫的設(shè)計階段包括需要分析、概念設(shè)計、邏輯設(shè)計和物理設(shè)計,其中將E-R圖轉(zhuǎn)換成關(guān)系數(shù)據(jù)模型的過程屬于邏輯設(shè)計階段。16、以下結(jié)構(gòu)體類型說明和變量定義中正確的是A、typedefstruct{intn;charc;}REC;RECt1,t2;B、structREC;{intn;charc;};RECt1,t2;C、typedefstructREC;{intn=0;charc=’A’;}t1,t2;D、struct{intn;charc;}REC;RECt1,t2;標準答案:A知識點解析:定義結(jié)構(gòu)體類型的一般形式為:struct結(jié)構(gòu)體名{成員列:表};struct結(jié)構(gòu)體名后不能加“;”號,所以選項B)、C)錯誤,選項D)中定義無名稱的結(jié)構(gòu)體類型同時定義結(jié)構(gòu)體變量形式應(yīng)為structt1,t2;選項A)為用戶自定義類型,其為正確的定義形式。17、有三個關(guān)系R,S和T如下圖所示:則由關(guān)系R和S得到關(guān)系T的運算是A、并B、投影C、交D、選擇標準答案:A知識點解析:關(guān)系并運算是指,設(shè)有兩個關(guān)系R和S,它們具有相同的結(jié)構(gòu)。R和S的并是由屬于R或?qū)儆赟的元組組成的集合。所以對于本題關(guān)系R和S具有相同的結(jié)構(gòu),并且關(guān)系T的元組是由屬于R或?qū)儆赟的元組組成的集合。因此選項A正確。18、以下關(guān)于函數(shù)的敘述中正確的是A、每個函數(shù)都可以被其他函數(shù)調(diào)用(包括main函數(shù))B、每個函數(shù)都可以被單獨編譯C、每個函數(shù)都可以單獨運行D、在一個函數(shù)內(nèi)部可以定義另一個函數(shù)標準答案:B知識點解析:本題主要考查函數(shù)的定義和使用。選項A)錯誤,main函數(shù)可以調(diào)用其他函數(shù),但是其他函數(shù)不能調(diào)用main函數(shù);選項B)正確;選項C)錯誤,只有main函數(shù)可以單獨運行,其他函數(shù)只能被調(diào)用;選項D)錯誤,C語言中不能在函數(shù)內(nèi)部定義函數(shù)。19、若有以下程序typedefstructstu{charname[10],gender;intscore;}STU;voidf(STUa,STUb){b=a:printff("%s,%c,%d,",b.name,b.gender,b.score);}main(){STUa={"Zhao",’m’,290},b=["Qian",’f’,350};f(a,b);printf("%s,%c,%d\n",b.name,b.gender,b.score);}則程序的輸出結(jié)果是A、Zhao,m,290,Zhao,m,290B、Zhao,m,290,Qian,f,350C、Qian,f,i350,Qian,f,350D、Zhao,m,290,Zhao,f,350標準答案:B知識點解析:函數(shù)f(STUa,STUb)的主要功能是為把結(jié)構(gòu)體變量a的值存放到b中,然后輸出b中各個成員的值。主函數(shù)中調(diào)用函數(shù)f(a,b),輸出賦值以后b的數(shù)據(jù),實際為a{"Zhao",’m’,290}的數(shù)據(jù),函數(shù)調(diào)用結(jié)束,形參a和b撤銷,流程到主函數(shù)輸出b{"Qian",’f’,350}的數(shù)據(jù)。20、有以下程序main(){inta=1,b=2,c=3,d=0;if(a==1&&b++==2)if(b!=2||c--!=3)printf("%d,%d,%d\n",a,b,c);elseprintf("%d,%d,%d\n",a,b,c);elseprintf("%d,%d,%d\n",a,b,c);}程序運行后的輸出結(jié)果是A、1,3,2B、1,2,3C、1,3,3D、3,2,1標準答案:C知識點解析:a,b,c,d初始值分別為1,2,3,0。嵌套的if語句中,第一個if中,表達式a==1&&b++==2值為1,執(zhí)行嵌套的if分支,此時b=3,b!=2成立,由于運算符是||,不管后面一個表達式的值是不是1,其整個表達式的值總是1,c--!=3表達式不執(zhí)行,最后打印出a,b,c的值是1,3,3。21、有以下程序#includevoidfun(char*c,intd){*c=*c+1;d=d+1;printf("%c,%c,",*c,d);}main(){charb=’a’,a=’A’;fun(&b,a);printf("%c,%c\n",b,a);}程序運行后的輸出結(jié)果是()。A、b,B,b,AB、b,B,B,AC、a,B,B,aD、a,B,a,B標準答案:A知識點解析:計算字符常量時一般使用其ASCII碼進行運算?!痑’+1=’b’,fun()中的第一個參數(shù)為地址傳參,形參的變化會影響實參的變化,所以兩次輸出的b值都為字符’b’;第二個參數(shù)為值傳參,形參變化不會影響實參,所以在函數(shù)fun()體內(nèi)輸出字符’B’,函數(shù)fun()體外輸出結(jié)果為字符’A’,所以答案選A。22、有下列程序:#includemain(){FILE*fp;inta[10]={1,2,3},i,n;fp=fopen("d1.dat","w");for(i=0;i<3;i++)fprintf(fp,"%d",a[i]);fprintf(fp,"\n");fclose(fp);fp=open("d1.dat","r");fscanf(fp,"%d",&n);fclose(fp);printf("%d\n",n);}程序的運行結(jié)果是A、12300B、123C、1D、321標準答案:B知識點解析:本題考查以讀和寫的方式打開文件對文件內(nèi)容操作的不同,fp=fopen("d1.dat","w");以可寫的方式為輸出建立新文本文件,調(diào)用printf,輸出“123”,fp=fopen("d1,dat","r");以只讀的方式打開文本文件,不能對文件內(nèi)容進行操作。23、有以下程序#includemain(){inti,x[3][3]={1,2,3,4,5,6,7,8,9};for(i=0;i<3;i++)printf("%d",x[i][2-i]);printf("\n");}程序的輸出結(jié)果是A、1、5、0B、3、5、7C、1、4、7D、3、6、9標準答案:B知識點解析:程序首先初始化二維數(shù)組x[3][3],然后通過3次for循環(huán),輸出x[0][2]、x[1][1]和x[2][0]的值,即3、5、7。因此B選項正確。24、在數(shù)據(jù)管理技術(shù)發(fā)展的三個階段中,數(shù)據(jù)共享最好的是()。A、人工管理階段B、文件系統(tǒng)階段C、數(shù)據(jù)庫系統(tǒng)階段D、三個階段相同標準答案:C知識點解析:數(shù)據(jù)管理發(fā)展至今已經(jīng)歷了三個階段:人工管理階段、文件系統(tǒng)階段和數(shù)據(jù)庫系統(tǒng)階段。其中最后一個階段結(jié)構(gòu)簡單,使用方便邏輯性強物理性少,在各方面的表現(xiàn)都最好,一直占據(jù)數(shù)據(jù)庫領(lǐng)域的主導(dǎo)地位,所以選擇C)。25、下列條件語句中,輸出結(jié)果與其他語句不同的是A、if(a!=0)printf("%d\n",x);elseprintf("%d\n",y);B、if(a==0)printf("%d\n",y);elseprintf("%d\n",x);C、if(a==0)printf("%d\n",x);elseprintf("%d\n",y);D、if(a)printf("%d\n",x);elseprintf("%d\n",y);標準答案:C知識點解析:A,B,D選項的含義均為:a的值如果為0時打印y的值,否則打印x的值。但是C選項的含義是:a的值為0時打印x的值,不為0時打印y的值,與其他選項正好相反。國家二級C語言機試(選擇題)模擬試卷第4套一、選擇題(本題共25題,每題1.0分,共25分。)1、以下敘述中錯誤的是A、C程序經(jīng)過編譯、連接步驟之后才能形成一個真正可執(zhí)行的二進制機器指令文件B、用C語言編寫的程序稱為源程序,它以ASCII代碼形式存放在一個文本文件中C、C語言中的每條可執(zhí)行語句和非執(zhí)行語句最終都將被轉(zhuǎn)換成二進制的機器指令D、C語言源程序經(jīng)編譯后生成后綴為.obj的目標程序標準答案:C知識點解析:C語言中的非執(zhí)行語句例如宏定義命令,在預(yù)編譯之后替換到代碼中,該命令本身也就不存在了,不會轉(zhuǎn)換成二進制的機器指令。由高級語言編寫的程序稱為“源程序”,把由二進制代碼表示的程序稱為“目標程序”。C語言編寫的源程序就是一ASCII的形式存放在文本文件中的。C源程序經(jīng)過C編譯程序編譯之后生成一個后綴為.obj的二進制文件(稱為目標文件),然后由稱為“連接程序”(Link)的軟件,把此.obj文件與c語言提供的各種庫函數(shù)連接起采生成一個后綴為.EXE的可執(zhí)行文件。2、下列敘述中正確的是A、棧是一種先進先出的線性表B、隊列是一種后進先出的線性表C、棧與隊列都是非線性結(jié)構(gòu)D、棧與隊列都是線性結(jié)構(gòu)標準答案:D知識點解析:棧是先進后出,隊列是先進先出。棧和隊列都是一種線性表,屬于線性結(jié)構(gòu)。3、某二叉樹中有n個度為2的結(jié)點,則該二叉樹中的葉子結(jié)點數(shù)為A、n+1B、n-1C、2nD、n/2標準答案:A知識點解析:在任意一棵二叉樹中,度為0的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。所以該二叉樹的葉子結(jié)點數(shù)等于n+1。4、某二叉樹有5個度為2的結(jié)點,則該二叉樹中的葉子結(jié)點數(shù)是A、10B、8C、6D、4標準答案:C知識點解析:根據(jù)二叉樹的性質(zhì),在任意二叉樹中,度為0的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。5、以下選項中能表示合法常量的是A、’\007’’B、1.5E2.0C、’\’D、1.2標準答案:A知識點解析:選項D,1200中間不能有逗號,否則編譯時會認為是1或出錯。選項B,2.0

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論