版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
國家二級C語言機試(選擇題)模擬試卷27(共9套)(共255題)國家二級C語言機試(選擇題)模擬試卷第1套一、選擇題(本題共25題,每題1.0分,共25分。)1、下列敘述中正確的是A、棧是一種先進先出的線性表B、隊列是一種后進先出的線性表C、棧與隊列都是非線性結(jié)構(gòu)D、以上三種說法都不對標準答案:D知識點解析:棧是先進后出的線性表,隊列是先進先出的線性表,二者均為線性結(jié)構(gòu)。2、以下選項中不屬于C語言標識符的是A、用戶標識符B、關(guān)鍵字C、常量D、預定義標識符標準答案:C知識點解析:C語言的標識符可分為以下3類:①關(guān)鍵字。C語言預先規(guī)定了一批標識符,它們在程序中都代表著固定的含義,不能另作他用。這些字符稱為關(guān)鍵字。例如,int、dotlble、if、else、while、for等。②預定義標識符。即預先定義并具有特定含義的標識符。③用戶標識符。由用戶根據(jù)需要定義的標識符稱為用戶標識符,又稱自定義標識符,一般用來給變量、函數(shù)、數(shù)組等命名。3、下列關(guān)于二叉樹的敘述中,正確的是A、葉子結(jié)點總是比度為2的結(jié)點少一個B、葉子結(jié)點總是比度為2的結(jié)點多一個C、葉子結(jié)點數(shù)是度為2的結(jié)點數(shù)的兩倍D、度為2的結(jié)點數(shù)是度為1的結(jié)點數(shù)的兩倍標準答案:B知識點解析:由二叉樹的性質(zhì)可以知道在二叉樹中葉子結(jié)點總是比度為2的結(jié)點多一個。4、執(zhí)行以下程序段后,s的值為()。inta[]={1,2,3,4,5,6,7,8,9},s=0,k;for(k=0;k<8;k+=2)s+=*(a+k);prinff(“%d\n”,s);A、13B、16C、17D、45標準答案:B知識點解析:數(shù)組元素為:a[0]=1,a[1]=2…a[8]=9。k=0時,s=s+*(a+k)=0+1=1;k=2時,s=1+*(a+2)=l=3=4;k=4時,s=4+5=9;k=6時,s=9+7=16。5、以下正確的字符串常量是A、’abc’B、OlympicGamesC、""D、\\\標準答案:C知識點解析:字符串常量是由雙引號括起來的一串字符。在C語言中,以一個反斜線開頭后跟一個特定的字符,用來代表一個特定的ASCII字符。利用兩個’\\’表示一個反斜杠,因此選項D)的表示無法確認表示幾個反斜杠。6、建立表示學生選修課程活動的實體聯(lián)系模型,其中的兩個實體分別是()。A、學生和學號B、課程和課程號C、課程和成績D、學生和課程標準答案:D知識點解析:實體是概念世界中的基本單位,是客觀存在并可以相互區(qū)別的事物。要建立表示學生選修課程活動的實體聯(lián)系模型,能互相區(qū)別并可以聯(lián)系起來的實體是學生和課程。7、有以下程序:#include<stdio.h>charf(charx){returnx*x%10+′0′;}main(){chara;intb=0;for(a=0;a<5;a+=1){b=f(a);putchar(b);}}則程序的輸出結(jié)果是()。A、014916B、01234C、01496D、00000標準答案:C知識點解析:該題目中x*x%10,即x和x相乘后,結(jié)果再對10求余操作。主函數(shù)中通過for語句使變量a從0到4進行取值,當a=0時,調(diào)用函數(shù)f后,返回值為0,賦給b,并且進行字符輸出;當a=1時,返回值為1賦給b,并且進行字符輸出;當a=2時,返回值為4賦給b,并且進行字符輸出;當a=3時,返回值為9賦給b,并且進行字符輸出;當a=4時,返回值為6賦給b,并且進行字符輸出。故C選項正確。8、以下選項中,合法的一組C語言數(shù)值常量是()。A、12.0Xa234.5e0B、028.5e-3-0xfC、.1774e1.50abcD、0x8A10,0003.e5標準答案:A知識點解析:C語言中,八進制整型常量的開頭數(shù)字是0,十六進制整型常量的開頭數(shù)字是0x或0X。C語言中的實型常量有兩種表示形式:小數(shù)形式,表示的實型常量必須要有小數(shù)點;指數(shù)形式,以e或E后跟一個整數(shù)來表示以10為底數(shù)的冪數(shù),且規(guī)定字母e或E之前必須要有數(shù)字,且e或E后面的指數(shù)必須為整數(shù)。B選項中028錯誤,八進制中沒有數(shù)字8。C選項中4e1.5中e后面的指數(shù)不是整數(shù)。D選項中10,000數(shù)字之間不能有逗號。9、下列描述中錯誤的是()。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)用程序的變化。10、有以下程序main(){intx=1,y=0;if(!x)y++;elseif(x=0)if(x)y+=2;elsey+=3;printf("%dha",y);}程序運行后的輸出結(jié)果是A、2B、0C、1D、3標準答案:B知識點解析:x=1,if和elseif的條件都不滿足,故y值不改變輸出。11、若在定義語句:inta,b,c,*p=&c;接著執(zhí)行以下選項中的語句,則能正確執(zhí)行的語句是A、scanf(’’%d%d%dtt,a,b,c);B、scanf(’’%dt.,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ù)變量的地址。12、有以下程序段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=30c=10C、a=10b=50c=10D、a=50b=30c=50標準答案:C知識點解析:本題的程序段首先定義三個整型變量a,b,c,并且其初始值分別等于10,50,30,然后判斷a>b是否成立,如果條件成立,則把b的值賦給a,把c的值賦給b。由a和b的初始值可知,此條件表達式不成立,所以a和b的值保持不變。再執(zhí)行下一條語句,把a的值賦給c,所以c的當前值等于10,最后由輸出語句輸出變量a,b,c的當前值,分別為10,50.10。13、以下關(guān)于retum語句的敘述中正確的是A、一個自定義函數(shù)中必須有一條return語句B、一個自定義函數(shù)中可以根據(jù)不同情況設(shè)置多條return語句C、定義成void類型的函數(shù)中可以有帶返回值的return語句D、沒有return語句的自定義函數(shù)在執(zhí)行結(jié)束時不能返回到調(diào)用處標準答案:B知識點解析:return語句主要用于返回函數(shù)的值。在一個自定義函數(shù)中,可以根據(jù)不同的情況設(shè)置多條return語句返回函數(shù)的值。14、數(shù)據(jù)庫設(shè)計過程不包括A、概念設(shè)計B、邏輯設(shè)計C、物理設(shè)計D、算法設(shè)計標準答案:D知識點解析:數(shù)據(jù)庫設(shè)計的四個階段是:需求分析、概念設(shè)計、邏輯設(shè)計和物理設(shè)計。15、以下選項中,合法的一組C語言數(shù)值常量是A、12.0Xa234.5e0B、028.5e-3-0xfC、.1774e1.50abcD、0x8A10.0003.e5標準答案:A知識點解析:八進制數(shù)其開頭必須是數(shù)字“0”,其數(shù)字包括0~7,而在選項B)中,028是錯誤的。浮點數(shù)據(jù)的指數(shù)形式表示常量中,C語言規(guī)定字母e或E之前必須要有數(shù)字,且e或E之后的指數(shù)必須為整數(shù),而選項C)中4e1.5是錯誤的。在選項D)中,整型數(shù)據(jù)10,000的表示形式是錯誤的。16、學校的每個社團都有一名團長,且一個同學可同時擔任多個社團的團長,則實體團長和實體社團間的聯(lián)系是A、一對多B、多對多C、多對一D、一對一標準答案:A知識點解析:一對多關(guān)系是關(guān)系數(shù)據(jù)庫中兩個表之間的一種關(guān)系,該關(guān)系中第一個表中的單個行可以與第二個表中的一個或多個行相關(guān),但第二個表中的一個行只可以與第一個表中的一個行相關(guān)。本題中,一個團長可以對應(yīng)多個社團,一個社團只有一個團長,因此是一對多關(guān)系。17、以下敘述中正確的是A、整型常量和實型常量都是數(shù)值型常量B、常量的類型不能從字面形式上區(qū)分,需要根據(jù)類型名來決定C、預定義的標識符是C語言關(guān)鍵字的一種,不能另作它用D、只能在函數(shù)體內(nèi)定義變量,其他地方不允許定義變量標準答案:A知識點解析:整型常量和文型常量都是數(shù)值型常量,選項A)正確;常量的類型可以從字面上區(qū)分,比如整型常量不能有小數(shù)點,組成字符為0~9等,選項B)錯誤;預定義標識符,即預先定義并具有特定含義的標識符,可以另作他用,不過更改了原有的含義,選項C)錯誤;變量可以定義在程序中任何的地方,屬于不同的變量,選項D)錯誤。18、若變量x、y己正確定義并賊值,以下符合C語言語法的表達式是A、++x,y=x-B、x+1=yC、x=x+10=x+yD、double(x)/10標準答案:A知識點解析:用逗號將表達式連接起來的式子稱為逗號表達式。其表達式的一般形式為:表達式1,表達式2,……,表達式n。最后一個表達式的值就是此逗號表達式的值。所以選項A)為C語言中的逗號表達式。賦值表達式的左側(cè)只能是變量,不能是常量或表達式。強制類型轉(zhuǎn)換表達式的形式為:(類型名)(表達式),其中(類型名)稱為強制類型轉(zhuǎn)換運算符,數(shù)據(jù)類型兩邊的圓括號不能省略。19、設(shè)有定義:intk=0;以下選項的四個表達式中與其他三個表達式的值不相同的是A、++kB、k+=1C、k++D、k+1標準答案:C知識點解析:++k,先使得k的值自增1后再使用,k++是先取得k的值再將k的值自增1,所以C選項中表達式的值為0,而其他三個表達式的值均為1,所以選擇C?20、若有以下程序main(){inta=-2,b=0;do{++b;}while(a++);printf("%d,%d\n",a,b);}則程序的輸出結(jié)果是A、0,2B、1,2C、1,3D、2,3標準答案:C知識點解析:由于a的初始值等于-2,所以while循環(huán)語言執(zhí)行三次結(jié)束,第一次a=-2,b=1,然后判斷循環(huán)條件a++非零,執(zhí)行第二次循環(huán)體a=-1,b=2,判斷循環(huán)條件非零,執(zhí)行循環(huán)體a=0,b=3,判斷循環(huán)條件為0,此時變量a的值等于1。21、與數(shù)學表達式x≥y≥z對應(yīng)的C語言表達式是A、(x>=y>=z)B、(x>=y)&&(y>=z)C、(x>=y)!(y>=z)D、(x>=y)||(y>=x)標準答案:B知識點解析:若要表示x大于等于y,同時y大于等于z,需要用邏輯與表達式連接。22、以下敘述中正確的是A、對于變量而言,“定義”和“說明”這兩個詞實際上是同一個意思B、在復合語句中不能定義變量C、全局變量的存儲類別可以是靜態(tài)類D、函數(shù)的形式參數(shù)不屬于局部變量標準答案:C知識點解析:用static說明符說明全局變量時,此變量可稱作靜態(tài)全局變量。靜態(tài)全局變量只限于本編譯單位使用,不能被其他編譯單位所引用。在一個函數(shù)內(nèi)部定義的變量(包括形參)是局部變量,它只在本函數(shù)范圍內(nèi)有效。不同函數(shù)中可以使用相同名字的局部變量,它們代表不同的對象,互不影響。在函數(shù)內(nèi)部復合語句中也可以定義變量,這些變量都是局部變量,只在本復合語句中有效。23、有以下程序段charname[20];intnum;scanf("name=%snum=%d",name,&num);當執(zhí)行上述程序段,并從鍵盤輸入:name=Lilinum=1001<回車>后,name的值為A、name=Lilinum=1001B、name=LiliC、Lilinum=D、Lili標準答案:D知識點解析:在輸入格式控制"name=%snum=%d"中,普通字符"name=num="在輸入時要原樣輸入,而格式控制符%s和%d對應(yīng)各自的輸入項,將輸入的數(shù)據(jù)賦給相應(yīng)的輸入項。本題中輸入"name=Lilinum=1001<回車>"后,將字符串Lili賦給字符數(shù)組name,整數(shù)1001賦給變量num。因此D選項正確。24、若有定義typedefint*T;Ta[10];則a的定義與下面哪個語句等價A、int(*a)[10];B、int*a[10];C、int*a;D、inta[10];標準答案:B知識點解析:本題考查typedef的使用方法,typedef對已存在的類型使用一個新的名字,其中本題中int*用T來代替,所以定義Ta[10];就相當于是int*a[10];選項B正確。25、以下敘述中正確的是()。A、當對文件的讀(寫)操作完成之后,必須將它關(guān)閉,否則可能導致數(shù)據(jù)丟失B、打開一個已存在的文件并進行了寫操作后,原有文件中的全部數(shù)據(jù)必定被覆蓋C、在一個程序中當對文件進行了寫操作后,必須先關(guān)閉該文件然后再打開,才能讀到第1個數(shù)據(jù)D、C語言中的文件是流式文件,因此只能順序存取數(shù)據(jù)標準答案:A知識點解析:B)選項中打開一個已存在的文件并進行了寫操作后,原有文件中的全部數(shù)據(jù)不一定被覆蓋,也可以對源文件進行追加操作等。C選項中在一個程序中當對文件進行了寫操作后,不用先關(guān)閉該文件然后再打開,才能讀到第1個數(shù)據(jù),可以用fseek()函數(shù)進行重新定位即可。D選項中,C語言中的文件可以進行隨機讀寫。國家二級C語言機試(選擇題)模擬試卷第2套一、選擇題(本題共25題,每題1.0分,共25分。)1、以下敘述中正確的是A、程序必須包含所有三種基本結(jié)構(gòu)才能成為一種算法B、如果算法非常復雜,則需要使用三種基本結(jié)構(gòu)之外的語句結(jié)構(gòu),才能準確表達C、只有簡單算法才能在有限的操作步驟之后結(jié)束D、我們所寫的每條C語句,經(jīng)過編譯最終都將轉(zhuǎn)換成二進制的機器指令標準答案:D知識點解析:C語句構(gòu)成了函數(shù),函數(shù)構(gòu)成的程序,經(jīng)過編譯轉(zhuǎn)換成二進制代碼后可以運行,算法是指為解決某個特定問題而采取的確定且有限的步驟,可以利用代碼來描述算法,而算法+數(shù)據(jù)結(jié)構(gòu)才是程序,結(jié)構(gòu)化的程序由順序結(jié)構(gòu)、循環(huán)結(jié)構(gòu)和選擇結(jié)構(gòu)三種基小結(jié)構(gòu)組成。由這三種基本結(jié)構(gòu)組成的算法可以解決任何復雜的問題,反之則不一定,所有算法必須在有限步驟后結(jié)束。2、以下描述中,不是線性表順序存儲結(jié)構(gòu)特征的是()。A、可隨機訪問B、需要連續(xù)的存儲空間C、不便于插入和刪除D、邏輯相鄰的數(shù)據(jù)物理位置上不相鄰標準答案:D知識點解析:線性表的順序存儲是用一片連續(xù)的空間來存放數(shù)據(jù)元素,其特點是邏輯上相鄰的元素在物理位置上也相鄰。數(shù)據(jù)元素之間邏輯上的先后關(guān)系自動隱含在物理位置的相鄰元素之中,因此不需要另外開辟空間來保存元素之間的關(guān)系。3、下面描述中,不屬于軟件危機表現(xiàn)的是A、軟件過程不規(guī)范B、軟件開發(fā)生產(chǎn)率低C、軟件質(zhì)量難以控制D、軟件成本不斷提高標準答案:A知識點解析:軟件危機主要表現(xiàn)在以下6個方面:①軟件需求的增長得不到滿足。②軟件開發(fā)成本和進度無法控制。③軟件質(zhì)量難以保證。④軟件不可維護或維護程度非常低。⑤軟件的成本不斷提高。⑥軟件開發(fā)生產(chǎn)率的提高趕不上硬件的發(fā)展和應(yīng)用需求的增長。4、在進行邏輯設(shè)計時,將E-R圖中實體之間聯(lián)系轉(zhuǎn)換為關(guān)系數(shù)據(jù)庫的()。A、元組B、關(guān)系C、屬性D、屬性的值域標準答案:B知識點解析:E-R模型與關(guān)系模型間的轉(zhuǎn)換關(guān)系如下表所示。5、有以下程序main(){inta=-2,b=0;while(a++&&++b);printf(’’%d,%d\n’’,a,b);)程序運行后輸出結(jié)果是A、0,3B、1,2C、1,3D、0,2標準答案:B知識點解析:循環(huán)體為空,共執(zhí)行2次。第一次變量a初值為-2,b初值為0,表達式a++&&++b值為l,同時a的值為-1,b的值為1,第二次循環(huán)條件判斷以后,a的值為0,b的值2,執(zhí)行循環(huán)體空,第三次判斷條件表達式值為0,不執(zhí)行循環(huán)體,而a的值為1,但是表達式a++的值為0,因此不計算表達式++b的值,b的值仍為2。6、設(shè)有定義:chars[81];inti=0;,以下不能將一行(不超過80個字符)帶有空格的字符串正確讀入的語句或語句組是()。A、gets(s);B、while((s[i++]=getchar())!:’\n’);s[i]=’\0’;C、scanf(’’%s’’,s);D、do{scanf(’’%c’’,&s[i]);}while(s[i++]!=’\n’);s[i]=’\0;標準答案:C知識點解析:使用scanf()輸入字符串時,空格和回車符都作為輸入數(shù)據(jù)的分隔符而不能被讀入,而應(yīng)該使用gets(s)。7、下面不屬于對象基本特點的是A、標識唯一性B、可復用性C、多態(tài)性D、封裝性標準答案:B知識點解析:對象有下列一些基本特點,即標識唯一性、分類性、多態(tài)性、封裝性和模塊獨立性。所以選項B正確。8、以下敘述中正確的是A、函數(shù)調(diào)用時,不必區(qū)分函數(shù)名稱的大小寫B(tài)、調(diào)用函數(shù)時,函數(shù)名必須與被調(diào)用的函數(shù)名完全一致C、函數(shù)名允許用數(shù)字開頭D、在函數(shù)體中只能出現(xiàn)一次return語句標準答案:B知識點解析:在標準C中,函數(shù)的定義形式為:函數(shù)返回值的類型名函數(shù)名(類型名形式參數(shù)1,類型名形式參數(shù)2,…){說明部分語句部分}需要說明的是函數(shù)名和形式參數(shù)都是由用戶命名的標識符,在同一程序中,函數(shù)名必須惟一,形式參數(shù)名只要在同一函數(shù)中惟一即可,與其他函數(shù)中的變量可以同名。return語句的作用是返回函數(shù)的值,在函數(shù)中可以出現(xiàn)多個或者沒有。9、下面選項中關(guān)于編譯預處理的敘述正確的是A、凡是以#}號開頭的行,都被稱為編譯預處理命令行B、預處理命令行必須使用分號結(jié)尾C、預處理命令行不能出現(xiàn)在程序的最后一行D、預處理命令行的作用域是到最近的函數(shù)結(jié)束處標準答案:A知識點解析:在C語言中,凡是以“#”號開頭的行,都稱為編譯預處理命令行。這些預處理命令組成的預處理命令行必須在一行的開頭以“#”號開始,每行的末尾不能用“;”號結(jié)束,以區(qū)別于c語句、定義和說明語句。根據(jù)需要,命令行可以出現(xiàn)在程序的任何一行的開始部位,其作用一直持續(xù)到源文件的末尾。10、若有定義語句charc=’\101’;則變量c在內(nèi)存中占A、2個字節(jié)B、3個字節(jié)C、1個字節(jié)D、4個字節(jié)標準答案:C知識點解析:每個字符變量被分配一個字節(jié)的內(nèi)存空間,因此只能存放一個字符。字符值是以ASCII碼的形式存放在變量的內(nèi)存單元之中的。11、有以下程序#includeintfun(inta,intb){if==0)returna;elsereturn(fun(--a,--b));}main(){printf("%d\n",fun(4,2));}程序的運行結(jié)果是A、1B、2C、3D、4標準答案:B知識點解析:由程序可知函數(shù)fun(inta,intb)是一個遞歸函數(shù)。所以當主函數(shù)中調(diào)用fun(4,2)時,其執(zhí)行過程如下:fun(4,2)->fun(3,1)->fun(2,0),其返回值為2。12、以下選項中,當x為大于1的奇數(shù)時,值為0的表達式是A、x/2B、x%2==0C、x%2!=0D、x%2==1標準答案:B知識點解析:A選項的值為不定值,但絕對不是0,算術(shù)運算符的優(yōu)先級高于關(guān)系運算符的優(yōu)先級,所以當x為大于1的奇數(shù)時,B選項的值為假,即0?C選項的值為真,即1,D選項的值為真,即1,選項B正確。13、有以下程序main(){inta=3;do{printf("%d,",a-=2);}while(!(-a);printf("\n");}程序運行后的輸出結(jié)果是A、1,B、1,-2,C、3,0,D、1,0標準答案:B知識點解析:循環(huán)體執(zhí)行兩次。首先輸出a=1,然后判斷表達式!(--A,a為0,循環(huán)條件表達式值為1,執(zhí)行第二次循環(huán)體,輸出a=-2。判斷循環(huán)條件表達式值為0,循環(huán)退出。14、有以下程序#includemain(){intx=8;for(;x>0;x--){if(x%3){printf("%d,",x--);continue;)pfintf("%d,",--x);}}程序的運行結(jié)果是A、8,7,5,2,B、9,7,6,4,C、7,4,2,D、8,5,4,2,標準答案:D知識點解析:“x--”表示先執(zhí)行程序,再令x的值減1;而“--x”表示令x的值減1,再執(zhí)行程序。x=8時,x%3為非0值,執(zhí)行語句{prinf("%d,",x--);continue;},輸出“8,”,此時經(jīng)過x--,x的值變?yōu)?,跳出此次循環(huán);執(zhí)行x--,x=6,x%3=0,后面語句不執(zhí)行,執(zhí)行語句printf("%d,",--x);,輸出“5,”;執(zhí)行for語句中的x--,得到x=4,判斷x%3,輸出“4,”,執(zhí)行兩次x--后,x=2,執(zhí)行{printf("%d,",x--);continue;}后,輸出“2,”;然后執(zhí)行兩次x--后,x=0,不符合“x>0”,循環(huán)全部結(jié)束。15、若以下選項中的變量a,b,y均已正確定義并賦值,則語法正確的switch語句是A、switch(a*a+b*b){default:break;case3:y=a+b;break;case2:y=a-b;break;}B、switch(a+b){case1:case3:y=a+b;break;case0:case4:y=a-b;}C、switch(a+9){casea:y=a-b;caseb:y=a+b;}D、switcha*b{case10:y=a+b;default:y=a-b;}標準答案:A知識點解析:使用switch語句直接處理多個分支,其一般形式為:switch(表達式){case常量表達式1:語句1;break;case常量表達式a:語句n;break;default:語句n+1;break;}switch.語句的執(zhí)行流程是:首先計算switch后面圓括號中表達式的值,然后用此值依次與各個case的常量表達式比較,若圓括號中表達式的值與基個case后面的常量表達式的值相等,就執(zhí)行此case后面的語句,執(zhí)行后遇break語句就退出switch語句;若圓括號中表達式的值與所有case后面的常量表達式都不等,則執(zhí)行default后面的語句n+1,然后退出switch語句。對于選項B),case語句和常量之間沒有空格,而選項C)中的case后面為變量,選項D)中switch后面沒給出圓括號。16、若有以下程序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。17、有以下程序#includeintf(intx,inty){return((y-x)*x);}main(){inta=3,b=4,c=5,d;d=f(f(a,b),f(a,c));printf("%d\n",d);}程序運行后的輸出結(jié)果是()A、9B、10C、8D、7標準答案:A知識點解析:考查函數(shù)的返回值。d=f(f(a,b),f(a,c))=f((b-a)*a,(c-a)*a)=f(3,6)=(6-3)*3=9,所以答案選A。18、若有語句:char*line[5];,以下敘述中正確的是A、定義line是一個數(shù)組,每個數(shù)組元素是一個基類型為char的指針變量B、定義line是一個指針變量,該變量可以指向一個長度為5的字符型數(shù)組C、定義line是一個指針數(shù)組,語句中的*號稱為間址運算符D、定義line是一個指向字符型函數(shù)的指針標準答案:A知識點解析:本題考查指針數(shù)組的定義。本題中l(wèi)ine是一個指針數(shù)組,有5個元素,每個元素都是一個指針變量。19、若有以下程序#include<stdio.h>main(){inta=1,b=2,c=3,d=4,r=0;if(a!=1);elser=1;if(b==2)r+=2;else;if(c!=3)r+=3;else;if(d==4)r+=4;printf("%d\n",r);}則程序的輸出結(jié)果是A、10B、6C、7D、3標準答案:C知識點解析:程序代碼中有四條并列的if語句,第一條if表達式a!=1不成立,執(zhí)行else分支,r=1;第二條if表達式b==2成立,執(zhí)行r+=2,r=3;第三條if語句c!=3不成立,執(zhí)行else分支,分支為空語句;第四條if分支d==4成立,執(zhí)行該if分支語句,r+=4,r=7。20、設(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]。21、若變量已正確定義for(x=0,y=0;(y!=99&&x<4);x++)則以上for循環(huán)A、執(zhí)行3次B、執(zhí)行4次C、執(zhí)行無限次D、執(zhí)行次數(shù)不定標準答案:B知識點解析:本題重點考察for語句的循環(huán)次數(shù),for(x=0,y=0;(y!=99&&x<4);x++),y!=99&&x<4即循環(huán)條件當y不等于99以及x<4時,執(zhí)行循環(huán)語句,當有一個條件不成立時,均結(jié)束循環(huán),因此循環(huán)4次,B選項正確。22、有以下程序#includemain(){chara=’H’;a=(a>=’A’&&a<=’Z’)?(a+32):a;printf("%c\n",a);}程序運行后的輸出結(jié)果是A、HB、hC、AD、a標準答案:B知識點解析:條件運算符構(gòu)成的選擇結(jié)構(gòu)的一般形式為:表達式1?表達式2:表達式3。其求值規(guī)則為:如果表達式1的值為真,則以表達式2的值作為條件表達式的值,否則以表達式2的值作為整個條件表達式的值。該題目中首先給字符變量a賦值為’H’。語句a=(a>=’A’&&a<=’Z’).(a+32):a;即將大寫字母變?yōu)樾懽帜?。因此B選項正確。23、下列關(guān)于棧敘述正確的是A、算法就是程序B、設(shè)計算法時只需要考慮數(shù)據(jù)結(jié)構(gòu)的設(shè)計C、設(shè)計算法時只需要考慮結(jié)果的可靠性D、以上三種說法都不對標準答案:D知識點解析:算法是指解題方案的準確而完整的描述,算法不等于程序,也不等于計算方法,所以A)錯誤。設(shè)計算法時不僅要考慮對數(shù)據(jù)對象的運算和操作,還要考慮算法的控制結(jié)構(gòu)。24、在軟件開發(fā)中,需求分析階段產(chǎn)生的主要文檔是A、可行性分析報告B、軟件需求規(guī)格說明書C、概要設(shè)計說明書D、集成測試計劃標準答案:B知識點解析:A錯誤,可行性分析階段產(chǎn)生可行性分析報告。C錯誤,概要設(shè)計說明書是總體設(shè)計階段產(chǎn)生的文檔。D錯誤,集成測試計劃是在概要設(shè)計階段編寫的文檔。B正確,需求規(guī)格說明書是后續(xù)工作如設(shè)計、編碼等需要的重要參考文檔。25、有以下程序#includeintfun(int(*s)[4],intn,intk){intm,i;m=s[0][k];for(i=1;i<n;i++)if(s[i][k]>m)m=s[i][k];returnm;}main(){inta[4][4]={{1,2,3,4},{11,12,13,14},{21,22,23,24},{31,32,33,34}};printf("%d\n",fun(a,4,0));}程序的運行結(jié)果是A、4B、34C、31D、32標準答案:C知識點解析:本題重點考察二維數(shù)組名作為實參進行參數(shù)傳遞,在主函數(shù)中調(diào)用了fun函數(shù),實參為二維數(shù)組名a和兩個整數(shù)4、0,這樣對應(yīng)定義fun函數(shù)首部也有三種形式,這里采用了第一種形式,也就是行指針,這樣在fun函數(shù)對s[i][j]進行操作實際上就是對主函數(shù)中的a[i][j]進行操作,再分析fun函數(shù)的作用便可知,是求二維數(shù)組第0列中最大的那個元素。因此C選項正確。國家二級C語言機試(選擇題)模擬試卷第3套一、選擇題(本題共40題,每題1.0分,共40分。)1、以下敘述中正確的是A、程序必須包含所有三種基本結(jié)構(gòu)才能成為一種算法B、如果算法非常復雜,則需要使用三種基本結(jié)構(gòu)之外的語句結(jié)構(gòu),才能準確表達C、只有簡單算法才能在有限的操作步驟之后結(jié)束D、我們所寫的每條C語句,經(jīng)過編譯最終都將轉(zhuǎn)換成二進制的機器指令標準答案:D知識點解析:C語句構(gòu)成了函數(shù),函數(shù)構(gòu)成的程序,經(jīng)過編譯轉(zhuǎn)換成二進制代碼后可以運行,算法是指為解決某個特定問題而采取的確定且有限的步驟,可以利用代碼來描述算法,而算法+數(shù)據(jù)結(jié)構(gòu)才是程序,結(jié)構(gòu)化的程序由順序結(jié)構(gòu)、循環(huán)結(jié)構(gòu)和選擇結(jié)構(gòu)三種基本結(jié)構(gòu)組成。由這三種基本結(jié)構(gòu)組成的算法可以解決任何復雜的問題,反之則不一定,所有算法必須在有限步驟后結(jié)束。2、在深度為7的滿二叉樹中,葉子結(jié)點的個數(shù)為A、32B、31C、64D、63標準答案:C知識點解析:所謂滿二叉樹是指這樣的一種二叉樹:除最后一層外,每一層上的所有結(jié)點都有兩個子結(jié)點。也就是在滿二叉樹中,每一層上的結(jié)點數(shù)都是最大結(jié)點數(shù),即在滿二叉樹的第k層上有2k-1個結(jié)點,且深度為m的滿二叉樹有2m-1個結(jié)點。對于深度為7的滿二叉樹,葉子結(jié)點所在的是第7層,一共有27-1=64個葉子結(jié)點。全部結(jié)點共27-1=127個。3、對長度為n的線性表做快速排序,在最壞情況下,比較次數(shù)為()。A、nB、n-1C、n(n一1)D、n(n一1)/2標準答案:D知識點解析:假設(shè)線性表的長度為n,則在最壞情況下,冒泡排序需要經(jīng)過n/2遍的從前往后的掃描和n/2遍的從后往前的掃描,需要的比較次數(shù)為n(n-1)/2??焖倥判蚍ㄒ彩且环N互換類的排序方法,但由于它比冒泡排序法的速度快,因此稱為快速排序法。最壞情況下快速排序退化為冒泡排序。4、以下程序的輸出結(jié)果是()。#include<stdio.h>main(){inti;for(i=1;i<=5;i++){if(i%2)printf("*");elsecontinue;printf("#");}printf("$\n");}A、#*#*$B、*#*#$C、*#*#*#$D、*#*#*#$標準答案:D知識點解析:本題考查對continue語句功能的了解,由于循環(huán)體中有if語句存在,所以在循環(huán)過程中將會有選擇地執(zhí)行continue語句,遇到continue語句時,將會跳過循環(huán)體后半部分,提前結(jié)束本次循環(huán),進入下一循環(huán)的條件判斷。本題中,當i值為奇數(shù)時,表達式i%2值為1,輸出*#,否則無輸出。5、數(shù)據(jù)庫(DB)、數(shù)據(jù)庫系統(tǒng)(DBS)和數(shù)據(jù)庫管理系統(tǒng)(DBMS)之間的關(guān)系是()。A、DBS就是DB,也就是DBMSB、DBS包括DB和DBMSC、DB包括DBS和DBMSD、DBMS包括DB和DBS標準答案:B知識點解析:數(shù)據(jù)庫(DB)是指長期存儲在計算機內(nèi)的、有組織的、可共享的數(shù)據(jù)集合;數(shù)據(jù)庫管理系統(tǒng)(DBMS)是用來管理數(shù)據(jù)及數(shù)據(jù)庫的系統(tǒng);數(shù)據(jù)庫系統(tǒng)(DBS)是由數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、數(shù)據(jù)庫管理員、硬件等在一起的總稱。因此DBS包括DB和DBMS。6、有以下定義語句,編譯時會出現(xiàn)編譯錯誤的是A、chara=’\n’;B、chara="aa";C、chara=’a’;D、chara=’\x2d’;標準答案:B知識點解析:在選項B中,由兩個字符aa組成一個字符串賦給一個字符變量a時會出錯。7、關(guān)于C語言標識符,以下敘述中錯誤的是()。A、標識符可全部由數(shù)字組成B、標識符可全部由下畫線組成C、標識符可全部由小寫字母組成D、標識符可全部由大寫字母組成標準答案:A知識點解析:C語言標識符只能由字母、數(shù)字、下畫線構(gòu)成,且只能以字母、下畫線開頭,故選項A不正確。8、有以下程序:#includemain(){charx=2,y=2,z;z=(Y<<1)&(x>>1);prinff(“%d\n”,z);}程序的輸出結(jié)果是()。A、1B、0C、4D、8標準答案:B知識點解析:本題考查位運算<<和&。y<<1為4,x>>1為1,二者與運算后為0,故B選項正確。9、面向?qū)ο蠓椒ㄖ?,繼承是指A、一組對象所具有的相似性質(zhì)B、一個對象具有另一個對象的性質(zhì)C、各對象之間的共同性質(zhì)D、類之間共享屬性和操作的機制標準答案:D知識點解析:面向?qū)ο蠓椒ㄖ?,繼承是使用已有的類定義作為基礎(chǔ)建立新類的定義技術(shù)。廣義地說,繼承是指能夠直接獲得已有的性質(zhì)和特征,而不必重復定義它們。10、有以下程序#includemain(){inta1,a2;charc1,c2;scanf("%d%c%d%c",&a1,&c1,&a2,&c2);printf("%d,%c,%d,%c",a1,c1,a2,c2);}若想通過鍵盤輸入,使得a1的值為12,a2的值為34,c1的值為字符a,c2的值為字符b,程序輸出結(jié)果是:12,a,34,b則正確的輸入格式是(以下□代表空格,代表回車)A、12□a□34□bB、12,a,34,bC、12a34bD、12□a34□b標準答案:C知識點解析:本題考查scanf語句。scanf()函數(shù)是格式化輸入函數(shù),它從標準輸入設(shè)備(鍵盤)讀取輸入的信息。其調(diào)用格式為:scanf("<格式化字符串>",<地址表>)格式化字符串包括以下3類不同的字符;①格式化說明符:格式化說明符與前面用的printf()函數(shù)中的格式說明符基本相同。②空白字符:空白字符會使scanf()函數(shù)在讀操作中略去輸入中的一個或多個空白字符。③非空白字符:一個非空白字符會使scanf()函數(shù)在讀入時剔除掉與這個非空白字符相同的字符。由于在scanf函數(shù)中,幾個變量之間沒有任何間隔,所以輸入的時候,也同樣不應(yīng)該有間隔。11、有以下程序段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=30c=10C、a=10b=50c=10D、a=50b=30c=50標準答案:C知識點解析:本題的程序段首先定義三個整型變量a,b,c,并且其初始值分別等于10,50,30,然后判斷a>b是否成立,如果條件成立,則把b的值賦給a,把c的值賦給b。由a和b的初始值可知,此條件表達式不成立,所以a和b的值保持不變。再執(zhí)行下一條語句,把a的值賦給c,所以c的當前值等于10,最后由輸出語句輸出變量a,b,c的當前值,分別為lO,50,10。12、在帶鏈隊列中,經(jīng)過一系列正常的操作后,如果front=rear,則隊列中的元素個數(shù)為A、0或1B、0C、1D、隊列滿標準答案:A知識點解析:隊列是一種特殊的線性表,特殊之處在于它只允許在表的前端(front)進行刪除操作,而在表的后端(rear)進行插入操作,和棧一樣,隊列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。隊列的鏈式存儲也稱為鏈隊列。為了便于操作,可給鏈隊列添加1個頭結(jié)點,并令頭指針指向頭結(jié)點。隊列為空的判斷條件是頭指針和尾指針的值相同,且均指向頭結(jié)點。當隊列為空(0)或1時,front=rear。13、設(shè)有定義語句intx[6]={2,4,6,8,5,7),*p=x,i;要求依次輸出x數(shù)組6個元素中的值不能完成此操作的語句是A、for(i=0;i<6;i++)printf("%2d",*(p++));B、for(i=0;i<6;i++)printf("%2d",*(p+i));C、for(i=0;i<6;i++)printf("%2d",*p++);D、for(i=0;i<6;i++)printf("%2d",(*p)++);標準答案:D知識點解析:指針p指向數(shù)組x,因此可以使用p來輸出數(shù)組x的值。選項A中,*(p++)表示先取出p指向的元素的值,然后p++指向下一個元素,滿足要求;選項B中*(p+i)每次i的值發(fā)生變化,(p+i)指向x數(shù)組的x[i]元素,因此*(p+i)是取出數(shù)組x的x[i]元素的值,滿足要求;選項C和選項A相比,少了括號,由于.運算符的優(yōu)先級比++要求,因此,因此*p++表示先取出p指向的元素的值,然后p再++指向下一個元素,滿足要求:選項D中(*p)++表示先取出p指向的元素的值,然后該值++,p沒有增加,每次循環(huán)都*p取出的x[0]的值,不滿足要求。14、在結(jié)構(gòu)化程序設(shè)計中,模塊劃分的原則是A、各模塊應(yīng)包括盡量多的功能B、各模塊的規(guī)模應(yīng)盡量大C、各模塊之間的聯(lián)系應(yīng)盡量緊密D、模塊內(nèi)具有高內(nèi)聚度、模塊間具有低耦合度標準答案:D知識點解析:內(nèi)聚性是對一個模塊內(nèi)部各個元素間彼此結(jié)合的緊密程度的度量。耦合性是對模塊間互相連接的緊密程度的度量。在結(jié)構(gòu)化程序設(shè)計中,模塊劃分應(yīng)遵循高內(nèi)聚、低耦合的原則,即減弱模塊之間的耦合性和提高模塊內(nèi)聚性,有利于提高軟件模塊的獨立性。15、軟件調(diào)試的目的是A、發(fā)現(xiàn)錯誤B、改正錯誤C、改善軟件的性能D、驗證軟件的正確性標準答案:B知識點解析:軟件調(diào)試的任務(wù)是診斷和改正程序中的錯誤。程序調(diào)試活動由兩部分組成,一是根據(jù)錯誤的跡象確定程序中的錯誤的確切性質(zhì)、原因和位置。二是對程序進行修改,排除這個錯誤。16、表達式:(int)((double)9/2)一9%2的值是()。A、5B、4C、3D、2標準答案:C知識點解析:C語言的計算過程與常規(guī)相似,這個表達式的計算過程為,首先求出9除以2的商等于4,再把其強制轉(zhuǎn)化為實型數(shù)據(jù)為4.0,然后再強制轉(zhuǎn)4,減去9對2求余數(shù)1,得到其結(jié)果等于3。17、若有以下定義和語句:#includechars1[10]=“abcd!”,*s2="\n123\\";prinff(“%d%d\n”,strlen(s1),strlen(s2));程序的運行結(jié)果是()。A、107B、105C、55D、58標準答案:C知識點解析:strlen函數(shù)返回字符串的長度,求字符串長度時,遇到結(jié)束標志‘\0’為止,但是長度不包括結(jié)束標識。字符數(shù)組s1的后5個元素沒有賦值,都為‘\0’,即”abed!”后為‘\0’,所以strlen(s1)的值為5。字符指針s2所指向的字符串中,\n為轉(zhuǎn)義字符換行符,表示1個字符,\\也為轉(zhuǎn)義字符,代表\,也是1個字符.其后為字符串結(jié)束標識‘\0’,所以strlen(s2)的值也為5,因此C選項正確。18、以下程序段的輸出結(jié)果是()。main(){inta=0,b=0,c=0,d=0;if(a=1)b=1;c=2;elsed=3;printf(’’%d,%d,%d,%d\n’’,a,b,c,d);}A、1,2,3,4B、0,0,1,2C、編譯有錯D、0,1,2,0標準答案:C知識點解析:if語句執(zhí)行一條語句,若需要多條語句時,則應(yīng)該使用復合語句用{}括起來。因此題目“if(a=1)b=1;c=2;elsed=3;”,if分支有兩條語句,沒構(gòu)成復合語句。19、下面函數(shù)的功能是()。sss(s,t)char*s,*t;{while(*s);while(*t)*(s++)=*(t++);returns;}A、將字符串S復制到字符串t中B、比較兩個字符串的大小C、求字符串的長度D、將字符串t續(xù)接到字符串S中標準答案:D知識點解析:本題考查指針變量的運用。本題中的函數(shù)實質(zhì)上是將字符串t續(xù)接到字符串s中。20、有以下程序(strcat函數(shù)用以連接兩個字符串)#inolude#includemain(){chara[20]="ABCD\0EFG\0",b[]="TJK";streat(a,b);printf("%s\n",a);}程序運行后的輸出結(jié)果是A、ABCDE\0FG\0IJKB、ABCDIJKC、IJKD、EFGIJK標準答案:B知識點解析:在字符串中字符’\0’表示字符串的結(jié)束標忐,所以字符串a(chǎn)和b相連接的結(jié)果為ABCDIJK。21、C語言中的標識符分為關(guān)鍵字、預定義標識符和用戶標識符,以下敘述正確的是A、關(guān)鍵字可用作用戶標識符,但失去原有含義B、在標識符中大寫字母和小寫字母被認為是相同的字符C、用戶標識符可以由字母和數(shù)字任意順序組成D、預定義標識符可用作用戶標識符,但失去原有含義標準答案:D知識點解析:預定義標識符是C語言中的標識符,在C語言中也有特定的含義,如函數(shù)printf、scanf、sin等和編譯預處理命令名(如define和include)。預定義標識符可以作為用戶標識符使用,只是這樣會失去系統(tǒng)規(guī)定的原義:22、有以下程序#includemain(){intx,y,z;x=y=1;z=x++,y++,++y;printf("%d,%d,%d\n",x,y,z);)程序運行后的輸出結(jié)果是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。23、設(shè)有定義:struet{charmark[12];intnum1;doublenum2;}t1,t2;,若變量均已正確賦初值,則下列語句中錯誤的是()。A、t1=t2;B、t2.num1=t1.num1;C、t2.mark=t1.mark;D、t2.num2=t1.num2;標準答案:C知識點解析:本題考查結(jié)構(gòu)體變量的引用。C選項中mark為結(jié)構(gòu)體中的數(shù)組,不能直接賦值,所以C選項錯誤。24、若在定義語句: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ù)變量的地址。25、以下函數(shù)的功能是()。voidfun(char*a,char*b){while((*b=*a)!=’\0’){a++;b++;}}A、使指針a指向b所指字符串B、檢查a和b所指字符串中是否有’0\’C、將a所指字符串賦給b所指空間D、將a所指字符串和b所指字符串進行比較標準答案:C知識點解析:題目中在while語句的條件中是把字符*a的值賦給字符*b,然后再判斷字符*b的值是否等于字符串的結(jié)束字符(’\0’),當不等于結(jié)束字符(’\0’)時,把字符指針變量a,b分別加1,指向它們的下一個字符,直到字符串a(chǎn)的結(jié)束。這樣程序執(zhí)行的結(jié)果就是把字符串a(chǎn)賦給了b所指的存儲空間,選項C正確。26、有以下程序,程序運行后的輸出結(jié)果是main(){intx=35,B;charz=’B’;B=((x)&&(z<’b’));printf("%d\n",B);}A、0B、35C、1D、66標準答案:C知識點解析:表達式((x)&&(z<’b’)),x為35非零,考慮表達式z<’b’,成立,則B的值為1。27、若以下選項中的變量a,b,y均己正確定義并賦值,則語法正確的switch語句是A、switch(a*a+b*b){default:break;case3:y=a+b;break;case2:y=a-b;break;}B、switch(a+b){case1:case3:y=a+b;break;case0:case4:y=a-b;}C、switch(a+9){casea:y=a-b:caseb:y=a+b:}D、switcha*b{case10:y=a+b;default:y=a-b;}標準答案:A知識點解析:使用switch語句直接處理多個分支,其一般形式為:switch(表達式){case常量表達式1:語句1:break;case常量表達式n:語句n:break;defauh:語句n+1;break;}switch語句的執(zhí)行流程是:首先計算switch后面圓括號中表達式的值,然后用此值依次與各個case的常量表達式比較,若圓括號中表達式的值與某個case后面的常量表達式的值相等,就執(zhí)行此case后面的語句,執(zhí)行后遇break語句就退出switch語句;若圓括號中表達式的值與所有case后面的常量表達式都不等,則執(zhí)行default后面的語句n+1,然后退出switch語句。對于選項B),case語句和常量之問沒有空格,而選項C)中的case后面為變量.選項D)中switch后面沒給出圓括號。28、以下函數(shù)的功能是:通過鍵盤輸入數(shù)據(jù),為數(shù)組中的所有元素賦值。#include#defineN10voidfun(intx[N]){inti=0;while(iA、x+iB、x[i+1]C、x+(i++)D、x[++i]標準答案:C知識點解析:本題考查數(shù)組和scanf函數(shù)的使用。程序通過、while循環(huán)來給數(shù)組元素賦值,賦值語句通過調(diào)用scanf函數(shù)來實現(xiàn)。scanf函數(shù)從鍵盤接收數(shù)據(jù),第二個參數(shù)是數(shù)據(jù)保存的地址.因此選項B和選項D不是地址,錯誤。選項A和選項C是地址,但是選項A的i值不會發(fā)生變化,循環(huán)體內(nèi)每次都是給同一個元素賦值,不滿足要求,選項C正確。29、有以下定義和語句:structworkers{intnum;charname[20];charc;struct{intday;intmonth;intyear;}s;);structworkersw,*pw;pw=&w;能給W中year成員賦1980的語句是A、w.year=1980;B、pw->year=1980;C、w.S.year=1980;D、*pw.year=1980;標準答案:C知識點解析:本題主要考查的是結(jié)構(gòu)體變量的嵌套定義,也就是說一個結(jié)構(gòu)體變量也可以是一個結(jié)構(gòu)體。在本題中works這個結(jié)構(gòu)體中包含了結(jié)構(gòu)體s。所以對結(jié)構(gòu)體變量w中year成員的引用是w.s.year。30、以下結(jié)構(gòu)體說明和變量定義中,正確的是A、typedefstructabc{intn;doublem;}ABC;ABCx,y;B、structabc{intn;doublem);structabcx,y;C、structABC{intn;doublem;}structABCx,y;D、structabc{intn;doublem;};abcx,y;標準答案:A知識點解析:選項B中結(jié)構(gòu)體定義中每個成員后面的分號都不能省略,doublem后沒分號,因此錯誤。選項C結(jié)構(gòu)體類型定義完畢后,}外沒加分號。選項D中定義變量要加上關(guān)鍵字struct。31、有以下程序#include<stdio.h>main(){intk=4,m=1,p;fun(inta,intb){intstaticm=0,i=2:p=fun(k,m);i:i+m+1;printf("%d,",p);m=i+a+b;p=fun(k,m);returnm;}printf("%d\n",p);}程序運行后的輸出結(jié)果是A、8,17B、7,16C、8,8D、7,17標準答案:A知識點解析:本題考查了靜態(tài)變量以及局部變量的同名問題。主函數(shù)中調(diào)用fun函數(shù)兩次,第一次調(diào)用fun(4,1),形參a和b接收以后,i值為3,m的值為8,調(diào)用結(jié)束返回8存放到p中并且輸出p的值為8,除了靜態(tài)變量m和i。變量a,b撤銷。第二次調(diào)用fun(4,1),接收實參值以后,i為3+8+1,而m為12+4+1,即輸出函數(shù)值17。32、有以下程序#includemain(){charb[4][10];inti;for(i=0;i<4;i++)scanf("%s",b[i]);printf("%s%s%s%s\n",b[0],b[1],b[2],b[3]);}執(zhí)行時若輸入:Figflowerisred.<回車>則輸出結(jié)果是()。A、Figflowerisred.B、Figflowerisred.C、Figflowerisred.D、Figflowerisred.標準答案:A知識點解析:scanf()輸入字符串的時候,空格和回車符均為分隔符,所以不能記錄空格,即b[1]="Fig",b[2]="flower",b[2]="is",b[3]="red.",所以輸出結(jié)果為選項A33、有以下程序:#includeintb=2:intfun(int*k){b=*k+b;retum(b);}main(){intat[10]={1,2,3,4,5,6,7,8),i;for(i=2;i<4;i++){b=fun(&a[i])+b;printf("%d",b);}printf("\n");}程序運行后的輸出結(jié)果是A、810B、1028C、1012D、1016標準答案:B知識點解析:i=2時,fun(&a[2])返回值是b=b+a[1]=2+3=5,b=b+b=5+5=10;i=3時,fun(&a【3】)返回值是b=b+a[3]=10+4=14,b=b+b=14+14=28。34、有以下程序#includevoidfunc(intn){staticintnum=1;num+=n;printf("%d",num);}main(){func(3);func(4);printf("\n");}程序運行后的輸出是()。A、48B、45C、35D、34標準答案:A知識點解析:func()有一個靜態(tài)變量num,靜態(tài)變量的初始化只進行一次,其值在程序運行過程中一直存在。調(diào)用func(3)時num被初始化為1,語句"num+=n;"計算得num值為4,輸出結(jié)果為4;調(diào)用func(4)時num為上一次計算的結(jié)果4,再次計算num=8,輸出結(jié)果為8,。答案選A。35、設(shè)有定義charstr[]="Hello";則語句printf("%d%d",sizeof(str),strlen(str));的輸出結(jié)果是A、5,5B、6,6C、6,5D、5,6標準答案:C知識點解析:本題考查sizeof和strlen對字符串的處理不同之處,sizeof求出字符串的字符個數(shù),包括結(jié)尾符。Strlen求出字符串的實際字符,不包括結(jié)尾符。所以答案為6,5,C選項正確。36、以下關(guān)于typedef的敘述錯誤的是A、typedef只是將已存在的類型用一個新的名字來代表B、用typedef可以為各種類型說明一個新名,但不能用來為變量說明一個新名C、用typedef可以增加新類型D、用typedef為類型說明一個新名,通??梢栽黾映绦虻目勺x性標準答案:C知識點解析:C語言允許用typedef說明一種新的類型名,其一般形式為:typedef類型名標識符;在此“類型名”必須是在此語句之前已有定義的類型標識符?!皹俗R符”是一個用戶定義標識符,用作新的類型名。Typedef語句的作用僅僅是用“標識符”來代表已存在的“類型名”,并未產(chǎn)生新的數(shù)據(jù)類型,原來的類型名依然有效,這樣可以增加程序的可讀性。37、有以下程序#include<stdio.h>structtt{intx;structtt*y;)*p;structtta[41={20,a+1,15,a+2,30,a+3,17,a};main(){inti;p=a;for(i=1;i<=2;i++){printf("%d,",p->x);p=p->y;}}程序的運行結(jié)果是A、20,15,B、30,17C、15,30,D、20,30,標準答案:A知識點解析:程序定義了結(jié)構(gòu)體類型tt,其成員包括一個整型數(shù)據(jù)x和指向其自身結(jié)構(gòu)的指針變量y。程序在定義結(jié)構(gòu)體數(shù)組a的同時對其進行了初始化。其元素a[0]的成員y被賦值為元素a[1]的地址,a[1].y被賦值為a[2]的地址,a[2].y被賦予a[3]的地址,a[3].y被賦予a[0]的地址。這就形成了一個單向的循環(huán)鏈表,每個元素的指針成員都指向下一個元素的地址。在主函數(shù)中,通過一個for循環(huán)語句,輸出該鏈表前2個節(jié)點數(shù)值成員的值,即a[0].x和a[1].x。38、有以下程序#include<stdio.h>#include"string.h"typedefstruct{charname[9];charsex;floatscore[2];}STU;voidf(STUa){STUb={"Zhao",’m’,85.0,90.0};inti;strcpy(a.name,b.name);a.sex=b.sex;for(i=0;i<2;i++)a.score[i]=b.score[i];}程序的運行結(jié)果是A、Qian,m,85,90B、Zhao,m,85,90C、Zhao,f,95,92D、Qian,f,95,92標準答案:B知識點解析:本題考查在結(jié)構(gòu)體中函數(shù)的實參和形參的傳遞,調(diào)用f(c)后,實參傳向形參,進行f()函數(shù)功能的實現(xiàn),但程序中沒有返回語句,故形參不能將值傳回實參,它們值的傳遞具有不可逆性,所與printf輸出的還是c中實參的值。39、有以下程序voidfun1(char*p){char*q;q=p;while(*q!=’\0’){(*q)++;q++;}}main(){chara[]={"Program"},*p;p=&a[3];fun1(p);printf("%s\n",a);}程序執(zhí)行后的輸出結(jié)果是A、PrphsbnB、ProhsbnC、ProgsbnD、Program標準答案:B知識點解析:在函數(shù)voidfun1(char*p)中,語句(*q)++的功能是q所指的字符加1,變成其后面的字符;q++就是指針q指向下一個字符的位置。所以在主函數(shù)中,語句p=&a[3]的作用是使指針p指向字符數(shù)組a[]中的第四個字符的位置,即p指向字符’g’;然后調(diào)用函數(shù)fun1(p)后,字符’g’變成’h’,字符’r’變成’s’,字符’a’變成’b’,字符’m’變成’n’,因而字符數(shù)組a[]中的內(nèi)容就成“Prohsbn”。40、面向?qū)ο蠓椒ㄖ?,繼承是指A、一組對象所具有的相似性質(zhì)B、一個對象具有另一個對象的性質(zhì)C、各對象之間的共同性質(zhì)D、類之間共享屬性和操作的機制標準答案:D知識點解析:繼承是面向?qū)ο蟮姆椒ǖ囊粋€主要特征,是使用已有的類的定義作為基礎(chǔ)建立新類的定義技術(shù)。廣義的說,繼承是指能夠直接獲得已有的性質(zhì)和特征,而不必重復定義它們,所以說繼承是指類之間共享屬性和操作的機制。國家二級C語言機試(選擇題)模擬試卷第4套一、選擇題(本題共25題,每題1.0分,共25分。)1、下列敘述中正確的是A、循環(huán)隊列中的元素個數(shù)隨隊頭指針與隊尾指針的變化而動態(tài)變化B、循環(huán)隊列中的元素個數(shù)隨隊頭指針的變化而動態(tài)變化C、循環(huán)隊列中的元素個數(shù)隨隊尾指針的變化而動態(tài)變化D、循環(huán)隊列中的元素個數(shù)不會變化標準答案:A知識點解析:所謂循環(huán)結(jié)構(gòu)就是將隊列存儲空間的最后一個位置繞到第一個位置上,形成邏輯上的環(huán)狀空間,循環(huán)使用。在循環(huán)隊列中,用隊尾指針rear指向隊列中的隊尾元素,用隊頭指針front指向隊頭元素的前一個位置,因此,隊列中的元素數(shù)等于從隊頭指針front指向的后一個位置與隊尾指針rear指向位置之間的元素數(shù)量。2、某圖書集團數(shù)據(jù)庫中有關(guān)系模式R(書店編號,書籍編號,庫存數(shù)量,部門編號,部門負責人),其中要求(1)每個書店的每種書籍只在該書店的一個部門銷售;(2)每個書店的每個部門只有一個負責人;(3)每個書店的每種書籍只有一個庫存數(shù)量。則關(guān)系模式R最高是()。A、1NFB、2NFC、3NFD、BCNF標準答案:B知識點解析:由題可知關(guān)系模式R有三個函數(shù)依賴:(書店編號,書籍編號)→部門編號(書店編號,部門編號)→負責人(書店編號,書籍編號)→庫存數(shù)量由此可知,(書店編號,書籍編號)可以唯一標識關(guān)系模式R中的每個元組,因此屬于關(guān)系模式的主鍵。在此關(guān)系模式中,每個屬性都是不可再分的,R屬于1NF,且“書店編號”和“書籍編號”單獨之一都不能決定其他非主屬性,所以R屬于2NF;但(書店編號,書籍編號)可以決定“部門編號”,“部門編號”又可決定“部門負責人”,存在傳遞依賴,所以不屬于3NF,更不是BCNF。3、若有定義語句:intm[][3]={1,2,3,4,5,6,7};,則與該語句等價的是()。A、intm[][3]={{1,2,3},{4,5},{6,7}};B、intm[][3]={{1,2},{3,4},{5,6,7}};C、intm[][3]={{1,2,3},{4,5,6},{7}};D、intm[][3]={{1},{2,3,4},{5,6,7}};標準答案:C知識點解析:考查二維數(shù)組的初始化。初始化二維數(shù)組的時候,若給數(shù)組的全部元素均賦初值,此時第一維的元素個數(shù)可以不指定,部分賦值時,最后一行元素不寫完整,此時數(shù)組第一維元素個數(shù)仍然可以不指定。題中為按行給數(shù)組m賦值,最后一行只有部分賦初值,答案選C。4、有以下程序main(){inti,j;for(i=1;i<4;i++){for(j=i;j<4;j++)printf("%d*%d=%d",i,j,i*j);printf("\n");}}A、1*1=11*2=21*3=32*1=22*2=43*1=3B、1*1=11*2=22*2=41*3=32*3=63*3=9C、1*1=11*2=21*3=32*2=42*3=63*3=9D、1*1=12*1=22*2=43*1=33*2=63*3=9標準答案:C知識點解析:外層for循環(huán)的自變量i從1開始,每次循環(huán)后增1,直到i等于3結(jié)束。對于外層循環(huán)自變量i的每一個值,內(nèi)層循環(huán)的自變量j每次從i開始,每次循環(huán)后增1,直到j(luò)等于3結(jié)束。所以在每次外循環(huán)開始后,內(nèi)層循環(huán)在一行先打印i*i=兩個乘數(shù)的積,然后回車換行,下次循環(huán)從下一行開始打印輸出結(jié)果。5、設(shè)有定義:doublea[10],*s=a;,以下能夠代表數(shù)組元素a[3]的是()。A、(*s)[3]B、*(s+3)C、*s[3]D、*s+3標準答案:B知識點解析:題中,首先定義了double型的數(shù)組a,并將數(shù)組首地址賦給指針s。s[3]能夠表示a[3],故選項A、C不能表示a[3];選項D的*s+3=a[0]+3。故本題答案為B選項。6、下面不屬于軟件測試實施步驟的是A、集成測試B、回歸測試C、確認測試D、單元測試標準答案:B知識點解析:軟件測試實施的步驟有單元測試、集成測試和確認測試。7、有三個關(guān)系R、S和T如下:由關(guān)系R和S通過運算得到關(guān)系T,則所使用的運算為A、并B、自然連接C、笛卡爾積D、交標準答案:D知識點解析:關(guān)系R與S經(jīng)交運算后所得到的關(guān)系是由那些既在R內(nèi)又在S內(nèi)的有序組組成的,記為R∩S。8、有兩個關(guān)系R和T如下:則由關(guān)系R得到關(guān)系T的操作是A、選擇B、投影C、交D、并標準答案:A知識點解析:由關(guān)系R和T所包含的元素可知,關(guān)系R經(jīng)過選擇操作就可以得到關(guān)系T。9、C語言中的標識符分為關(guān)鍵字、預定義標識符和用戶標識符,以下敘述正確的是A、關(guān)鍵字可用作用戶標識符,但失去原有含義B、在標識符中大寫字母和小寫字母被認為是相同的字符C、用戶標識符可以由字母和數(shù)字任意順序組成D、預定義標識符可用作用戶標識符,但失去原有含義標準答案:D知識點解析:預定義標識符是C語言中的標識符,在C語言中也有特定的含義,如函數(shù)printf、scanf、sin等和編譯預處理命令名(如define和include)。預定義標識符可以作為用戶標識符使用,只是這樣會失去系統(tǒng)規(guī)定的原義:10、若有定義語句:intx=12,y=8,z;在其后執(zhí)行語句z=0.9+x/y;則z的值為A、1.9B、1C、2D、2.4標準答案:B知識點解析:由于x,y,z都是整型數(shù)據(jù),所以x除以y的值為整型數(shù)值1,1和0.9相加得到1.9,再轉(zhuǎn)換為整型數(shù)1賦給整型變量z。11、以下C語言用戶標識符中,不合法的是A、_1B、AaBcC、a_bD、a--b標準答案:D知識點解析:本題考查用戶標識符,C語言中,用戶標識符只能由字母、下劃線和數(shù)組組成,且必須以字母或者下劃線開始。選項A)、B)和C)都是正確的,選項D)中的case是C語言關(guān)鍵字,不能作為用戶標識符,是錯誤的。12、設(shè)有某函數(shù)的說明為int*func(inta[10],intn);則下列敘述中,正確的是A、說明中的a[10]寫成a[]或*a效果完全一樣B、形參a對應(yīng)的實參只能是數(shù)組名C、func的函數(shù)體中不能對a進行移動指針(如a++)的操作D、只有指向10個整數(shù)內(nèi)存單元的指針,才能作為實參傳給a標準答案:A知識點解析:函數(shù)func為返回值為指針的函數(shù),有兩個形參,形參數(shù)組a為指針變量,保存實參數(shù)組的首地址,其元素個數(shù)由實參數(shù)組決定,因此說明中的a[10]寫成a[]或*a效果完全一樣。13、有如下程序段:intx=12;doubley=3.141593;printf("%d%8.6f",x,y);其輸出結(jié)果是A、123.141593B、12,3.141593C、123.1415930D、123.141593標準答案:D知識點解析:本題考查printf語句。primf()函數(shù)是格式化輸出函數(shù),一般用于向標準輸出設(shè)備按規(guī)定格式輸出信息。在編寫程序時經(jīng)常會用到此函數(shù)。printf()函數(shù)的調(diào)用格式為:printf("<格式化字符串>",<參量表>)。其中,“格式化字符串”包括兩部分內(nèi)容:一部分是正常字符,這些字符將按原樣輸出;另一部分是格式化規(guī)定字符,以“%”開始,后跟一個或幾個規(guī)定字符,用來確定輸出內(nèi)容格式。格式化字符串的格式是:%[標志][輸出最小寬度][精度][長度]格式字符①標志:標志字符為-、+、空格等,其意義如下所示:-:結(jié)果左對齊,右邊填空格;+:輸出符號(正號或負號);空格:輸出值為正時冠以空格,為負時冠以負號。②輸出最小寬度:用十進制整數(shù)來表示輸出的最少位數(shù)(包括小數(shù)點在內(nèi)至少要輸出這么多位)。若實際位數(shù)多于定義的寬度,則按實際位數(shù)輸出;若實際位數(shù)少于定義的寬度,則右對齊,左邊留空;有負號,左對齊,右邊留空;表示寬度的數(shù)字以0開始,則右對齊,左邊留空。③精度:精度格式符以“.”開頭,后跟十進制整數(shù)。它的意義是:如果輸出數(shù)字,則表示小數(shù)的位數(shù),若實際位數(shù)大于所定義的精度數(shù),則四舍五入,若不足則補0;如果輸出的是字符,則表示輸出字符的個數(shù),若實際位數(shù)大于所定義的精度數(shù),則截去超過的部分;④長度:長度格式符為h和l兩種,b表示按短整型量輸出,l表示按長整型量輸出。14、有以下程序#includemain(){inta=3;do{printf("%d,",a-=2);}while(!(--a));printf("\n");}程序運行后的輸出結(jié)果是()。A、1,-2,B、1,C、3,0,D、1,0標準答案:A知識點解析:循環(huán)條件是表達式"!(--a)",即當--a為0時,循環(huán)才會繼續(xù)進行。該程序中do-while循環(huán)了兩次,第一次循環(huán)輸出a-=2的值,即1。之后判定循環(huán)條件為真,進入第二次循環(huán)輸出值-2,判定循環(huán)條件為"?。?3)",為假,結(jié)束循環(huán),所以輸出的結(jié)果為選項A)。15、有以下程序#includeintf(intn);main(){inta=3,s;s=f(a);s=s+f(a);printf("%d\n",s);}intf(intn){staticinta=1;n+=a++;returnn;}程序運行后的輸出結(jié)果是A、9B、8C、7D、10標準答案:A知識點解析:在主函數(shù)中第一次調(diào)用f(a)時,得到變量s的值等于4,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 音箱購銷合同范本
- 加盟培訓合同范本
- 加盟兜底合同范本
- 富硒大米銷售合同范本
- 重陽節(jié)主題團日活動
- 暑期沖刺家長會
- 勞動關(guān)系案例
- 網(wǎng)絡(luò)性能優(yōu)化與負載均衡
- 機器付款合同范本
- 寮步工地蔬菜配送合同范本
- 仁愛英語九年級下冊Unit5Topic1sectionA的教學設(shè)計
- 《色彩基礎(chǔ)知識》PPT課件(詳解)
- 魯東教師心理健康期末考試復習題及參考答案
- 【教師必備】部編版五年級語文上冊第五單元【集體備課】
- 商業(yè)空間設(shè)計PPT課件
- 相容性獨立性完全性
- 市政工程創(chuàng)優(yōu)匯報
- A4橫線稿紙模板(可直接打印)-a4線條紙
- 動土作業(yè)許可證(標注)
- 球墨鑄鐵鑄造工藝
- 10kV電纜遷移工程施工方案
評論
0/150
提交評論