版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
國家二級C語言機(jī)試(選擇題)模擬試卷38(共9套)(共225題)國家二級C語言機(jī)試(選擇題)模擬試卷第1套一、選擇題(本題共25題,每題1.0分,共25分。)1、線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)與順序存儲(chǔ)結(jié)構(gòu)相比,鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)的優(yōu)點(diǎn)有()。A、節(jié)省存儲(chǔ)空間B、插入與刪除運(yùn)算效率高C、便于查找D、排序時(shí)減少元素的比較次數(shù)標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:線性表的順序存儲(chǔ)結(jié)構(gòu)稱為順序表,線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)稱為鏈表,兩者的優(yōu)缺點(diǎn)如下表所示。2、某二叉樹有5個(gè)度為2的結(jié)點(diǎn),則該二叉樹中的葉子結(jié)點(diǎn)數(shù)是A、10B、8C、6D、4標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:根據(jù)二叉樹的性質(zhì),在任意二叉樹中,度為0的結(jié)點(diǎn)(即葉子結(jié)點(diǎn))總是比度為2的結(jié)點(diǎn)多一個(gè)。3、有以下程序:#includemain(){charch=’Z’;ch=(ch一’A’+1)%26+’A’;putchar(ch);prinff(“\n”);}程序的運(yùn)行結(jié)果是()。A、ZB、YC、BD、A標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:z的ASCII碼是90,A的AScII碼是65,所以ch=(ch一’A’+1)%26+’A’=26%26+65=65,65對應(yīng)的字符即A。4、兩個(gè)或兩個(gè)以上的模塊之間關(guān)聯(lián)的緊密程度稱為()。A、耦合度B、內(nèi)聚度C、復(fù)雜度D、連接度標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:耦合度是模塊間互相連接的緊密程度的度量;內(nèi)聚度是一個(gè)模塊內(nèi)部各個(gè)元素間彼此結(jié)合的緊密程度的度量。5、下列各排序法中,最壞情況下的時(shí)間復(fù)雜度最低的是A、堆排序B、快速排序C、希爾排序D、冒泡排序標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:堆排序法,最壞情況需要O(nlog2n)次比較。相比以上幾種“除希爾排序法外”,堆排序法的時(shí)間復(fù)雜度最小,故選項(xiàng)A正確。6、某二叉樹共有7個(gè)結(jié)點(diǎn),其中葉子結(jié)點(diǎn)只有1個(gè),則該二叉樹的深度為(假設(shè)根結(jié)點(diǎn)在第1層)()。A、3B、4C、6D、7標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:根據(jù)二叉樹的基本性質(zhì):在任意一棵二叉樹中,度為0的葉子結(jié)點(diǎn)總比度為2的結(jié)點(diǎn)多一個(gè),因此本題中度為2的結(jié)點(diǎn)為1—1=0個(gè),據(jù)此可以知道本題中的二叉樹的每一個(gè)結(jié)點(diǎn)都有一個(gè)分支,所以共有7個(gè)結(jié)點(diǎn)、共7層,即深度為7,選擇D。7、下列關(guān)于軟件工程的描述中正確的是A、軟件工程只是解決軟件項(xiàng)目的管理問題B、軟件工程主要解決軟件產(chǎn)品的生產(chǎn)率問題C、軟件工程的主要思想是強(qiáng)調(diào)在軟件開發(fā)過程中需要應(yīng)用工程化原則D、軟件工程只是解決軟件開發(fā)中的技術(shù)問題標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:軟件工程是建立并使用充善的工程化原則,以較經(jīng)濟(jì)的手段獲得能在實(shí)際機(jī)器上有效運(yùn)行的可靠軟件的一系列方法。軟件工程主要思想是強(qiáng)調(diào)在軟件開發(fā)過程中需要應(yīng)用工程化原則。8、若有定義語句:inta,b,c,*p=&c;,接著執(zhí)行以下選項(xiàng)中的語句,則能正確執(zhí)行的語句是()。A、scanf(’’%d’’,a,b,c);B、scanf(’’%d%d%d’’,a,b,c);C、scanf(’’%d’’,p);D、scanf(’’%d’’,&p);標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:本題重點(diǎn)考查的知識(shí)點(diǎn)是標(biāo)準(zhǔn)輸入函數(shù)scanf()。scanf()函數(shù)要求,除了第一個(gè)參數(shù)為格式化字符串以外,其余參數(shù)均為相應(yīng)變量的地址值。本題中,只有p是地址值,因此C選項(xiàng)正確。9、有以下程序:#includevoidfun(char*t,char*s){while(*t!=0)t++;while((*t++=*s++)!=0);}main(){char85[10]=“acc”,aa[10]=“bbxxyy”;fun(ss,aa);prinff(“%s,%s\n”,ss,aa);}程序的運(yùn)行結(jié)果是()。A、ace,bbxxyyB、accbbxxyy,bbxxyyC、accxxyy,bbxxyyD、accxyy,bbxxyy標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題重點(diǎn)考查while循環(huán)語句的簡單應(yīng)用。在函數(shù)fun()中,前一個(gè)while循環(huán)的作用是:如果形參指針t所指內(nèi)容不為0,則讓t增1,直到它指向0。后一個(gè)while循環(huán)的作用是:將s所指內(nèi)容賦給t所指地址,然后兩者同時(shí)增1,直到賦給t的內(nèi)容為0。由此可見,函數(shù)fun()的作用就是將形參s所指字符串連接到形參t所指字符串末尾,相當(dāng)于庫函數(shù)中的streat()。主函數(shù)中使用fun()將數(shù)組aa中的字符串連接到了數(shù)組ss中原有字符串之后,所以執(zhí)行完后,ss中的字符串為“aeebbxxyy”。程序最后輸出的結(jié)果是:accbbxxyy,bbxxyy,因此B選項(xiàng)正確。10、軟件測試的目的是A、評估軟件可靠性B、發(fā)現(xiàn)并改正程序中的錯(cuò)誤C、改正程序中的錯(cuò)誤D、發(fā)現(xiàn)程序中的錯(cuò)誤標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:軟件測試的目的是為了發(fā)現(xiàn)程序中的錯(cuò)誤,而軟件調(diào)試是為了更正程序中的錯(cuò)誤。11、數(shù)據(jù)獨(dú)立性是數(shù)據(jù)庫技術(shù)的重要特點(diǎn)之一,所謂數(shù)據(jù)獨(dú)立性是指A、數(shù)據(jù)與程序獨(dú)立存放B、不同的數(shù)據(jù)被存放在不同的文件中C、不同的數(shù)據(jù)只能被對應(yīng)的應(yīng)用程序所使用D、以上三種說法都不對標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:數(shù)據(jù)獨(dú)立性是指數(shù)據(jù)庫中數(shù)據(jù)獨(dú)立于應(yīng)用程守而不依賴于應(yīng)用程序,即數(shù)據(jù)與程序問的互不依賴性。也就是說數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)與俘取方式的改變不會(huì)影響應(yīng)用程序。數(shù)據(jù)的獨(dú)立性包括物理獨(dú)立性和邏輯獨(dú)立性兩級。①物理獨(dú)立性:數(shù)據(jù)的物理結(jié)構(gòu)(包括存儲(chǔ)結(jié)構(gòu)、存取方式等)的改變,如存儲(chǔ)設(shè)備的更換、物理存儲(chǔ)的更換、存取方式改變等都不影響數(shù)據(jù)庫的邏輯結(jié)構(gòu),從而不致引起應(yīng)用程序的變化。②邏輯獨(dú)立性:數(shù)據(jù)庫總體邏輯結(jié)構(gòu)的改變,如修改數(shù)據(jù)模式、增加新的數(shù)據(jù)類犁、改變數(shù)掘問聯(lián)系等,不需要相應(yīng)的應(yīng)用程序改變,這就是數(shù)據(jù)的邏輯獨(dú)立性。12、以下敘述中正確的是A、標(biāo)識(shí)符的長度不能任意長,最多只能包含16個(gè)字符B、語言中的關(guān)鍵字不能作變量名,但可以作為函數(shù)名C、用戶自定義的標(biāo)識(shí)符必須“見名知義”,如果隨意定義,則會(huì)出編譯錯(cuò)誤D、標(biāo)識(shí)符總是由字母、數(shù)字和下劃線組成,且第一個(gè)字符不得為數(shù)字標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:標(biāo)識(shí)符就是C語言中的變量名、函數(shù)名、數(shù)組名、文件名、類型名等。C語言合法標(biāo)識(shí)符的命名規(guī)則是:①標(biāo)識(shí)符由字母、數(shù)字和下劃線組成;②第一個(gè)字符必須為字母或下劃線;⑨大寫字母與小寫字母被認(rèn)為是兩個(gè)不同的字符;④C語言規(guī)定了一個(gè)標(biāo)識(shí)符允許的字符個(gè)數(shù),為32,超過的字符將不被識(shí)別。C語言的標(biāo)識(shí)符可分為以下3類:①關(guān)鍵字,不能用于為自定義標(biāo)識(shí)符命名。②預(yù)定義標(biāo)識(shí)符。③用戶標(biāo)識(shí)符。由用戶根據(jù)需要定義的標(biāo)識(shí)符稱為用戶標(biāo)識(shí)符,又稱自定義標(biāo)識(shí)符,一般用來給變量、函數(shù)、數(shù)組等命名,一般做到見名知義,但是沒有特殊規(guī)定。13、以下能正確定義字符串的語句是A、charstr="\x43":B、charstr[]="\0";C、charstr=";D、charstr[]={’\064’};標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:字符串常量是用一對雙括號(hào)括起來的一串字符。它用字符數(shù)組來存放,不用一對大括號(hào)對括起來。14、若有定義和語句:inta,b;scanf("%d,%d,",&a,&B);以下選項(xiàng)中的輸入數(shù)據(jù),不能把值3賦給變量a、5賦給變量b的是A、3,5B、3,5,C、3,5D、3,5,4標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:在格式控制字符串中插入其他字符,則在輸入的時(shí)候應(yīng)該據(jù)實(shí)加入到輸入流中,不能隨意加入空格等,否則無法得到正確的輸入結(jié)果。15、有以下程序#includemain(){inta=1,b=3,c=5;int*p1=&a,*p2=&b,*p=&c;*p=*p1*(*p2);printf("%d\n",c);}執(zhí)行后的輸出結(jié)果是A、1B、2C、3D、4標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:該程序中int*p1=&a,*p2=&b,*p=&c;指定義三個(gè)指針變量,并賦值,即使p1指向a;p2指向b;p指向c。*p=*p1*(*p2);該條語句是給p所指的存儲(chǔ)單元c賦值,就是p1所指的存儲(chǔ)單元的值,即a的值,與p2所指的存儲(chǔ)單元b的值相乘,也就是c=a*b,等價(jià)于c=1*3=3;因此C選項(xiàng)正確。16、設(shè)有定義語句:char*aa[2]={"abcd","ABCD"};則以下敘述正確的是A、aa數(shù)組的兩個(gè)元素只能存放含有4個(gè)字符的一維數(shù)組的首地址B、aa數(shù)組的值分別是字符串"abcd"和"ABCD"C、aa是指針變量,它指向含有兩個(gè)元素的字符型數(shù)組D、aa[0]存放了字符串"abcd"的首地址標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:題目中char*aa[2],定義了指針數(shù)組aa,有兩個(gè)元素,aa[0]存放"abcd".地址,而aa[1]存放"ABCD"地址。17、若變量已正確定義并賦值,以下不能構(gòu)成C語句的選項(xiàng)是A、B++;B、A=a+b;C、a=a+bD、A?a:b;標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:C語言規(guī)定,C語句必須以分號(hào)";"結(jié)束,C選項(xiàng)中沒有結(jié)束符號(hào),所以錯(cuò)誤。18、有以下程序#includemain(){intn,*p=NULL;*p=&n;printf("Inputn:");scanf("%d",&p);printf("outputn:");printf("%d\n",p);}該程序試圖通過指針P為變量n讀入數(shù)據(jù)并輸出,但程序有多處錯(cuò)誤,以下語句正確的是A、intn,*p=NULL;B、*p=&n;C、scanf("%d",&p)D、printf("%d\n",p);標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:選項(xiàng)A表示在程序中,聲明定義變量語句“intn,*p=NULL;”定義了整型變量n和指針變量p,并且指針變量p初始化為空。其他的語句都是錯(cuò)誤的。其中選項(xiàng)B,&n的地址應(yīng)存放到指針變量p中,而選項(xiàng)C中數(shù)據(jù)輸入項(xiàng)錯(cuò)誤,選項(xiàng)D輸出地址信息。19、以下選項(xiàng)中有語法錯(cuò)誤的是A、charstr[3][10];str[1]="guest";B、charstr[][10]={"guest"};C、char*str[3];str[1]="guest";D、char*str[]={"guest"};標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題考查字符數(shù)組的定義和使用。選項(xiàng)A定義了一個(gè)二維字符數(shù)組,第二句是直接給字符數(shù)組賦值錯(cuò)誤,C語言中不能直接給字符數(shù)組賦值;選項(xiàng)B、C)和D)都是正確的。20、C語言程序中,運(yùn)算對象必須是整型數(shù)的運(yùn)算符是A、&&B、/C、%D、*標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:%取余運(yùn)算是二目運(yùn)算符,且要求運(yùn)算對象必須為整數(shù),所以選C。21、有以下程序#include<stdio.h>#defineS(x)4*(x)*x+1voidmain(){intk=5,j=2;printf("%d\n",S(k+j));}程序運(yùn)行后的輸出結(jié)果是A、197B、143C、33D、28標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:這道題涉及到帶參數(shù)的宏的定義和替換這個(gè)知識(shí)點(diǎn)。在程序中定義了帶參數(shù)的宏S(x),當(dāng)在主函數(shù)中用參數(shù)k+j調(diào)用宏S時(shí),根據(jù)宏替換的原則,則S(k+j)=S(5+2)=4*7*5+2+1=143。22、有以下程序#include#defineS(x)x/xmain(){intk=5,j=2;printf("%d,%d\n",S(k+j),S(j+k));}程序的運(yùn)行結(jié)果是()。A、7,9B、1,1C、7,7D、9,9標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:宏替換是使用宏名代替一個(gè)字符串,是一種機(jī)械、簡單的置換,所以表達(dá)式S(k+j)=k+j/k+j=5+2/5+2=7,S(j+k)=j+k/j+k=2+5/2+5=9,答案選A。23、若有以下程序main(){intc;c=13|5;printf("%d\n",c);}則程序的輸出結(jié)果是A、15B、18C、13D、5標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:按位或(|)的運(yùn)算規(guī)則是:參加運(yùn)算的兩個(gè)運(yùn)算數(shù)中,只要兩個(gè)相應(yīng)的二進(jìn)制位中一個(gè)為1,則該位的運(yùn)算結(jié)果即為1;只有當(dāng)兩個(gè)相應(yīng)位的數(shù)都為0時(shí),該位的運(yùn)算結(jié)果才為0。13的二進(jìn)制位1101,5的二進(jìn)制位0101,或運(yùn)算的結(jié)果為1101,因此值為13。24、以下敘述中正確的是A、在scanf函數(shù)的格式串中,必須有與輸入項(xiàng)一一對應(yīng)的格式轉(zhuǎn)換說明符B、只能在printf函數(shù)中指定輸入數(shù)據(jù)的寬度,而不能在scanf函數(shù)中指定輸入數(shù)據(jù)占的寬度C、scanf函數(shù)中的字符串,是提示程序員的,輸入數(shù)據(jù)時(shí)不必管它D、復(fù)合語句也被稱為語句塊,它至少要包含兩條語句標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:在printf和scanf函數(shù)中都可以指定數(shù)據(jù)的寬度,所以B錯(cuò)誤,scanf()的格式控制串可以使用其他非空白字符,如逗號(hào),但在輸入時(shí)必須輸入這些字符,以保證匹配,所以C錯(cuò)誤?復(fù)合語句可以由任意多條語句構(gòu)成,可以使一條也可以沒有,所以D錯(cuò)誤。25、結(jié)構(gòu)化程序設(shè)計(jì)中,下面對goto語句使用描述正確的是A、禁止使用goto語句B、使用goto語句程序效率高C、應(yīng)避免濫用goto語句D、以上說法均錯(cuò)誤標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:結(jié)構(gòu)化程序設(shè)計(jì)中,要注意盡量避免goto語句的使用,故選C。國家二級C語言機(jī)試(選擇題)模擬試卷第2套一、選擇題(本題共25題,每題1.0分,共25分。)1、以下描述中,不是線性表順序存儲(chǔ)結(jié)構(gòu)特征的是()。A、可隨機(jī)訪問B、需要連續(xù)的存儲(chǔ)空間C、不便于插入和刪除D、邏輯相鄰的數(shù)據(jù)物理位置上不相鄰標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:線性表的順序存儲(chǔ)是用一片連續(xù)的空間來存放數(shù)據(jù)元素,其特點(diǎn)是邏輯上相鄰的元素在物理位置上也相鄰。數(shù)據(jù)元素之間邏輯上的先后關(guān)系自動(dòng)隱含在物理位置的相鄰元素之中,因此不需要另外開辟空間來保存元素之間的關(guān)系。2、下面描述中,不屬于軟件危機(jī)表現(xiàn)的是A、軟件過程不規(guī)范B、軟件開發(fā)生產(chǎn)率低C、軟件質(zhì)量難以控制D、軟件成本不斷提高標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:軟件危機(jī)主要表現(xiàn)在以下6個(gè)方面:①軟件需求的增長得不到滿足:②軟件開發(fā)成本和進(jìn)度無法控制;③軟件質(zhì)量難以保證;④軟件不可維護(hù)或維護(hù)程度非常低:⑤軟件的成本不斷提高;⑥軟件開發(fā)生產(chǎn)率的提高趕不上硬件的發(fā)展和應(yīng)用需求的增長。3、對關(guān)系S和關(guān)系R進(jìn)行集合運(yùn)算,結(jié)果中既包含關(guān)系S中的所有元組也包含關(guān)系R中的所有元組,這樣的集合運(yùn)算稱為()。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)系中的所有元組。4、代碼編寫階段可進(jìn)行的軟件測試是A、單元測試B、集成測試C、確認(rèn)測試D、系統(tǒng)測試標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:單元測試是對軟件組成單元進(jìn)行測試,其目的是檢驗(yàn)軟件基本組成單位的正確性,測試的對象是軟件設(shè)計(jì)的最小單位是模塊,可在代碼編寫階段測試。集成測試也稱聯(lián)合測試,將程序模塊采用適當(dāng)?shù)募刹呗越M裝起來,對系統(tǒng)的接口及集成后的功。系統(tǒng)測試主要包括功能測試、界面測試、可靠性測試、易用性測試、性能測試。功能測試主要針對包括功能可用性、功能實(shí)現(xiàn)程度(功能流程&業(yè)務(wù)流程、數(shù)據(jù)處理&業(yè)務(wù)數(shù)據(jù)處理)方面測試。5、下列關(guān)系表達(dá)式中,結(jié)果為“假”的是()。A、(3+4)>6B、(31=4)>2C、3<=4‖3D、(3<4)=1標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:在一個(gè)表達(dá)式中,括號(hào)的優(yōu)先級高,先計(jì)算3!=4,為真即1,1>2為假。6、以下程序的輸出結(jié)果是()。main(){intx=1,y=0;if(!x)y++;elseif(x==0)if(x)y+=2;elsey+=3;printf(’’%d\n’’,y);}A、一1B、0C、1D、2標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:如果不滿足if語句的條件,函數(shù)將不執(zhí)行本題中x=1,if和elseif的條件都不滿足,故y值不改變輸出。7、以下不合法的字符常量是A、\’B、’\\’C、’\018’D、’\xcc’標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:在C語言中,一個(gè)字符常量代表ASCⅡ字符集中的一個(gè)字符,在程序中用單引號(hào)把一個(gè)字符括起來用為字符常量。轉(zhuǎn)義字符常量也是必須括在一對單引號(hào)內(nèi),以一個(gè)反斜線開頭后跟一個(gè)特定的字符,用來代表菜一個(gè)特定的ASCII字符。在選項(xiàng)C)中,’\018’是用八進(jìn)制數(shù)來代表一個(gè)字符常量,所以其中的數(shù)字只能小于8,并不包括8。8、在數(shù)據(jù)庫中,數(shù)據(jù)模型包括數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和A、查詢B、數(shù)據(jù)類型C、關(guān)系運(yùn)算D、數(shù)據(jù)約束標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:在數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)模型有三個(gè)要素:數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和數(shù)據(jù)的約束條件。其中數(shù)據(jù)的約束條件包括三種:實(shí)體完整性約束條件、參照完整性約束條件和用戶定義的完整性約束條件。因此選項(xiàng)D正確。9、若有定義typedefcharT[10];T*a;上述定義中a的類型與下面選項(xiàng)中完全相同的是A、char(*a)[10];B、char*a;C、chara[10];D、char*a[10];標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:題目中利用typedef定義了字符數(shù)組類型T,而后定義了該類型的指針a,因此a為指針數(shù)組。10、有以下結(jié)構(gòu)體說明、變量定義和賦值語句structSTD{charname[10];intage;charsex;}s[5],*ps;ps=&s[0];則以下scanf函數(shù)調(diào)用語句有錯(cuò)誤的是A、scanf("%d",&s[0].a(chǎn)ge);B、scanf("%c",&(ps->sex));C、scanf("%s",s[0].name);D、scanf("%d",ps->age);標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:程序段定義了結(jié)構(gòu)體變量數(shù)組s[5]和指針變量ps,然后ps指向數(shù)組s[5]中的第一個(gè)元素,因而ps->age引用s[0].a(chǎn)ge。因?yàn)樵谳斎雜canf()函數(shù)中,第2個(gè)參數(shù)應(yīng)該表示為地址變量,而選項(xiàng)A)表示的值,而不是一個(gè)地址值。11、以下敘述中正確的是A、函數(shù)既可以直接調(diào)用自己,也可以間接調(diào)用自己B、任何情況下都不能用函數(shù)名作為實(shí)參C、函數(shù)的遞歸調(diào)用不需要額外開銷,所以效率很高D、簡單遞歸不需要明確的結(jié)束遞歸的條件標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:一個(gè)C語言源程序可以由一個(gè)或多個(gè)源文件組成,每個(gè)源文件可由一個(gè)或多個(gè)函數(shù)組成,各函數(shù)之間是平行的,除了主函數(shù)外,函數(shù)之間可以相互調(diào)用,甚至C語言中的函數(shù)可以直接或間接地自己調(diào)用自己,稱之為遞歸調(diào)用,該調(diào)用主要用于把要解決的問題轉(zhuǎn)化為一個(gè)新的問題,而這個(gè)新問題的解決方法仍與原來的解法相同,只是所處理的對象有規(guī)律地涕增或遞減,可以應(yīng)用這個(gè)轉(zhuǎn)化過程使問題得到解決,同時(shí)為了有效使用遞歸調(diào)用必定要有一個(gè)明確的結(jié)束遞歸的條件。而每次進(jìn)行遞歸調(diào)用時(shí)候,需要利用棧保存現(xiàn)場信息,因此并不會(huì)提高效率,選項(xiàng)C)和選項(xiàng)D)不正確。函數(shù)名表名了函數(shù)的入口地址,如果函數(shù)的形參為指向函數(shù)的指針變量,那么對應(yīng)的實(shí)參必須為函數(shù)名,因此函數(shù)名可以為函數(shù)的參數(shù),選項(xiàng)B)錯(cuò)誤。12、以下敘述中錯(cuò)誤的是A、函數(shù)的返回值類型不能是結(jié)構(gòu)體類型,只能是簡單類型B、只要類型相同,結(jié)構(gòu)體變量之間可以整體賦值C、可以通過指針變量來訪問結(jié)構(gòu)體變量的任何成員D、函數(shù)可以返回指向結(jié)構(gòu)體變量的指針標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:函數(shù)的返回值類型可以是結(jié)構(gòu)體類型。結(jié)構(gòu)體變量之間可以相互復(fù)制。13、以下敘述中正確的是()。A、每個(gè)數(shù)組包含一組具有同一類型的變量,這些變量在內(nèi)存中占有連續(xù)的存儲(chǔ)單元B、一條語句只能定義一個(gè)數(shù)組C、數(shù)組說明符的一對方括號(hào)中只能使用整型常量,而不能使用表達(dá)式D、在引用數(shù)組元素時(shí),下標(biāo)表達(dá)式可以使用浮點(diǎn)數(shù)標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:同類元素的集合稱為數(shù)組,數(shù)組元素在內(nèi)存中占據(jù)連續(xù)的存儲(chǔ)空間,答案A)正確。在使用逗號(hào)運(yùn)算符的情況下,一條語句可以定義多個(gè)數(shù)組,選項(xiàng)B)錯(cuò)。方括號(hào)中可以為整型變量或者常量表達(dá)式,選項(xiàng)C)錯(cuò)。數(shù)組元素在數(shù)組中的下標(biāo)為整型常量或者變量構(gòu)成的整型表達(dá)式,不能為浮點(diǎn)數(shù),選項(xiàng)D)錯(cuò)。答案選A)。14、若變量已正確定義,有以下程序段i=0;doprintf("%d,",i);while(i++);printf("%d\n",i);其輸出結(jié)果是A、0,0B、1,1C、0,1D、程序進(jìn)入無限循環(huán)標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:do…while循環(huán)的執(zhí)行過程如下:①執(zhí)行do后面的循環(huán)體中的語句。②計(jì)算while后一對圓括號(hào)中表達(dá)式的值。當(dāng)值為非0時(shí),轉(zhuǎn)去執(zhí)行步驟①:當(dāng)值為0時(shí),執(zhí)仃步驟③。③退出do…whiIe循環(huán)。對于本題變量i的初始值等于“0”,接著執(zhí)行do后而的循環(huán)體中的語句,輸出變量i的值0。再判斷while后面括號(hào)中表達(dá)式i++的值,其值為0,所以循環(huán)結(jié)束。此時(shí)變量i的值經(jīng)過自加已經(jīng)變?yōu)?,所以再次輸出i值“1”。15、下列選項(xiàng)中,能正確定義數(shù)組的語句是A、intnum[];B、intN=2008;intnum[N];C、intnum[0.2008];D、#defineN2008intnum[N];標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:在定義一維數(shù)組時(shí),數(shù)組的下標(biāo)應(yīng)該是一個(gè)確定的整數(shù)值。要注意的是在定義二維數(shù)組時(shí),其第一維下標(biāo)可以省略,但第二維下標(biāo)不能省略。16、有以下程序段charname[20];intnum;scanf("name=%snum=%d",name,&num);當(dāng)執(zhí)行上述程序段,并從鍵盤輸入:name=Lilinum=1001后,name的值為A、name=LiliB、Lilinum=C、name=Lilinum=1001D、Lili標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:在題目中以字符串的形式給字符數(shù)組賦值,所以字符數(shù)組name的值為Lili。17、有以下程序#includeintfun(){staticintx=1;x*=2;returnx;}main(){inti,s=1;for(i=1;i<=2;i++)s=fun();printf("%d\n",s);}程序運(yùn)行后的輸出結(jié)果是()。A、4B、1C、0D、8標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:fun()中的x為一個(gè)靜態(tài)變量。靜態(tài)變量在編譯時(shí)就被分配存儲(chǔ)空間,所占用存儲(chǔ)單元直到程序結(jié)束時(shí)才釋放,它的值在程序運(yùn)行過程中一直存在,且變量的初始化只進(jìn)行一次。所以第一次調(diào)用函數(shù)fun()時(shí),得s=2;第二次調(diào)用函數(shù)fun()時(shí),x仍保留第一次調(diào)用時(shí)的計(jì)算結(jié)果2,計(jì)算后s=4,所以答案選A。18、以下選項(xiàng)中有語法錯(cuò)誤的是A、charstr[3][10];str[1]="guest";B、charstr[][10]={"guest"};C、char*str[3];str[1]="guest";D、char*str[]={"guest"};標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題考查字符數(shù)組的定義和使用。選項(xiàng)A)定義了一個(gè)二維字符數(shù)組,第二句是直接給字符數(shù)組賦值錯(cuò)誤,C語言中不能直接給字符數(shù)組賦值;選項(xiàng)B)、C)和D)都是正確的。19、有以下程序#includemain(){inta[]={2,4,6,8,10},x,*p,y=1;p=&a[1];for(x=0;x<3;x++)y+=*(p+x);printf("%d\n",y);}程序的輸出結(jié)果是()。A、19B、13C、11D、15標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:考查指針與一維數(shù)組。語句p=&a[1];意味著將指針p指向數(shù)組a的第二個(gè)元素,p+1則是指向數(shù)組a的第三個(gè)元素,同理,p+x則是指向數(shù)組a的第x+2個(gè)元素,x取值為0、1、2,然后用y和對應(yīng)數(shù)組的元素累加,y=1,即是1+2+4+6+8=19,結(jié)果選A)。20、以下敘述中正確的是A、int*p1;int**p2;int*p3;都是合法的定義指針變量的語句B、指針變量只能通過求地址運(yùn)算符(&)來獲得地址值C、語句p=NULL;與p=\0;是等價(jià)的語句D、語句p=NULL;執(zhí)行后,指針p指向地址為0的存儲(chǔ)單元標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:B選項(xiàng)描述不正確,指針變量可以通過求地址運(yùn)算符(&)來獲得地址值,可以通過指針變量獲得地址值,還可以通過標(biāo)準(zhǔn)函數(shù)獲得地址值;C選項(xiàng)中,p=NULL;和p=0;或p=’\0’;等價(jià);D選項(xiàng)中,語句p=NULL;執(zhí)行后,指針p并不是指向地址為0的存儲(chǔ)單元,而是具有一個(gè)確定的值-"空"。因此A選項(xiàng)正確。21、有以下程序#include<stdio.h>structtt{intx;structtt*y;)*p;structtta[41={20,a+1,15,a+2,30,a+3,17a};main(){inti;p=a;for(i=1;i<=2;i++){printf("%d,",p->x);p=p->y;}}程序的運(yùn)行結(jié)果是A、20,15,B、30,17C、15,30,D、20,30,標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:程序定義了結(jié)構(gòu)體類型tt,其成員包括一個(gè)整型數(shù)據(jù)x和指向其自身結(jié)構(gòu)的指針變量y。程序在定義結(jié)構(gòu)體數(shù)組a的同時(shí)對其進(jìn)行了初始化。其元素a[0]的成員y被賦值為元素a[1]的地址,a[1].y被賦值為a[2]的地址,a[2].y被賦予a[3]的地址,a[3].y被賦予a[0]的地址。這就形成了一個(gè)單向的循環(huán)鏈表,每個(gè)元素的指針成員都指向下一個(gè)元素的地址。在主函數(shù)中,通過一個(gè)for循環(huán)語句,輸出該鏈表前2個(gè)節(jié)點(diǎn)數(shù)值成員的值,即a[0].x和a[1].x。22、以下敘述中正確的是A、如果p是指針變量,則*p表示變量P的地址值B、如果p是指針變量,則&p是不合法的表達(dá)式C、在對指針進(jìn)行加、減算術(shù)運(yùn)算時(shí),數(shù)字1表示1個(gè)存儲(chǔ)單元的長度D、如果p是指針變量,則*p+1和*(p+1)的效果是一樣的標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:移動(dòng)指針是對指針變量加上或減去一個(gè)整數(shù),或通過賦值運(yùn)算,使指針變量指向相鄰的存儲(chǔ)單元。因此,只有當(dāng)指針指向一串連續(xù)的存儲(chǔ)單元時(shí),指針的移動(dòng)才有意義。當(dāng)指針指向一串連續(xù)的存儲(chǔ)單元時(shí),可以對指針變量進(jìn)行加上或減去一個(gè)整數(shù)的運(yùn)算,也可以對指向同一串連續(xù)存儲(chǔ)單元的兩個(gè)指針進(jìn)行相減的運(yùn)算。除此之外,不可以對指針進(jìn)行任何其他的算術(shù)運(yùn)算。C語言提供了一個(gè)間接訪問運(yùn)算符(*),又稱間址運(yùn)算符,它是一個(gè)單目運(yùn)算符,優(yōu)先級比較高,高于普通的算術(shù)運(yùn)算符,但是低于()運(yùn)算符,因此*p+1和*(p+1)的含義是不一樣。當(dāng)指針變量中存放了一個(gè)確切的地址值時(shí),就可以用“間接訪問運(yùn)算符”通過指針來引用該地址的存儲(chǔ)單元。23、下列關(guān)于C語言文件的敘述中正確的是A、文件由結(jié)構(gòu)序列組成,可以構(gòu)成二進(jìn)制文件或文本文件B、文件由一系列數(shù)據(jù)依次排列組成,只能構(gòu)成二進(jìn)制文件C、文件由數(shù)據(jù)序列組成,可以構(gòu)成二進(jìn)制文件或文本文件D、文件由字符序列組成,其類型只能是文本文件標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:在C語言中,對輸入、輸出的數(shù)據(jù)都按“數(shù)據(jù)流”的形式進(jìn)行處理。數(shù)據(jù)可以按文本形式或二進(jìn)制形式存放在介質(zhì)上,因此文件可以按數(shù)據(jù)的仔放形式分為文本文件和二進(jìn)制文件。24、有以下程序#include#includevoidfun(int*p1,int*p2,int*s){s=(int*)calloc(1,sizeof(int));*s=*p1+*p2;free(s);}main(){inta[2]={1,2},b[2]={40,50},*q=a;fun(a,b,q);printf("%d\n",*q);}程序運(yùn)行后的輸出結(jié)果是A、42B、41C、1D、0標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:本題考查把數(shù)組名作為函數(shù)參數(shù),執(zhí)行fun函數(shù)后,s的值并沒有發(fā)生變化,仍然是指向a,所以輸出結(jié)果為1,選項(xiàng)C正確。25、有以下程序#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);}程序運(yùn)行后的輸出結(jié)果是A、b,B,b,AB、b,B,B,AC、a,B,B,aD、a,B,a,B標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題重點(diǎn)考察函數(shù)的調(diào)用,首先要了解字母對應(yīng)的ASCII碼。例如A為65,a為97。即字母+1則可得到下一個(gè)字母。其次是函數(shù)形參和實(shí)參的問題,運(yùn)行過程如下:在fun(&b,a)中,*c=’a’,d=65。*c+1=’b’,d+1=66,printf("%c,%c,",*c,d);輸出bB因?yàn)橹羔榗指向地址的值為b,此時(shí)b=*c=’b’;函數(shù)返回執(zhí)行printf("%c,%c\n",b,a);輸出b,A,因此A選項(xiàng)正確。國家二級C語言機(jī)試(選擇題)模擬試卷第3套一、選擇題(本題共25題,每題1.0分,共25分。)1、下列敘述中正確的是A、算法的效率只與問題的規(guī)模有關(guān),而與數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)無關(guān)B、算法的時(shí)間復(fù)雜度是指執(zhí)行算法所需要的計(jì)算工作量C、數(shù)據(jù)的邏輯結(jié)構(gòu)與存儲(chǔ)結(jié)構(gòu)是一一對應(yīng)的D、算法的時(shí)間復(fù)雜度與空間復(fù)雜度一定相關(guān)標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:算法的時(shí)間復(fù)雜度是指執(zhí)行算法所需要的計(jì)算工作量。算法的工作量用算法所執(zhí)行的基本運(yùn)算的次數(shù)來度量,而算法所執(zhí)行的基本運(yùn)算次數(shù)是問題規(guī)模的函數(shù);算法的空間復(fù)雜度一般是指執(zhí)行這個(gè)算法所需要的內(nèi)存空間。算法的時(shí)間復(fù)雜度與空間復(fù)雜度并不相關(guān)。數(shù)據(jù)的邏輯結(jié)構(gòu)就是數(shù)據(jù)元素之間的邏輯關(guān)系,它是從邏輯上描述數(shù)據(jù)元素之間的關(guān)系,是獨(dú)立于計(jì)算機(jī)的;數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)是研究數(shù)據(jù)元素和數(shù)據(jù)元素之間的關(guān)系如何在計(jì)算機(jī)中表示,它們并非一一對應(yīng)。算法的執(zhí)行效率不僅與問題的規(guī)模有關(guān),還與數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)有關(guān)。2、在長度為64的有序線性表中進(jìn)行順序查找,最壞情況下需要比較的次數(shù)為A、63B、64C、6D、7標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:順序查找又稱順序搜索。順序查找一般是指在線性表中查找指定的元素,其基本方法是:從線性表的第一元素開始,依次將線性表中的元素與被查找的元素進(jìn)行比較,若相等則表示找到(即查找成功),若線性表中所有元素都與被查元素進(jìn)行了比較但都不相等,則表示線性表中沒有要找的元素(即查找失敗)。如果線性表中的第一個(gè)元素就是要查找的元素,則只需要做一次比較就查找成功;但如果要查找的元素是線性表中的最后一個(gè)元素,或者要查找元素不在線性表中,則需要與線性表中所有元素進(jìn)行比較,這是順序查找的最壞情況,比較次數(shù)為線性表的長度。3、sizeof(double)是A、一個(gè)雙精度型表達(dá)式B、一個(gè)整型表達(dá)式C、一個(gè)不合法的表達(dá)式D、一種函數(shù)調(diào)用標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:sizeof關(guān)鍵字為C語言的運(yùn)算符,用于測試()內(nèi)類型其變量所占內(nèi)存,表達(dá)式結(jié)果返回十進(jìn)制整數(shù),因此為整型表達(dá)式,表明變量所占的內(nèi)存字節(jié)數(shù)。4、在希爾排序法中,每經(jīng)過一次數(shù)據(jù)交換后A、能消除多個(gè)逆序B、只能消除一個(gè)逆序C、不會(huì)產(chǎn)生新的逆序D、消除的逆序個(gè)數(shù)一定比新產(chǎn)生的逆序個(gè)數(shù)多標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:希爾排序法(縮小增量法)屬于插入類排序,是將整個(gè)無序列分割成若干小的子序列分別進(jìn)行插入排序的方法。插入排序能夠消除多個(gè)逆序,也會(huì)產(chǎn)生新的逆序。消除的逆序與新產(chǎn)生的逆序有多有少。5、軟件設(shè)計(jì)中模塊劃分應(yīng)遵循的準(zhǔn)則是A、低內(nèi)聚低耦合B、高內(nèi)聚低耦合C、低內(nèi)聚高耦合D、高內(nèi)聚高耦合標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:耦合性和內(nèi)聚性是模塊獨(dú)立性的兩個(gè)定性標(biāo)準(zhǔn),各模塊的內(nèi)聚性越強(qiáng),則耦合性越弱。軟件設(shè)計(jì)應(yīng)該遵循高內(nèi)聚低耦合。6、在面向?qū)ο蠓椒ㄖ校瑢?shí)現(xiàn)信息隱蔽是依靠A、對象的繼承B、對象的多態(tài)C、對象的封裝D、對象的分類標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:對象的封裝性是指從外部看只能看到對象的外部特征,即只需知道數(shù)據(jù)的取值范圍和可以對該數(shù)據(jù)施加的操作,而不需要知道數(shù)據(jù)的具體結(jié)構(gòu)以及實(shí)現(xiàn)操作的算法。對象的內(nèi)部,即處理能力的實(shí)行和內(nèi)部狀態(tài),對外是不可見的。從外面不能直接使用對象的處理能力,也不能直接修改其內(nèi)部狀態(tài),對象的內(nèi)部狀態(tài)只能由其自身改變。7、設(shè)有定義:inta;floatb;執(zhí)行scanf(”%2d%f.’,&a,&b);語句時(shí),若從鍵盤輸入876543.0,則a和b的值分別是()。A、87和6.0B、876和543.0C、87和543.0D、76和543.0標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:scanf()函數(shù)的一般形式為:scan(格式控制,地址表列)。其中,“格式控制”是用雙引號(hào)括起來的字符串,也稱為“轉(zhuǎn)換控制字符串”,它包括兩種信息:①格式說明,由“%”和格式字符組成;②普通字符,即需要原樣輸入的字符?!暗刂繁砹小笔切枰邮蛰斎霐?shù)據(jù)的一系列變量的地址。本題中的“格式控制”是“%2d%f”,“%2d”的意思是要輸入一個(gè)整數(shù),但該整數(shù)最寬只占2個(gè)字符,而“%2d”是要輸入一個(gè)浮點(diǎn)數(shù)。題目要求輸入的是876空格543.0,所以scanf()函數(shù)將87賦給a,將6賦給b。8、數(shù)據(jù)庫管理系統(tǒng)中負(fù)責(zé)數(shù)據(jù)模式定義的語言是A、數(shù)據(jù)定義語言B、數(shù)據(jù)管理語言C、數(shù)據(jù)操縱語言D、數(shù)據(jù)控制語言標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:數(shù)據(jù)庫管理系統(tǒng)一般提供相應(yīng)的數(shù)據(jù)語言,它們分別是:數(shù)據(jù)定義語言,負(fù)責(zé)數(shù)據(jù)的模式定義與數(shù)據(jù)的物理存取構(gòu)建;數(shù)據(jù)操縱語言,負(fù)責(zé)數(shù)據(jù)的操縱,包括查詢及增、刪、改等操作;數(shù)據(jù)控制語言,負(fù)責(zé)數(shù)據(jù)完整性、安全性的定義與檢查以及并發(fā)控制、故障恢復(fù)等功能。9、軟件(程序)調(diào)試的任務(wù)是A、診斷和改正程序中的錯(cuò)誤B、盡可能多地發(fā)現(xiàn)程序中的錯(cuò)誤C、發(fā)現(xiàn)并改正程序中的所有錯(cuò)誤D、確定程序中錯(cuò)誤的性質(zhì)標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:在對程序進(jìn)行了成功的測試之后將進(jìn)入程序調(diào)試(通常稱Debug,即排錯(cuò))。程序調(diào)試的任務(wù)是診斷和改正程序中的錯(cuò)誤;它與軟件測試不同,軟件測試是盡可能名地發(fā)現(xiàn)軟件中的錯(cuò)誤。先要發(fā)現(xiàn)軟件的錯(cuò)誤,然后借助于一定的調(diào)試工具去執(zhí)行并找出錯(cuò)洪的具體位置。軟件測試貫穿整個(gè)軟件生命周期,調(diào)試主要在開發(fā)階段。10、執(zhí)行下列程序時(shí)輸入“456<空格>789<空格>123<回車>”,輸出結(jié)果是()。#includemain(){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”表示通過鍵盤只讀入一個(gè)字符型的數(shù)據(jù),“&c”表示將該數(shù)據(jù)賦值給c,所以c=4。另外,以“%d”格式讀入數(shù)據(jù)時(shí),只有遇到空格或者換行等間隔符時(shí)才停止讀入,所以i=56,m=789。11、有以下程序:#include<stdio.h>main(){inti,t[][3]={9,8,7,6,5,4,3,2,1};for(i=0;i<3;i++)printf("%d",t[2-i][i]);}程序的運(yùn)行結(jié)果是()。A、357B、753C、369D、751標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:二維數(shù)組t[][3]實(shí)際上指t[3][3]={{9,8,7},{6,5,4},{3,2,1}},通過循環(huán)語句for語句可以得到i=0,t[2][0]=3、i=1,t[1][1]=5、i=2,t[0][2]=7、i=3時(shí)循環(huán)結(jié)束,即t[2][0]=3、t[1][1]=5、t[0][2]=7,因此A選項(xiàng)正確。12、以下程序段中的變量已正確定義for(i=0;i<4;i++,i++)for(k=1;k<3;k++);printff’’*’’);程序段的輸出結(jié)果是A、********B、****C、**D、*標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查循環(huán)語句,題中第二個(gè)(內(nèi)層)for循環(huán)之后有一個(gè)分號(hào),意思是每次循環(huán)中的操作為空,不執(zhí)行任何操作。再循環(huán)結(jié)束后執(zhí)行printf語句,即只打出一個(gè)*。13、設(shè)intx[2][3];則以下關(guān)于二維數(shù)組x的敘述錯(cuò)誤的是()。A、數(shù)組x可以看作是由x[0]和x[1]兩個(gè)元素組成的一維數(shù)組B、可以用x[0]=0;的形式為數(shù)組所有元素賦初值0C、元素x[0]可看作是由3個(gè)整型元素組成的一維數(shù)組D、x[0]和x[1]是數(shù)組名,分別代表一個(gè)地址常量標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:C語言中二維數(shù)組的元素在內(nèi)存中占一系列連續(xù)的存儲(chǔ)單元。數(shù)組元素在內(nèi)存中的排列順序是先存放第0行的元素,再存放第1行的元素……稱這種存放順序?yàn)榘葱写娣???梢园岩粋€(gè)二維數(shù)組看成是一個(gè)一維數(shù)組,每個(gè)數(shù)組元素又是包含有若干個(gè)元素的一維數(shù)組。另外在給二維數(shù)組賦初值時(shí)可以不用含花括號(hào)對。例如,inta[4][3]={1,2,4,5};在編譯時(shí),系統(tǒng)將按a數(shù)組元素在內(nèi)存中排列的順序,將花括號(hào)內(nèi)的數(shù)據(jù)一一對應(yīng)地賦給各個(gè)元素,若數(shù)據(jù)不足,系統(tǒng)將給后面的元素自動(dòng)補(bǔ)初值0。以上將給a數(shù)組第一行的元素和第二行的第一個(gè)元素依次賦予1、2、4、5,其他元素的初值都為0。14、以下敘述中正確的是A、在賦值表達(dá)式中,賦值號(hào)的右邊可以是變量,也可以是任意表達(dá)式B、a是實(shí)型變量,a=10在C語言中是允許的,因此可以說:實(shí)型變量中可以存放整型數(shù)C、若有inta=4,b=9;執(zhí)行了a=b后,a的值已由原值改變?yōu)閎的值,b的值變?yōu)?D、若有inta=4,b=9;執(zhí)行了a=b;b=a;之后,a的值為9,b的值為4標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:選項(xiàng)B)中a=10,在賦值時(shí)會(huì)把10自動(dòng)轉(zhuǎn)換為double類型然后賦值,實(shí)型變量中不可能存放整型。而選項(xiàng)C)中執(zhí)行a=b后,b的值不變還是9,選項(xiàng)D)中執(zhí)行a-b;b=a;后,a的值為9,b的值也為9。15、以下選項(xiàng)中不能作為C語言合法常量的是A、cd’B、0.1e+6C、"ia"D、"\011"標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:常量指的是在程序的運(yùn)行過程中,其值不能被改變的量。在C語言中,包括整型常量、實(shí)型常量、字符常量和字符串常量等類型。選項(xiàng)B)0.1e+6是用指數(shù)形式表示的實(shí)型常量。在C語言中,用以“e”或“E”后一個(gè)整數(shù)來表示以10為底的冪數(shù),以用這種形式表示實(shí)型常量時(shí)要注意C語言的語法規(guī)定,字母e或E之前必須要有數(shù)字,且e或E后面的指數(shù)必須為整數(shù),并且在字母e或E的前后以及數(shù)字之間不得插入空格。選項(xiàng)C)中用雙引號(hào)括起來表示的字符串“\a”。選項(xiàng)D)中’\011’表示用單引號(hào)括起來的轉(zhuǎn)義字符八制進(jìn)數(shù)011。選項(xiàng)A)表示的字符常量是非法的,在用單引號(hào)表示的字符常量中,只能包含一個(gè)字符,而選項(xiàng)A)中包含兩個(gè)字符。16、下列結(jié)構(gòu)體的定義語句中錯(cuò)誤的是()。A、gtruetord{intx;inty;intz;}structorda;B、struetord{intx;inty;intz;};struetorda;C、structord{intx;inty;intz;}a;D、struet{intx;inty;intz;}a;標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:A選項(xiàng)錯(cuò)誤,不能在定義結(jié)構(gòu)體的同時(shí),又用結(jié)構(gòu)體類型名定義變量,應(yīng)該寫成B選項(xiàng)或者D選項(xiàng)的格式。17、有以下程序main(){inta=-2,b=0;while(a++&&++b);printf("%d,%dkn",a,b);}程序運(yùn)行后輸出結(jié)果是A、0,3B、1,2C、1,3D、0,2標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:循環(huán)體為空,共執(zhí)行2次。第一次變量a初值為-2,b初值為0,表達(dá)式a++&&++b值為1,同時(shí)a的值為-1,b的值為1,第二次循環(huán)條件判斷以后,a的值為0,b的值2,執(zhí)行循環(huán)體空,第三次判斷條件表達(dá)式值為0,不執(zhí)行循環(huán)體,而a的值為1,但是表達(dá)式a++的值為0,因此不計(jì)算表達(dá)式++b的值,b的值仍為2。18、若有定義:floatx=1.5;inta=1,b=3,c=2;則正確的switch語句是()。A、switch(a+b){case1:printf("*\n");case2+1:printf("**\n");}B、switch((int)x);{case1:printf("*\n");case2:printf("**\n");}C、switch(x){case1.0:printf("*\n");case2.0:printf("**\n");}D、switch(a+b){case1:printf("*\n");casec:printf("**\n");}標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:switch(表達(dá)式)后不能有分號(hào),選項(xiàng)B)錯(cuò)誤;switch語句的圓括號(hào)中表達(dá)式的值必須為整型或者字符型,不能為實(shí)型,選項(xiàng)C)錯(cuò)誤;case后面的表達(dá)式可以是求得整型量和字符型量的常量表達(dá)式,但是常量表達(dá)式中不能含有變量,選項(xiàng)D)錯(cuò)誤;答案選A)。19、定義學(xué)生、教師和課程的關(guān)系模式STC(SNO,SN,SA,TN,CN,G),其中的六個(gè)屬性分別為學(xué)生的學(xué)號(hào)、姓名、年齡、教師的姓名、課程名以及學(xué)生的成績,則該關(guān)系為A、第一范式B、第二范式C、第三范式D、BCNF范式標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:如果一個(gè)關(guān)系模式R的所有屬性都是不可分的基本數(shù)據(jù)項(xiàng),則R∈1NF。簡單的說,就是每一個(gè)列(屬性)只有一個(gè),沒有重復(fù)。第一范式(1NF)是指數(shù)據(jù)庫表的每一列都是不可分割的基本數(shù)據(jù)項(xiàng),同一列中不能有多個(gè)值,即實(shí)體中的某個(gè)屬性不能有多個(gè)值或者不能有重復(fù)的屬性。對于本題學(xué)生、教師和課程的關(guān)系模式STC(SNO,SN,SA,TN,CN,G),其中的六個(gè)屬性分別為學(xué)生的學(xué)號(hào)、姓名、年齡、教師的姓名、課程名以及學(xué)生的成績。六個(gè)屬性都是不可分的基本數(shù)據(jù)項(xiàng)。所以這個(gè)關(guān)系模式是第一范式。選項(xiàng)A正確。20、表達(dá)式a+=a-=a=9的值是A、-9B、0C、18D、9標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:第一步a=9,然后計(jì)算a-a的值,并將此值賦給a,因此此時(shí)a=0,最后計(jì)算a+a,并將此值賦給a,因此最終結(jié)果為0。21、有以下程序intfun(intn){if(n==1)return1;Elsereturn(n+fun(n-1));}main(){intx;scanf("%d",&x);x=fun(x);printf("%d\n",x);}執(zhí)行程序時(shí),給變量x輸入10,程序的輸出結(jié)果是A、54B、65C、45D、55標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:在C語言中函數(shù)可以遞歸調(diào)用,即直接或間接地自己調(diào)用自己。本題在函數(shù)intfun(intn)的定義中又出現(xiàn)了對函數(shù)fun的調(diào)用,所以函數(shù)fun是遞歸函數(shù)。因而在主函數(shù)中調(diào)用x=fun(x)時(shí),當(dāng)輸入10賦給變量x時(shí),遞歸調(diào)用的過程為:fun(10)=10+fun(9)=10+9+fun(8)=10+9+8+fun(7)=10+9+8+7+fun((6)=10+9+8+7+6+fun(6)=10+9+8+7+6+5+fun(4)=10+9+8+7+6+5+4+fun(3)=10+9+8+7+6+5+4+3+fun(2)=10+9++8+7+6+5+4+3+2+fun(1)=10+9+8+7+6+5+4+3+2+1=5522、若a是數(shù)值類型,則邏輯表達(dá)式(a==1)||(a!=1)的值是A、0B、2C、1D、不知道a的值,不能確定標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:在邏輯表達(dá)式中,a||b,只有在a跟b都為0時(shí),表達(dá)式的結(jié)果才為0。在題中所給的表達(dá)式中a要么等于1,要么不等于1,肯定會(huì)有一方的值不為真,表達(dá)式值為1。23、有三個(gè)關(guān)系R、S和T如下:由關(guān)系R和S通過運(yùn)算得到關(guān)系T,則所使用的運(yùn)算為。A、笛卡爾積B、交C、并D、自然連接標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:自然連接是一種特殊的等值連接,它要求兩個(gè)關(guān)系中進(jìn)行比較的分量必須是相同的屬性組,并且在結(jié)果中把重復(fù)的屬性列去掉,所以根據(jù)T關(guān)系中的有序組可知R與S進(jìn)行的是自然連接操作。24、有下列程序:#include<stdio.h>/*fun函數(shù)的功能是將a所指數(shù)組元素從大到小排序*/voidfun(int*a,intn){intt,i,j;for(i=0;i<n-1.j++)ford=i+1;j<n;j++)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[i]=t;}}main(){intc[10]={1,2,3,4,5,6,7,8,9,0},i;fun(c+4,6);for(i=0;i<10;i++)printf("%d,",c[i]);printf("\n");}程序的運(yùn)行結(jié)果是A、1.2,3,4,9,8,7,6,5,0,B、0.9,8,7,6,5,1,2,3,4,C、0.9,8,7,6,5,4,3,2,1,D、1,2,3,4,5,6,7,8,9,0,標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:fun()函數(shù)的功能是對數(shù)組a[]的元素從大到小進(jìn)行排序。所以在主函數(shù)執(zhí)行fun(c+4,6)語句時(shí),將從數(shù)組c的第5個(gè)元素開始的后6個(gè)元素進(jìn)行從大到小排序。排序之后,數(shù)組c的內(nèi)容變?yōu)閧1,2,3,4,9,8,7,6,5,0}。25、若有定義“inta,b,c,*p=&c;”,接著執(zhí)行以下選項(xiàng)中的語句,則能正確執(zhí)行的語句是()。A、scanf("%d",a,b,c);B、scanf("%d%d%d",a,b,c);C、scanf("%d",p);D、scanf("%d",&p);標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:本題重點(diǎn)考查格式輸入函數(shù)scanf。seanf函數(shù)要求:輸入的變量為地址形式。4個(gè)選項(xiàng)中,C選項(xiàng)符合要求。故本題答案為C選項(xiàng)。國家二級C語言機(jī)試(選擇題)模擬試卷第4套一、選擇題(本題共25題,每題1.0分,共25分。)1、下列各組排序法中,最壞情況下比較次數(shù)相同的是()。A、簡單選擇排序與堆排序B、簡單插入排序與希爾排序C、冒泡排序與快速排序D、希爾排序與堆排序標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:對于長度為n的線性表,最壞情況下查找或排序的次數(shù)如下表:2、某二叉樹共有7個(gè)結(jié)點(diǎn),其中葉子結(jié)點(diǎn)只有1個(gè),則該二叉樹的深度為(假設(shè)根結(jié)點(diǎn)在第1層)A、3B、4C、6D、7標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:根據(jù)二叉樹的性質(zhì),度為0的結(jié)點(diǎn)(即葉子結(jié)點(diǎn))總是比度為2的結(jié)點(diǎn)多一個(gè)。題目中的二叉樹的葉子結(jié)點(diǎn)為1,因此度為2的結(jié)點(diǎn)的數(shù)目為0,故該二叉樹為7層,每層只有一個(gè)結(jié)點(diǎn)。3、設(shè)一棵完全二叉樹共有700個(gè)結(jié)點(diǎn),則此二叉樹中的葉子結(jié)點(diǎn)數(shù)為A、85B、120C、250D、350標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:①具有n個(gè)結(jié)點(diǎn)的完全二叉樹的深度為[long2n]+1,計(jì)算出該完全二叉樹的深度為10。②設(shè)度為0的結(jié)點(diǎn)(即葉子結(jié)點(diǎn))為n0,度為1的結(jié)點(diǎn)為n1,度為2的結(jié)點(diǎn)為n2,總結(jié)點(diǎn)數(shù)為n,深度為k。n=n1+n2+n0,由于n0=n2+1則n2=n0-1,故n=n1+n0-1+n0=n1+2n0-1。由于完全二叉樹中度為1的結(jié)點(diǎn)數(shù)只有兩種可能:0或1。③假設(shè)度為1的結(jié)點(diǎn)數(shù)為0即滿二叉樹,根據(jù)滿二叉樹的定義,其2m-1個(gè)結(jié)點(diǎn),根據(jù)以上計(jì)算所得的深度10來計(jì)算,應(yīng)有210-1=1024-1=1023個(gè)結(jié)點(diǎn),顯然與題目中700個(gè)結(jié)點(diǎn)不符。因此,度為1的結(jié)點(diǎn)數(shù)必然為1。故n=n1+2n0-1=1+2n0-1=2n0,則n0=n/2=700/2=350。4、以下敘述中正確的是A、字符變量在定義時(shí)不能賦初值B、同一英文字母的大寫和小寫形式代表的是同一一個(gè)字符常量C、字符常量可以參與任何整數(shù)運(yùn)算D、轉(zhuǎn)義字符用@符號(hào)開頭標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:一個(gè)字符常量代表ASCII字符集中的一個(gè)字符,在C程序中,字符常量可參與任何整數(shù)運(yùn)算,轉(zhuǎn)義字符以一個(gè)反斜線開頭后跟一個(gè)特定的字符。5、設(shè)數(shù)據(jù)元素的集合D={1,2,3,4,5},則滿足下列關(guān)系R的數(shù)據(jù)結(jié)構(gòu)中為線性結(jié)構(gòu)的是()。A、R={(1,2),(3,2),(5,1),(4,5)}B、R={(1,3),(4,1),(3,2),(5,4)}C、R={(1,2),(2,4),(4,5),(2,3)}D、R={(1,3),(2,4),(3,5),(1,2)}標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:A選項(xiàng)2的前面有1和3兩個(gè)數(shù)值,帶有不確定性;c選項(xiàng)2的后面有4和3兩個(gè)數(shù)值;D選項(xiàng)1的后面有3和2兩個(gè)數(shù)值,所以只有B選項(xiàng)是線性結(jié)構(gòu)。6、軟件設(shè)計(jì)中模塊劃分應(yīng)遵循的準(zhǔn)則是A、低內(nèi)聚低耦合B、高內(nèi)聚低耦合C、低內(nèi)聚高耦合D、高內(nèi)聚高耦合標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:耦合性與內(nèi)聚性是模塊獨(dú)立性的兩個(gè)定性標(biāo)準(zhǔn)。一般一個(gè)較優(yōu)秀的軟件設(shè)計(jì),應(yīng)盡量做到高內(nèi)聚,低耦合,即減弱模塊之間的耦合性和提高模塊內(nèi)的內(nèi)聚性,有利于提高模塊的獨(dú)立性。7、有以下程序#includemain(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){ease0:a++;break;case1:b++;break;}case2:a++;b++;break;}printf("a=%d,b=%d\n",a,b);}程序運(yùn)行后的輸出結(jié)果是A、a=1,b=lB、a=1,b=0C、a=2,b=1D、a=2,b=2標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:本題考查的是用switch語句實(shí)現(xiàn)多分支選擇結(jié)構(gòu),首先進(jìn)入第一個(gè)switch(x)判斷,進(jìn)入case1中進(jìn)行嵌套判斷,如果switch(y)也成立,a自加1,遇到break,退出嵌套,接著執(zhí)行case2,a自加為2,b自加為1,遇到break,結(jié)束循環(huán),此時(shí)a=2,b=1。8、設(shè)有定義:doublea[10],*s=a;,以下能夠代表數(shù)組元素a[3]的是()。A、(*s)[3]B、*(s+3)C、*s[3]D、*s+3標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:題中,首先定義了double型的數(shù)組a,并將數(shù)組首地址賦給指針s。s[3]能夠表示a[3],故選項(xiàng)A、C不能表示a[3];選項(xiàng)D的*s+3=a[0]+3。故本題答案為B選項(xiàng)。9、“商品”與“顧客”兩個(gè)實(shí)體集之間的聯(lián)系一般是A、一對一B、一對多C、多對一D、多對多標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:實(shí)體集間的聯(lián)系的個(gè)數(shù)可以是單個(gè)也可以是多個(gè)。兩個(gè)實(shí)體集之間的聯(lián)系實(shí)際上是實(shí)體集間的函數(shù)關(guān)系,這種關(guān)系有三種:一對一的聯(lián)系,簡記為1:1;一對多或多對一聯(lián)系,簡記為1:m或m:1:多對多聯(lián)系,簡記為m:n。本題中“商品”與“顧客”兩個(gè)實(shí)體集之間的聯(lián)系是多對多聯(lián)系。因?yàn)橐环N“商品”可以被多個(gè)“顧客”購買,而一個(gè)“顧客”也可以購買多個(gè)“商品”10、設(shè)有語句typedefstruetTT{charc;inta[4];}CIN;,則下列敘述中正確的是()。A、CIN是struetTT類型的變量B、,IT是struct類型的變量C、可以用TT定義結(jié)構(gòu)體變量D、可以用CIN定義結(jié)構(gòu)體變量標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查typedef重新聲明一種結(jié)構(gòu)體類型。其中CIN為結(jié)構(gòu)體類型名,而不是結(jié)構(gòu)體變量,所以D選項(xiàng)正確。11、下列結(jié)構(gòu)體的定義語句中錯(cuò)誤的是()。A、structord{intx;inty;intz;}structorda;B、structord{intx;inty;intz;};structorda;C、structord{intx;inty;intz;}a;D、struct{intx;inty;intz;}a;標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:A選項(xiàng)錯(cuò)誤,不能在定義結(jié)構(gòu)體的同時(shí),又用結(jié)構(gòu)體類型名定義變量,應(yīng)該寫成B選項(xiàng)或者D選項(xiàng)的格式。12、關(guān)于地址的敘述中錯(cuò)誤的是()。A、改變函數(shù)形參的值,不會(huì)改變對應(yīng)實(shí)參的值B、函數(shù)可以返回地址值C、當(dāng)在程序的開頭包含頭文件stdio.h時(shí),可以給指針變量賦:NULLD、可以給指針變量賦一個(gè)整數(shù)作為地址值標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:C語言中指針變量的值只能是存儲(chǔ)單元地址,而不能是一個(gè)整數(shù),選項(xiàng)D的描述錯(cuò)誤。函數(shù)可以返回內(nèi)存空間的地址,同時(shí)函數(shù)形參和實(shí)參分別占用不同的內(nèi)存單元,改變形參的值不會(huì)改變對應(yīng)實(shí)參的值,在頭文件stdio.h中,NULL被定義為void型的指針。13、設(shè)floata[10],*s=a;以下能夠代表數(shù)組元素a[3]的是()。A、(*s)[3]B、*s[3]C、*s+3D、*(s+3)標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:C語言中,指針可以指向一個(gè)數(shù)組,語句*s=a,使用指針變量s指向一維數(shù)組a的首地址,所以*(s+3)表示的是引用數(shù)組a[3]。14、有以下程序#includemain(){inta,b,c=241;a=c/100%9;b=(-1)&&(-1);printf("%d,%d\n",a,b);}程序運(yùn)行后的輸出結(jié)果是()。A、2,1B、6,1C、6,0D、2,0標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:考查運(yùn)算符與表達(dá)式。若除法運(yùn)算符"/"的參與量均為整型,則結(jié)果也為整型,所以a=2。在C語言中,用非0表示真,用0表示假,所以邏輯表達(dá)式"(-1)&&(-1)"的結(jié)果為真,b=1,答案選A。15、C語言中的標(biāo)識(shí)符分為關(guān)鍵字、預(yù)定義標(biāo)識(shí)符和用戶標(biāo)識(shí)符,以下敘述正確的是A、關(guān)鍵字可用作用戶標(biāo)識(shí)符,但失去原有含義B、在標(biāo)識(shí)符中大寫字母和小寫字母被認(rèn)為是相同的字符C、用戶標(biāo)識(shí)符可以由字母和數(shù)字任意順序組成D、預(yù)定義標(biāo)識(shí)符可用作用戶標(biāo)識(shí)符,但失去原有含義標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:預(yù)定義標(biāo)識(shí)符是C語言中的標(biāo)識(shí)符,在C語言中也有特定的含義,如函數(shù)pfintf、scanf、sin等和編譯預(yù)處理命令名(如define和include)。預(yù)定義標(biāo)識(shí)符可以作為用戶標(biāo)識(shí)符使用,只是這樣會(huì)失去系統(tǒng)規(guī)定的原義。16、若有以下定義和語句#includechars1[10]="abcd!",*s2="\n123\\";printf("%d%d\n",strlen(s1),strlen(s2));則輸出結(jié)果是A、107B、105C、55D、58標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:strlen函數(shù)返回字符串的長度,求字符串長度時(shí),遇到結(jié)束標(biāo)志’\0’為止,但是長度不包括結(jié)束標(biāo)識(shí)。字符數(shù)組s1的后5個(gè)元素沒有賦值,都為’\0’,即"abcd!"后為’\0’。所以strlen(s1)的值為5。字符指針s2所指向的字符串中,\n為轉(zhuǎn)義字符換行符,表示1個(gè)字符,\\也為轉(zhuǎn)義字符,代表\,也是1個(gè)字符,其后為字符串結(jié)束標(biāo)識(shí)’\0’;所以strlen(s2)的值也為5。因此C選項(xiàng)正確。17、程序中已構(gòu)成如下圖所示的不帶頭結(jié)點(diǎn)的單向鏈表結(jié)構(gòu),指針變量s、p、q均已正確定義,并用于指向鏈表結(jié)點(diǎn),指針變量s總是作為頭指針指向鏈表的第一個(gè)結(jié)點(diǎn)。若有以下程序段:q=s;s=s->next;p=s;while(p->next)p=p->next;p->next=q;q->next=NULL;該程序段實(shí)現(xiàn)的功能是A、尾結(jié)點(diǎn)成為首結(jié)點(diǎn)B、首結(jié)點(diǎn)成為尾結(jié)點(diǎn)C、刪除首結(jié)點(diǎn)D、刪除尾結(jié)點(diǎn)標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:分析程序可知,程序段首先讓:q指向鏈表的首結(jié)點(diǎn),s指向鏈表的第二結(jié)點(diǎn),p此時(shí)指向鏈表的第二個(gè)結(jié)點(diǎn)。然后在while循環(huán)中,當(dāng)p的后繼結(jié)點(diǎn)非空時(shí),讓p指向鏈表的最后一個(gè)結(jié)點(diǎn),退出循環(huán)。然后讓尾結(jié)點(diǎn)指向首結(jié)點(diǎn),并使首結(jié)點(diǎn)的后繼結(jié)點(diǎn)為NULL。所以最終實(shí)現(xiàn)鏈表的首結(jié)點(diǎn)成為尾結(jié)點(diǎn)。18、有以下程序voidfun(inta,intb,intC){a=b;b=c;c=a;}main(){inta=10,b=20,c=30;fun(a,b,@C)@;printf("%d,%d,%d\n",c,b,a);)程序運(yùn)行后的輸出結(jié)果是A、10,20,30B、20,30,10C、30,20,10D、0,0,0標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:函數(shù)fun中采用了變量作為參數(shù),那么參數(shù)傳遞以后,形參a,b,c的變化對于實(shí)參a,b,c是沒有影響的,因此主函數(shù)中a,b,c的值經(jīng)過fun調(diào)用以后,值沒有變化。19、有以下程序段intn,t=1,s=0;scanf("%d",&n);do{s=s++;t=t-2;}while(t!=n);為使此程序段不陷入死循環(huán),從鍵盤輸入的數(shù)據(jù)應(yīng)該是A、任意正奇數(shù)B、任意負(fù)偶數(shù)C、任意正偶數(shù)D、任意負(fù)奇數(shù)標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查基本輸入和循環(huán)。程序代碼的功能是通過scanf給變量n賦值,在do…while循環(huán)中,s變量自增,t變量每次減2,t的初值為1,循環(huán)執(zhí)行執(zhí)行一次后t的值變成-1,然后是-3、-5…,直到t的值和n的值相同循環(huán)結(jié)束。從t的值的變化可知,t是一個(gè)變化的負(fù)奇數(shù),因此輸入的n如果是負(fù)奇數(shù),則循環(huán)能退出,否則是死循環(huán)。20、有以下程序#includemain(){inta,b;for(a=1,b=1;a<=100;a++){if(b>=20)break;if(b%3==1){b=b+3;continue;}b=b-5;}printf("%d\n",a);}程序的輸出結(jié)果是()。A、8B、10C、9D、7標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:考查break和continue的用法。break語句用于循環(huán)體,其作用是跳出當(dāng)前層循環(huán),continue語句是跳過當(dāng)前循環(huán)層余下未執(zhí)行的語句,繼續(xù)執(zhí)行下一次循環(huán)。該程序中的for語句的循環(huán)條件是a小于等于100,當(dāng)b的值大于等于20的時(shí)候就跳出循環(huán)并輸出當(dāng)前a的值。b值的變化邏輯是每次判定"b%3"的值若為1,則b自增3,否則,b自減5。其實(shí)該程序中,選擇語句"if(b%3==1)"的判定條件一直為真,所以b的值為"1+a*3",易求得滿足跳出條件的a值為8,答案選A。21、設(shè)有定義:inta=1,b=2,c=3;以下語句中執(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)答案:A知識(shí)點(diǎn)解析:在C語言中,用分號(hào)表示一條語句的結(jié)束,用{}把幾條語句放在一塊表示一個(gè)語句塊,其整體表示一個(gè)功能。因而在題目給出的四個(gè)選項(xiàng)中,選項(xiàng)B)、C)、D)表示的功能相同,而選項(xiàng)A)表示的是一條if語句,兩條賦值語句。22、有以下程序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標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:子函數(shù)fun(intx,inty),將變量m和i聲明為局部靜態(tài)變量,因此第1次調(diào)用主函數(shù)后,局部靜態(tài)變量m和i的值為5和3,第1次函數(shù)調(diào)用結(jié)束時(shí),它們的值不釋放保持不變,所以第2次調(diào)用時(shí),局部靜態(tài)變量m和i的初始值分別為5和3,即在執(zhí)行“i+=m+1”時(shí),i的值為9,因此最終m的值為11。23、有如下程序#includeintsum(inta,intb){returna+b-2;}main(){inti;for(i=0;i<5;i++)printf("%d",sum(i,3));printf("\n");}程序運(yùn)行后的輸出結(jié)果是()。A、12345B、01234C、45678D、54321標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:函數(shù)fun()的作用是返回a+b-2的值,所以循環(huán)依次輸出sum(0,3)、sum(1,3)、sum(2,3)、sum(3,3)、sum(4,3),輸出結(jié)果為選項(xiàng)A)。24、以下敘述中錯(cuò)誤的是A、用typedef可以說明一種新的類型名B、typedef的作用是用一個(gè)新的標(biāo)識(shí)符來代表已存在的類型名C、可以用typedef說明的新類型名來定義變量D、typedef說明的新類型名必須使用大寫字母,否則會(huì)出編譯錯(cuò)誤標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查typedef的使用方法,typedef對已存在的類型使用一個(gè)新的名字,新類型可以使用小寫,所以D選項(xiàng)錯(cuò)誤。25、已定義以下函數(shù)intfun(int*p){return*p;}fun函數(shù)返回值是A、一個(gè)整數(shù)B、不確定的值C、形參p中存放的值D、形參p的地址值標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:返回值為指針變量指向的數(shù)據(jù),該數(shù)據(jù)已被定義為整型。因此A選項(xiàng)正確。國家二級C語言機(jī)試(選擇題)模擬試卷第5套一、選擇題(本題共25題,每題1.0分,共25分。)1、在DOS環(huán)境下,代表鍵盤和顯示器的設(shè)備文件名為A、PRNB、CONC、NULD、LPT標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題考查DOS下面的虛擬設(shè)備文件,選項(xiàng)A的PRN表示打印機(jī),選項(xiàng)B中的CON表示鍵盤或屏幕,選項(xiàng)C的NUL表示虛擬空設(shè)備,選項(xiàng)D的LPT表示并口。2、下列描述中正確的是A、一個(gè)邏輯數(shù)據(jù)結(jié)構(gòu)只能有一種存儲(chǔ)結(jié)構(gòu)B、數(shù)據(jù)的邏輯結(jié)構(gòu)屬于線性結(jié)構(gòu),存儲(chǔ)結(jié)構(gòu)屬于非線性結(jié)構(gòu)C、一個(gè)邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲(chǔ)結(jié)構(gòu),且各種存儲(chǔ)結(jié)構(gòu)不影響數(shù)據(jù)處理的效率D、一個(gè)邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲(chǔ)結(jié)構(gòu),且各種存儲(chǔ)結(jié)構(gòu)影響數(shù)據(jù)處理的效率標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:數(shù)據(jù)的邏輯結(jié)構(gòu)是指數(shù)據(jù)集合中各數(shù)據(jù)元素之間所固有的邏輯關(guān)系;數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)是在對數(shù)據(jù)進(jìn)行處理時(shí),各數(shù)據(jù)元素在計(jì)算機(jī)中的存儲(chǔ)關(guān)系。數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)是指數(shù)據(jù)的邏輯結(jié)構(gòu)在計(jì)算機(jī)中的表示,一種邏輯結(jié)構(gòu)可以表示成多種存儲(chǔ)結(jié)構(gòu);而采用不同的存儲(chǔ)結(jié)構(gòu),其數(shù)據(jù)處理的效率是不同的。3、某系統(tǒng)結(jié)構(gòu)圖如下圖所示該系統(tǒng)結(jié)構(gòu)圖的深度是()。A、1B、2C、3D、4標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:深度表示控制的層數(shù)。本題中,“某系統(tǒng)”為第1層,“功能1、功能2…功能n”為第二層,“功能2.1、功能2.2、功能2.3、功能n.1、功能n.2”為第3層,“功能2.2.1、功能2.2.2”為第4層,共4層,故深度為4。4、函數(shù)rewind(fp)的作用是()。A、使fp指定的文件的位置指針重新定位到文件的開始位置B、將fp指定的文件的位置指針指向文件中所要求的特定位置C、使fp指定的文件的位置指針向文件的末尾D、使fp指定的文件的位置指針自動(dòng)移至下一個(gè)字符位置標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:位置指針重返文件頭函數(shù)rewind()的調(diào)用形式為:rewind(fp)。其中,“fp”是指向文件的文件型指針。rewind(fp)的功能是:使fp指定的文件的位置指針重新定位到文件的開始位置。5、下列選項(xiàng)中屬于面向?qū)ο笤O(shè)計(jì)方法主要特征的是A、繼承B、自頂向下C、模塊化D、逐步求精標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:面向?qū)ο笤O(shè)計(jì)方法的主要特征有封裝性、繼承性和多態(tài)性。而結(jié)構(gòu)化程序設(shè)計(jì)方法的主要原則有自頂向下,逐步求精,模塊化,限制使用goto語句。6、設(shè)順序表的長度為40,對該表進(jìn)行冒泡排序。在最壞情況下需要的比較次數(shù)為A、780B、820C、40D、41標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:冒泡排序(BubbleSort),是一種計(jì)算機(jī)科學(xué)領(lǐng)域的較簡單的排序算法。冒泡排序算法的運(yùn)作如下:比較相鄰的元素。如果第一個(gè)比第二個(gè)大,就交換他們兩個(gè);對每一對相鄰元素作同樣的工作,從開始第一對到結(jié)尾的最后一對。在這一點(diǎn),最后的元素應(yīng)該會(huì)是最大的數(shù);針對所有的元素重復(fù)以上的步驟,除了最后一個(gè);持續(xù)每次對越來越少的元素重復(fù)上面的步驟,直到?jīng)]有任何一對數(shù)字需要比較。冒泡排序的最壞時(shí)間復(fù)雜度為(n*(n-1))/2=780。7、通過鍵盤輸入數(shù)據(jù),為數(shù)組中的所有元素賦值,在程序中下劃線處應(yīng)填入的是()。#nclude#defineN10voidfun(intx[N]){inti=0;while(i<N)scanf(’’%d’’,______);}A、x[i+1]B、x+iC、x+(i++)D、X[++i]標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:程序通過while循環(huán)來給數(shù)組元素賦值,賦值語句通過調(diào)用scanf函數(shù)來實(shí)現(xiàn)。scanf函數(shù)從鍵盤接收數(shù)據(jù),注意scanf的第二個(gè)參數(shù)必須是地址,選項(xiàng)A和選項(xiàng)D不是地址,錯(cuò)誤。選項(xiàng)B和選項(xiàng)C是地址,但是選項(xiàng)B的i值不會(huì)發(fā)生變化,循環(huán)體內(nèi)每次都是給同一個(gè)元素賦值,不滿足要求,選項(xiàng)C正確。8、以下選項(xiàng)中,合法的一組C語言數(shù)值常量是()。A、12.0Xa234.5e0B、028.5e-3-0xfC、.1774e1.50abcD、0x8A10,0003.e5標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:考查整型常量、實(shí)型常量。選項(xiàng)B)的"028"錯(cuò),以0開頭表示為八進(jìn)制整常數(shù),不能出現(xiàn)數(shù)字8;選項(xiàng)C)的"4e1.5"錯(cuò),e后面應(yīng)為整數(shù),"0abc"錯(cuò),八進(jìn)制整常數(shù)只能由0~7構(gòu)成;選項(xiàng)D)的"10,000"錯(cuò),C語言沒有千分號(hào),所以答案選A)。9、有以下程序#includeintfun(intx,inty){if(x==y)return(x);elsereturn((x+y)/2);}main(){inta=4,b=5,c=6;printf("%d\n",fun(2*a,fun(b,c)));}程序運(yùn)行后的輸出結(jié)果是A、3B、6C、8D、12標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:fun(b,c)即fun(5,6),5!=6,所以返回(5+6)/2=5;fun(2*a,5)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度美食廣場租賃合同及商家入駐協(xié)議3篇
- 2025個(gè)人掛靠建筑公司承包合同實(shí)施細(xì)則8篇
- 二零二五年度車體廣告品牌曝光量提升合同4篇
- 2025綠化工程分包合同范本
- 2025房企合同管理和設(shè)計(jì)采購施工合同等規(guī)范管理培訓(xùn)大綱
- 2025大連市現(xiàn)行住宅室內(nèi)裝飾裝修工程合同示本
- 2025年度老舊小區(qū)電力線路改造承包電工合同3篇
- 2025年度個(gè)人銷售傭金合同(含客戶信息保密協(xié)議)4篇
- 2025版新能源汽車停車場委托管理與充電服務(wù)合同3篇
- 2025年度環(huán)保設(shè)施建設(shè)與運(yùn)營采購合同3篇
- 三年級數(shù)學(xué)添括號(hào)去括號(hào)加減簡便計(jì)算練習(xí)400道及答案
- 健康指南如何正確護(hù)理蠶豆病學(xué)會(huì)這些技巧保持身體健康
- 蘇教版五年級上冊數(shù)學(xué)簡便計(jì)算300題及答案
- 澳洲牛肉行業(yè)分析
- 老客戶的開發(fā)與技巧課件
- 計(jì)算機(jī)江蘇對口單招文化綜合理論試卷
- 成人學(xué)士學(xué)位英語單詞(史上全面)
- KAPPA-實(shí)施方法課件
- GB/T 13813-2023煤礦用金屬材料摩擦火花安全性試驗(yàn)方法和判定規(guī)則
- GB/T 33084-2016大型合金結(jié)構(gòu)鋼鍛件技術(shù)條件
- 航道整治課程設(shè)計(jì)
評論
0/150
提交評論