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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

國家二級C語言機試(選擇題)模擬試卷7(共9套)(共285題)國家二級C語言機試(選擇題)模擬試卷第1套一、選擇題(本題共25題,每題1.0分,共25分。)1、下列敘述中正確的是()。A、一個算法的空間復雜度大,則其時間復雜度也必定大B、一個算法的空間復雜度大,則其時間復雜度必定小C、一個算法的時間復雜度大,則其空間復雜度必定小D、算法的時間復雜度與空間復雜度沒有直接關系標準答案:D知識點解析:算法的復雜度主要包括時間復雜度和空間復雜度。算法的時間復雜度是指執(zhí)行算法所需要的計算工作量,算法的工作量用算法所執(zhí)行的基本運算次數來度量,而算法所執(zhí)行的基本運算次數是問題規(guī)模的函數,即算法的工作量=f(n),其中n是問題的規(guī)模;算法的空間復雜度,一般是指執(zhí)行這個算法所需要的內存空間。一個算法所占用的存儲空間包括算法程序所占用的空間、輸入的初始數據所占的存儲空間以及算法執(zhí)行過程中所需要的額外空間。根據各自的定義可知。算法的時間復雜度與空間復雜度并不相關。2、以下敘述正確的是()。A、當輸入數據時,必須指明變量的地址,例如,scanf("%f",&a);B、只有格式控制,沒有輸入項,也能正確輸入數據到內存。例如,scanf("m=%d,n=%d");C、當輸入一個實型數據時,格式控制部分可以規(guī)定小數點后的位數,例如,scanf("%5.1f",&a);D、輸入項可以是一個實型常量,例如,scanf("%f",7.5);標準答案:A知識點解析:本題考查對scanf函數的理解。選項B)中沒有給出輸入項;選項C)中的格式字符指定了小數位數;選項D)中的輸入項為一個常量;以上均是錯誤的。3、軟件生命周期可分為定義階段、開發(fā)階段和維護階段,下面屬于定義階段任務的是()。A、軟件設計B、軟件測試C、可行性研究D、數據庫設計標準答案:C知識點解析:軟件生命周期可分為定義階段、開發(fā)階段和維護階段。軟件定義階段的任務是:確定軟件開發(fā)工作必須完成的目標;確定工程的可行性。軟件開發(fā)階段的任務是:具體完成設計和實現(xiàn)定義階段所定義的軟件,通常包括總體設計、詳細設計、編碼和測試。其中總體設計和詳細設計又稱為系統(tǒng)設計,編碼和測試又稱為系統(tǒng)實現(xiàn)。軟件維護階段的任務是:使軟件在運行中持久地滿足用戶的需要。4、下列敘述中正確的是()。A、鏈表結點中具有兩個指針域的數據結構可以是線性結構,也可以是非線性結構B、線性表的鏈式存儲結構中,每個結點必須有指向前件和指向后件的兩個指針C、線性表的鏈式存儲結構中,每個結點只能有一個指向后件的指針D、線性表的鏈式存儲結構中,葉子結點的指針只能是空標準答案:A知識點解析:在鏈式存儲方式中,每個結點由兩部分組成:數據域和指針域,指針域用于指向該節(jié)點的前一個或后一個結點,所以選項B)、C)、D)說法錯誤。選項A)中,例如雙向鏈表就具有兩個指針,也屬于線性結構,所以答案選A)。5、將數據庫的結構劃分成多個層次,是為了提高數據庫的()。A、管理規(guī)范性B、數據處理并發(fā)性C、邏輯獨立性和物理獨立性D、數據共享標準答案:C知識點解析:數據庫系統(tǒng)通常采用三級模式結構并且提供兩級映射功能,其中的外模式/模式映射保證了數據庫系統(tǒng)具有較高的邏輯獨立性,而模式/內模式映射保證了數據庫系統(tǒng)具有較高的物理獨立性。6、E-R圖中用來表示實體的圖形是()。A、菱形B、三角形C、矩形D、橢圓形標準答案:C知識點解析:在E-R圖中實體集用矩形表示,矩形框內寫實體名;屬性用橢圓表示,并用無向邊將其與相應的“實體”或“聯(lián)系”連接起來;聯(lián)系用菱形表示,在菱形框內寫聯(lián)系名,并用無向邊將其與有關實體連接起來,在無向邊旁標上聯(lián)系的類型(1:1、1:n或n:n)。7、計算機能直接執(zhí)行的程序是()。A、源程序B、目標程序C、匯編程序D、可執(zhí)行程序標準答案:D知識點解析:計算機能直接執(zhí)行的程序是二進制的可執(zhí)行程序,擴展名為.exe,所以選擇D選項。8、從工程管理角度看,軟件設計一般分為兩步完成,它們是A、概要設計與詳細設計B、數據設計與接口設計C、軟件結構設計與數據設計D、過程設計與數據設計標準答案:A知識點解析:軟件設計是開發(fā)階段最重要的步驟。從工程管理的角度來看可分為兩步:概要設計和詳細設計。概要設計是將軟件需求轉化為軟件體系結構,確定系統(tǒng)級接口、全局數據結構或數據庫模式;詳細設計是指確立每個模塊的實現(xiàn)算法和局部數據結構,用適應方法表示算法和數據結構的細節(jié)。從技術觀點來看,軟件設計包括軟件結構設計(定義軟件系統(tǒng)各主要部件之間的關系)、數據設計(將分析時創(chuàng)建的模型轉化為數據結構)、接口設計(描述軟件內部、軟件與協(xié)作系統(tǒng)之間以及軟件與人之間如何通信)、過程設計(把系統(tǒng)結構部件轉換成軟件的過程)四個步驟。9、以下敘述中錯誤的是()。A、算法正確的程序可以有零個輸出B、算法正確的程序最終一定會結束C、算法正確的程序可以有零個輸入D、算法正確的程序對于相同的輸入一定有相同的結果標準答案:A知識點解析:算法的基本特性,正確的算法需要具有有窮性、確定性、可行性、有零個或多個輸入、至少有一個輸出,由此答案選A。10、下面屬于黑盒測試方法的是A、語句覆蓋B、邏輯覆蓋C、邊界值分析D、路徑覆蓋標準答案:C知識點解析:采用黑盒技術設計測試用例的方法有:等價類劃分、邊界值分析、錯誤推測、因果圖和綜合策略。11、下列敘述中錯誤的是()。A、可以用typedef將已存在的類型用一個新的名字來代表B、可以通過typedef增加新的類型C、用typedef定義新的類型名后,原有類型名仍有效D、用typedef可以為各種類型起別名,但不能為變量起別名標準答案:B知識點解析:本題考查typedef的用法。typedef并不是增加一種新的類型,而是對已存在的類型用一個新的名字來代表,所以B選項錯誤。12、有以下程序#inclUde#defineN3voidfun(inta[][N],intb[]){inti,j;for(i=0;iA、1,3,5,B、2,4,8,C、3,5,7D、3,6,9,標準答案:D知識點解析:函數fun()的作用是求出二維數組a[][N]中每一行中的最大元素,所以在main()函數中執(zhí)行完fun(x,y)后,數組y中的元素為二維數組x[N][N]每一行的最大元素。13、以下選項中表示一個合法的常量是(說明:符號□表示空格)A、123E0.2B、2.7e□C、0999□D、0Xab標準答案:D知識點解析:本題考查C語言中的常量。選項A字母E后面必須是整型數,浮點數錯誤:選項B字母e后面沒有整型數:選項C以0開始表示8進制數,8進制數沒有9;選項D是一個正確的16進制常數。14、設有定義:intx=0,*p;緊接著的賦值語句正確的是A、*p=NULL;B、p=NULL;C、p=x;D、木p=x;標準答案:B知識點解析:定義指針變量時,必須將指針變量初始化為NULL(為空),否則,如果不賦給它地址,系統(tǒng)會隨機給它分配一個地址。15、以下選項中,當x為大于1的奇數時,值為0的表達式是A、x/2B、x%2==0C、x%2!=0D、x%2==1標準答案:B知識點解析:A選項的值為不定值,但絕對不是0,算術運算符的優(yōu)先級高于關系運算符的優(yōu)先級,所以當x為大于1的奇數時,B選項的值為假,即0?C選項的值為真,即1,D選項的值為真,即1,選項B正確。16、當變量c的值不為2、4、6時,值也為“真”的表達式是A、(c==2)‖(c==4)‖(c==6)B、(c>=2&&c<=6)&&!(c%2)C、(c>=2&&c<=6)&&(c%2!=1)D、(c>=2&&c<=6)‖(c!=3)‖(c!=5)標準答案:D知識點解析:邏輯或運算中,只要有一項為真,表達式的值就為真,故選項D中c的值不為2、4、6時,那么表達式(c>=2&&c<=6)以及(c!=3)、(c!=5)必有一個成立,表達式的值也為真。17、有以下程序#includemain(){inta=5,b=1,t;t=(a<<2)|b;printf("%d\n",t);}A、11B、6C、21D、1標準答案:C知識點解析:本題考查位操作運算符?!?lt;<’是左移運算符,左移一位相當于乘2,‘|’是按位或運算符。5左移兩位相當于乘4,得到20,20的二進制數是00010100,和00000001進行按位或操作得到00010101,即十進制的21。18、有以下程序#include<stdio.h>voidmain(){ints;scanf("%d",&s);while(s>0){switch(s){case1:printf("%d",s+5);case2:printf("%d",s+4;break;case3:printf("%d",s+3);default:printf("%d",s+1);break;}scanf("%d",&s);}}運行時,若輸入123450,則輸出結果是A、66656B、6566456C、66666D、6666656標準答案:B知識點解析:這道試題主要考查了switch和break語句,當變量s的值為1時,執(zhí)行case1、case2兩條語句,輸出65;當變量s的值為2時,執(zhí)行case2語句,輸出6;變量s的值為3時,執(zhí)行case3、default兩條語句,輸出64;變量s的值為4時,執(zhí)行default語句,輸入5;變量s的值為5時,執(zhí)行default語句,輸出6;變量s的值為0時,程序運行結束。19、以下敘述中正確的是A、對于“for(表達式1;表達式2;表達式3)循環(huán)體”首先要計算表達式2的值,以便決定是否開始循環(huán)B、對于“for(表達式1;表達式2;表達式3)循環(huán)體”,只在個別情況下才能轉換成while語句C、只要適當地修改代碼,就可以將do-while與while相互轉換D、如果根據算法需要使用無限循環(huán)(即通常所稱的“死循環(huán)”),則只能使用while語句標準答案:C知識點解析:while和do…while語句和for語句很容易進行相互轉換。對于for循環(huán)的執(zhí)行過程如下:①計算表達式l。②計算表達式2。若其值為非0,轉步驟③;若其值為0,轉步驟⑤。③執(zhí)行一次for循環(huán)體。④計算表達式3,轉向步驟②。⑤結束循環(huán)。任何循環(huán)都有可能成為死循環(huán)。20、有以下程序#includevoidmain(){inta[]={2,3,5,4},i;for(i=0;i<4;i++)switch(i%2){case0:switch(a[i]%2){case0:a[i]++;break;case1:a[i]--;}break;’case1:a[i]=0;}for(i=0;i<4;i++)printf("%d",a[i]);printf("\n");}程序運行后的輸出結果是A、2050B、3344C、3040D、0304標準答案:C知識點解析:在主函數的for循環(huán)語句中,當循環(huán)變量i的值等于0,2時,執(zhí)行switch中的case0語句,分別對數組元素a[0]和a[2]加1和減1,所以a[0]的值等于3,a[2]等于4。當循環(huán)變量i的值等于1,3時,執(zhí)行switch中的case1語句,把數組元素a[1]和a[3]的值賦為0。所以輸出數組a的元素,其結果為3040。21、若有定義語句:char*s1="OK",*s2="ok";以下選項中,能夠輸出"OK"的語句是A、if(strcmp(s1,s2)!=0)puts(s1);B、if(strcmp(s1,s2)!=0)puts(s2);C、if(strcmp(s1,s2)==1)puts(s1);D、if(strcmp(s1,s2)==0)puts(s1);標準答案:A知識點解析:字符串比較函數strcmp的功能是對s1和s2所指字符串進行比較。如果s1<s2,返吲負數,如果s1==s2,返回0,如果s1>s2,返回正數,所以對于本題來說,能夠輸出“OK”的語句是選項A)所指的語句。22、以下語句中存在語法錯誤的是A、charss[][20]={"right?"};B、char*ss[6];ss[1]="right?";C、char*ss[]={"right?");D、charss[6][20];ss[1]="right?";標準答案:A知識點解析:選項A)中定義了二維數組ss,可以用于存儲字符串,但是字符串的存儲不能通過賦值,僅可以初始化或者輸入得到,而選項C)和A)不同,選項C)為指針數組,對于指針變量可以保存常量字符串的地址。23、以下敘述中正確的是()。A、設有指針變量為double*p,則p+1將指針p移動8個字節(jié)B、函數的類型不能是指針類型C、函數的形參類型不能是指針類型D、基類型不同的指針變量可以相互混用標準答案:A知識點解析:考查指針與函數。指針進行算術運算的時候,數字"1"不再代表十進制整數"1",而是指一個存儲單元長度,具體占用的空間依據指針變量的基本類型而定,double類型的變量占用8個字節(jié),所以p+1將p移動了8個字節(jié),A)正確。指針可以作為函數的參數參與數據傳遞過程,也可以作為函數的返回值被返回,故選項B)、C)錯。指針變量的賦值運算只能在同一數據類型之間進行,選項D)錯,答案選A)。24、有以下程序#include<stdio-h>voidfun(char*a,char*b){while(*a=’*’)a++;while(*b=*a){b++;a++;}}main(){char*s="****a*b****",t[80];fun(s,t);puts(t);}程序的運行結果是A、a*bB、*****a*bC、a*b****D、ab標準答案:C知識點解析:主函數main()定義了指向字符串的指針和一個字符數組,接著調用fun(s,t)函數,進行實參向形參傳遞,函數fun()第一個while語句判斷*a中的值為“*”時繼續(xù)掃描,當遇到不是“*”時結束,接著第二個while循環(huán)語句,將*a中從“a”開始的后續(xù)所有字符都賦予*b,也就是t[80]中的內容為“a*b****”。25、有以下程序#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);}程序運行后的輸出結果是A、42B、41C、1D、0標準答案:C知識點解析:本題考查把數組名作為函數參數,執(zhí)行fun函數后,s的值并沒有發(fā)生變化,仍然是指向a,所以輸出結果為1,選項C正確。國家二級C語言機試(選擇題)模擬試卷第2套一、選擇題(本題共25題,每題1.0分,共25分。)1、下列關于棧的敘述中,正確的是A、棧底元素一定是最后入棧的元素B、棧頂元素一定是最先入棧的元素C、棧操作遵循先進后出的原則D、以上三種說法都不對標準答案:C知識點解析:棧是限定只能在表的一端進行插入和刪除操作的線性表,必須按“后進先出”的規(guī)則操作元素。2、下列敘述中正確的是A、順序存儲結構的存儲一定是連續(xù)的,鏈式存儲結構的存儲空間不一定是連續(xù)的B、順序存儲結構只針對線性結構,鏈式存儲結構只針對非線性結構C、順序存儲結構能存儲有序表,鏈式存儲結構不能存儲有序表D、鏈式存儲結構比順序存儲結構節(jié)省存儲空間標準答案:A知識點解析:順序存儲方式主要用于線性的數據結構,它把邏輯上相鄰的數據元素存儲在物理上相鄰的存儲單元里,結點之間的關系由存儲單元的鄰接關系來體現(xiàn)。而鏈式存儲結構的存儲空間不一定是連續(xù)的。3、下列結構中屬于非線性結構的是A、二叉鏈表B、二維數組C、循環(huán)隊列D、雙向鏈表標準答案:B知識點解析:線性結構是一個有序數據元素的集合。常用的線性結構有:線性表,棧,隊列,雙隊列,數組,串:常見的非線性結構有:二維數組,多維數組,廣義表,樹(二叉樹一等),圖。循環(huán)隊列、雙向鏈表和二叉鏈表都是線性結構,而二維數組是非線性結構。4、結構化程序設計的基本原則不包括()。A、效率第一B、自頂向下C、限制使用GOTO語句D、逐步求精標準答案:A知識點解析:結構化程序設計方法的主要原則可以概括為:自頂向下,逐步求精,模塊化和限制使用GOTO語句。5、合法的C語言數值常量是()。A、21.0Xa334.5e0B、018.5e-3-0xfC、.1344el.50abcD、0x8A10,0003.e5標準答案:A知識點解析:C語言常量數制中的八進制數其開頭必須是數字“0”,其數字包括0~7,而在選項B中,018是錯誤的。浮點數據的指數形式表示常量中,C語言規(guī)定字母e或E之前必須要有數字,且e或E之后的指數必須為整,而選項C中4e1.5是錯誤的。在選項D中,整型數據10,000的表示形式是錯誤的。6、結果為“假”的表達式是()。A、(3<4)==1B、(3+3)>5C、(3!=4)>2D、3<=4標準答案:C知識點解析:關系表達式和邏輯表達式的結果為非零或者0,其中0表示假,而非零表示真,3!=4的結果為真,即1,1>2的結果為假。7、若有定義: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)D)switch(a+b){case1.0:printf(’’*\n’’);case2.0:printf(’’**’’\n”);}D、switch(a+b){case1:printf(’’*\n’’);casec:printf(’’**\n’’);}標準答案:A知識點解析:B選項中switch((int)x);語句中不應該有最后的分號。switch(expr1)中的expr1不能用浮點類型或long類型,也不能為一個字符串,所以C選項錯誤。case后面必須為常量表達式,所以D選項錯誤。8、某系統(tǒng)結構圖如下圖所示,則該系統(tǒng)結構圖的寬度是A、2B、3C、4D、n標準答案:D知識點解析:寬度是指最大模塊數的層的控制跨度。題目中系統(tǒng)第一層只有1個模塊,第二層有n(n>3)個模塊,第三層有4個模塊,控制跨度為n,D選項正確。9、有以下程序:#include<stdio.h>intf(intx);main(){intn=1,m;m=f(f(f(n)));pfinff("%d\n",m);}intf(intx){returnx*2;}程序的運行結果是()。A、8B、2C、4D、1標準答案:A知識點解析:第一次調用m=f(f(f(1))),第二次為m=f(f(2)),第三次為m=f(4),即返回值為8。10、有如下程序#includemain(){if(’\0’==0)putchar(’X’);if(’0’==0)putchar(’Y’);if(’a’>’b’)putchar(’Z’);printf("\n");}程序運行后的輸出結果是()。A、XB、XYZC、YZD、Y標準答案:A知識點解析:字符常量與其ASCII碼值一一對應,比較和計算時使用字符數據對應的ASCII碼進行運算。?\0?的ASCII碼為0,?0?的ASCII碼為48,?a?的ASCII碼為97,?b?的ASCII碼為98,所以只有第一條if語句的判定條件為真,所以答案選A。11、有三個關系R,S和T如下圖所示:則由關系R和S得到關系T的操作是A、選擇B、差C、交D、并標準答案:B知識點解析:由關系T中的數據可以看出,其數據由屬于關系R但是不屬于關系S的數據組成。所以關系T是由關系R和S通過差運算得到的。12、“商品”與“顧客”兩個實體集之間的聯(lián)系一般是A、一對一B、一對多C、多對一D、多對多標準答案:D知識點解析:實體集間的聯(lián)系的個數可以是單個也可以是多個。兩個實體集之間的聯(lián)系實際上是實體集間的函數關系,這種關系有三種:一對一的聯(lián)系,簡記為1:1;一對多或多對一聯(lián)系,簡記為1:m或m:1;多對多聯(lián)系,簡記為m:n。本題中“商品”與“顧客”兩個實體集之間的聯(lián)系是多對多聯(lián)系。因為一種“商品”可以被多個“顧客”購買,而一個“顧客”也可以購買多個“商品”。13、若有定義:doublea=22;inti=0,k=18;則不符合C語言規(guī)定的賦值語句是A、i=(a+k)<=(i+k);B、a=a++,i++;C、i=a%11;D、i=!a;標準答案:C知識點解析:在C語言中,求余運算符的運算對象只能是整型,在題目中,變量a是一個雙精型實型變量。14、在以下給出的表達式中,與while(E)中的(E)不等價的表達式是A、(E>0||E<0)B、(!E==0)C、(E!=0)D、(E==0)標準答案:A知識點解析:在while(E)中,表達式E可以是C語言中任意合法的條件表達式,但不能為空,由它來控制循環(huán)體是否執(zhí)行。在選項A)中表達式E>0||E<0是一個邏輯表達式。15、若有定義語句:char*s1="OK",*s2"=ok";以下選項中,能夠輸出"OK"的語句是A、if(strcmp(s1,s2)!=0)puts(s1);B、if(strcmp(s1,s2)!=0)puts(s2);C、if(strcmp(s1,s2)==1)puts(s1);D、if(strcmp(s1,s2)==0)puts(s1);標準答案:A知識點解析:字符串比較函數strcmp的功能是對s1和s2所指字符串進行比較。如果s1<s2,返回負數,如果s1==s2,返回0,如果s1>s2,返回正數,所以對于本題來說,能夠輸出“OK”的語句是選項A所指的語句。16、假定已建立以下鏈表結構,且指針p和q已指向如圖所示的節(jié)點:則以下選項中可將q所指節(jié)點從鏈表中刪除并釋放該節(jié)點的語句組是A、p=q->next;free(q);B、p=:q;free(q);C、(*p).next=(*q).next;free(p);D、p->next=q->next;free(q);標準答案:D知識點解析:本題考查了在線性鏈表刪除一個節(jié)點的方法,要刪除q所指向的節(jié)點,只需要把q所指向的節(jié)點的前一個節(jié)點中的后繼指針指向q所指向的節(jié)點的下一個節(jié)點即可,即p->next=q->next=再釋放q所指向的節(jié)點,即free(q)。17、設有以下語句typedefstructTT{charc;inta[4];}CIN;則下面敘述中正確的是A、TT是struct類型的變量B、可以用TT定義結構體變量C、CIN是structTT類型的變量D、可以用CIN定義結構體變量標準答案:D知識點解析:C語言允許用typedef說明一種新的類型名,說明新類型名的語句為一般形式為:typedef類型名標識符在此,“類型名”必須是此語句之前已有定義的類型標識符?!皹俗R符”是一個用戶定義標識符,用作新的類型名。typedef語句的作用僅僅是用“標識符”來代表已存在的“類型名”,并未產生新的數據類型,原有類型名依然有效。在本題中用typedef定義CIN為TT的一種新的類型名,因而可以用它定義一個結構體變量。18、以下選項中合法的常量是A、2.7eB、999C、123E0.2D、0Xab標準答案:D知識點解析:0xab是十六進制表示的常量。19、若各選項中所用變量己正確定義,函數fun中通過return語句返回一個函數值,以下選項中錯誤的程序是A、main(){……x=fun(2,10);……)floatfun(inta,intb){……}B、floatfun(inta,intb){……}main(){……x=fun(i,j);……}C、floatfun(int,int);main(){……x=fun(2,10);……}floatfun(inta,intb){……}D、main(){floatfun(inti,intj);……x=fun(i,j);……}floatfun(inta,intb){……}標準答案:A知識點解析:C語言規(guī)定,函數必須先定義,后調用(函數的返回值類型為int或chaz。時除外)。在選項A)中,調用的子函數在調用后面定義,所以不正確。在選項B)、C)中,被調用函數在主函數之前定義,再在主函數中調用,所以是正確的;在選項D)中,在主函數中先對子函數floatfun(inti,inti)進行了聲明,然后進行調用。20、有下列程序:main(){inta[4][4]={{1,4,3,2),{8,6,5,7),{3,7,2,5),{4,8,6,1)},i,k,t;for(i=0;i<3;i++)for(k=i+1;k<4;k++)if(a[i][i]<a[k][k]){t=a[i][i];a[i][i]=a[k][k];a[k][k]=t;}for(i=0;i<4;i++)printf("%d,",a[0][i]);}程序運行后的輸出結果是A、6,2,1,1,B、1,1,2,6,C、2,3,4,6,D、6,4,3,2,標準答案:D知識點解析:利用二重for循環(huán)對二維數組af4][4]的主對角線上的元素{1,6,2,1}實現(xiàn)按列從大到小排序,所以數組a[4][4]的值變?yōu)閧{6,4,3,2,},{8,2,5,7},{3,7,1,5},{4,8,6,1}},最后輸出數組a[4][4]第一行上的元素,所以輸出結果為6,4,3,2。21、若要定義一個具有5個元素的整型數組,以下錯誤的定義語句是A、inta[5]={0};B、intb[]={0,0,0,0,0};C、intc[2+3]D、inti=5,d[i];標準答案:D知識點解析:本題考查一維數組的定義,C語言中一維數組的定義方式為:類型說明符數組名[常量表達式];。選項A正確:選項B初始化了5個元素,因此數組長度為5;選項C常量表達式2+3的值為5,正確:選項D數組長度不是常量表達式,錯誤。22、以下敘述中正確的是A、在C程序中的八進制和十六進制,可以是浮點數B、整型變量可以分為int型、short型、long型和unsigned型四種C、八進制數的開頭要使用英文字母o,否則不能與十進制區(qū)分開D、英文大寫字母X和英文小寫字母x都可以作為二進制數字的開頭字符標準答案:B知識點解析:C程序中的實型常量只有十進制一種數制,所以A錯誤,八進制數以0打頭,所以C錯誤,C語言中整數只有十進制,八進制,十六進制三種沒有二進制數制,所以D錯誤。23、以下敘述中正確的是A、字符變量在定義時不能賦初值B、字符常量可以參與任何整數運算C、同一英文字母的大寫和小寫形式代表的是同一個字符常量D、轉義字符用"\"符號開頭標準答案:B知識點解析:A選項中,字符變量在定義時可以賦初值;C選項中,同一英文字母的大寫和小寫形式代表的是不同的字符常量;D選項中,轉義字符以反斜線"\"開頭的。因此B選項正確。24、.設有如下的說明和定義struct{inta;char*s;}x,*p=&x;x.a=4;x.s="hello";則以下敘述中正確的是A、(p++)->a與p++->a都是合語法的表達式,但二者不等價B、語句++p->a;的效果是使p增1C、語句++p->a;的效果是使成員a增1D、語句*p->s++;等價于(*p)->s++;標準答案:C知識點解析:本題考查結構體變量的引用,++p->a的效果是使成員a增1,p++->a不合法,*p->s++為字符e,與(*p)->s++不等價。25、有以下程序段charc1,c2;for(c1=’0’,c2=’9’;c1<c2;c1++,c2--)printf("%c%c",c1,c2);程序段的執(zhí)行結果是()。A、0123456789B、0918273645C、0123498765D、9876543210標準答案:B知識點解析:程序定義兩個字符變量c1和c2。for循環(huán)中,首先為c1賦值“0”,為c2賦值“9”,接著判斷c1和c2的大小。由于字符變量可以作為整型數處理,數字字符的ASCII值按字面數值的大小順序連續(xù)遞增,因此c1小于c2成立,執(zhí)行循環(huán)體輸出“09”,再將c1自增1、c2自減1后,執(zhí)行下一輪循環(huán),直到c1=’5’,c2=’4’時,c1<c2不成立,循環(huán)終止。最終程序段輸出:0918273645。故本題答案為B選項。國家二級C語言機試(選擇題)模擬試卷第3套一、選擇題(本題共40題,每題1.0分,共40分。)1、支持子程序調用的數據結構是A、棧B、樹C、隊列D、二叉樹標準答案:A知識點解析:棧是一種限定在一端進行插入與刪除的線性表。在主函數調用子函數時,要首先保存主函數當前的狀態(tài),然后轉去執(zhí)行子函數,把子函數的運行結果返回到主函數調用子函數時的位置,主函數再接著往下執(zhí)行,這種過程符合棧的特點。所以一般采用棧式存儲方式。2、設循環(huán)隊列的存儲空間為Q(1:35),初始狀態(tài)為front=rear=35。現(xiàn)經過一系列入隊與退隊運算后,front=15,rear=15,則循環(huán)隊列中的元素個數為A、15B、16C、20D、0或35標準答案:D知識點解析:循環(huán)隊列的隊頭指針和尾指針都等于15,此循環(huán)隊列中元素的個數有兩種情況,第一種情況是隊頭指針和尾指針都是第一次到達15,此時元素個數為0:第二種情況是隊頭指針第一次到達15,而尾指針第二次到達15,此時元素個數為35。3、某二叉樹共有12個結點,其中葉子結點只有1個。則該二叉樹的深度為(根結點在第1層)A、3B、6C、8D、12標準答案:D知識點解析:根據二叉樹的性質,度為0的結點(即葉子結點)總是比度為2的結點多一個。題目中的二叉樹的葉子結點為1,因此度為2的結點的數目為0,故該二叉樹為12層,每層只有一個結點。4、以下選項中合法的變量是A、5aB、A%C、_10_D、sizeof標準答案:C知識點解析:對于變量的命名要利用標識符命名,所謂標識符就是C語言中的變量名、函數名、數組名、文件名、類型名等。其中標識符構成:①標識符由字母、數字和下劃線組成;②第一個字符必須為字母或下劃線:因此選項A中數字開頭,選項B出現(xiàn)了非法字符%,而選項D中sizeof為關鍵字,不能為變量命名。5、一間宿舍可住多個學生,則實體宿舍和學生之間的聯(lián)系是()。A、一對一B、一對多C、多對一D、多對多標準答案:B知識點解析:因為一間宿舍可以住多個學生,即多個學生住在一間宿舍中,但一個學生只能住一間宿舍,所以實體宿舍和學生之間是一對多的關系。6、對長度為10的線性表進行冒泡排序,最壞情況下需要比較的次數為A、9B、10C、45D、90標準答案:C知識點解析:線性表的長度為n,最壞情況下冒泡排序需要比較的次數為n(n-1)/2。7、在E—R圖中,用來表示實體聯(lián)系的圖形是()。A、橢圓形B、矩形C、菱形D、三角形標準答案:C知識點解析:在E—R圖中,實體集用矩形,屬性用橢圓,聯(lián)系用菱形。8、下列選項中不屬于面向對象程序設計特征的是A、繼承性B、多態(tài)性C、類比性D、封裝性標準答案:C知識點解析:面向對象程序設計的三個主要特征是:封裝性、繼承性和多態(tài)性。封裝性即只需知道數據的取值范圍和可以對該數據施加的操作,而無需知道數據的具體結構以及實現(xiàn)操作的算法。繼承性是指使用已有的類定義作為基礎建立新類的定義技術。對象根據所接受的消息而做出動作,同樣的消息被不同的對象接受時可導致完全不同的行動,該現(xiàn)象稱為多態(tài)性。9、下面不屬于軟件設計原則的是A、抽象B、模塊化C、自底向上D、信息隱藏標準答案:C知識點解析:軟件設計的基本原則包括抽象、信息隱藏、模塊化、局部化、確定性、一致性、完備性和可驗證性。10、在源程序的開始處加上#include進行文件引用的原因,以下敘述正確的是()。A、stdio.h文件中包含標準輸入/輸出函數的函數說明,通過引用此文件以便能正確使用printf、scanf等函數B、將stdio.h中標準輸入/輸出函數鏈接到編譯生成的可執(zhí)行文件中,以便能正確運行C、將stdio.h中標準輸入/輸出函數的源程序插入到引用處,以便進行編譯鏈接D、將stdio.h中標準輸入/輸出函數的二進制代碼插入到引用處,以便進行編譯鏈接標準答案:A知識點解析:stdio.h包含標準庫函數頭文件,很多庫函數的聲明都在stdio.h這個文件中,包含之后就可以用其中的庫函數,例如printf函數,scanf函數等。11、下列描述中正確的是A、軟件交付使用后還需要再進行維護B、軟件工具交付使用就不需要再進行維護C、軟件交付使用后其生命周期就結束D、軟件維護是指修復程序中被破壞的指令標準答案:A知識點解析:通常將軟件產品從提出、實現(xiàn)、使用維護到停止使用退役的過程稱為軟件生命周期。軟件生命周期分為軟件定義、軟件開發(fā)及軟件運行維護三個階段。已交付的軟件投入運行后,應在運行使用中不斷地維護,根據新提出的需要進行必要而且可能的擴充和刪改。12、以下選項中,當x為大于1的奇數時,值為0的表達式是A、x/2B、x%21=0C、x%2=0D、x%2=1標準答案:C知識點解析:由于x為大于1的奇數,因此x%2取余的值為1,和0不相等。13、下列描述中正確的是A、軟件測試的主要目的是發(fā)現(xiàn)程序中的錯誤B、軟件測試的主要目的是確定程序中錯誤的位置C、為了提高軟件測試的效率,最好由程序編制者自己來完成軟件測試的工作D、軟件測試是證明軟件沒有錯誤標準答案:A知識點解析:軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程。一個好的測試用例是指很可能找到迄今為止尚未發(fā)現(xiàn)的錯誤的用例;一個成功的測試是發(fā)現(xiàn)了至今尚未發(fā)現(xiàn)的錯誤的測試。為了達到好的測試效果,應該由獨立的第三方來構造測試,程序員應盡量避免檢查自己的程序。14、以下敘述中正確的是()。A、char,c1,c2,*c3,c4[40];是合法的變量定義語句B、數組下標的下限由數組中第一個非零元素的位置決定C、數組下標的下限由數組中第一個被賦值元素的位置決定D、數組下標的下限是1標準答案:A知識點解析:A選項正確,charc1,c2,*c3,c4[40]表示定義了兩個字符變量c1、c2,一個字符指針c3,一個字符數組c4。數組的下限永遠為0,選項B、C、D錯,答案選A。15、在軟件開發(fā)中,需求分析階段產生的主要文檔是A、軟件集成測試計劃B、軟件詳細設計說明書C、用戶手冊D、軟件需求規(guī)格說明書標準答案:D知識點解析:在軟件開發(fā)過程中,需求分析階段產生的主要文檔是軟件需求規(guī)格說明書。16、一間宿舍可住多個學生,則實體宿舍和學生之間的聯(lián)系是A、一對一B、一對多C、多對一D、多對多標準答案:B知識點解析:兩個實體集間的聯(lián)系可以有下面幾種:一對一的聯(lián)系、一對多或多對一的聯(lián)系和多對多的聯(lián)系。由于一個宿舍可以住多個學生,所以它們的聯(lián)系是一對多聯(lián)系。17、一個教師講授多門課程,一門課程由多個教師講授。則實體教師和課程間的聯(lián)系是A、1:1聯(lián)系B、1:m聯(lián)系C、m:1聯(lián)系D、m:n聯(lián)系標準答案:D知識點解析:一個教師可講授多門課程,一門課程可由多個教師講授,則實體教師和課程的聯(lián)系是多對多的聯(lián)系。18、關于C語言程序的敘述中正確的是()。A、當用scanf從鍵盤輸入數據時,每行數據在未按下回車鍵(Enter鍵)前,可以任意修改B、復合語句存語法上包含多條語句,其中不能定義局部變量C、空語句就是指程序中的空行D、花括號對{}只能用來表示函數的開頭和結尾,不能用于其他目的標準答案:A知識點解析:當使用scanf函數從鍵盤輸入數據時,可以輸入間隔符,但輸入回車后scanf函數即接收了這一行數據,不能再修改,選項A正確;在復合語句中可以定義變量為局部變量,選項B錯誤;而空語句為“;”,不是空行,選項C錯誤;對于選項D,{}還可以表明復合語句的開頭結尾,或者循環(huán)體的開頭結尾等,選項D錯誤。19、有以下程序#includevoidmain(){ints;scanf("%d",&s);while(s>0){switch(s){case1:printf("%d",s+5);case2:printf(“%d”,s+4);break;case3:printf(“%d”,s+3);default:printf(“%d”,s+1);break;}scanf(“%d”,&s);}}運行時,若輸入123450,則輸出結果是A、66656B、6566456C、66666D、6666656標準答案:B知識點解析:這道試題主要考查了switch和break語句,當變量s的值為1時,執(zhí)行case1、case2兩條語句,輸出65;當變量s的值為2時,執(zhí)行case2語句,輸出6;變量s的值為3時,執(zhí)行case3、default兩條語句,輸出64;變量s的值為4時,執(zhí)行default語句,輸入5;變量s的值為5時,執(zhí)行default語句,輸出6:變量s的值為0時,程序運行結束。20、以下選項中不屬于C語言程序運算符的是A、sizeofB、()C、<>D、&&標準答案:C知識點解析:sizeof為測試內存的運算符,()為算術運算符,&&為邏輯運算符。而<>不是C語言的運算符,C語言中!=表示不等于。21、以下敘述中正確的是A、C語言程序總是從最前面的函數開始執(zhí)行B、C語言程序總是從main函數開始執(zhí)行C、C語言程序中main函數必須放在程序的開始位置D、C語言程序所調用的函數必須放在main函數的前面標準答案:B知識點解析:C語言中一個源程序都有一個且只能有一個main函數,即主函數;C語言規(guī)定必須用main作為主函數名。其后的一對圓括號中可以是空的,但不能省略。程序中的main()是主函數的起始行,也是C程序執(zhí)行的起始行。每一個程序都必須有一個且只能有一個主函數。一個C程序總是從主函數開始執(zhí)行,到main函數體執(zhí)行完后結束,而不論main函數在整個程序中的位置如何。而調用函數的定義位置和調用沒有直接關系。22、下列定義變量的語句中錯誤的是A、floatUS$;B、doubleint_;C、charFor;D、im_int;標準答案:A知識點解析:C語言規(guī)定,變量的標識符只能由字母、數字或下劃線3種字符組成,且首字符必須為字母或下劃線。在C語言中大寫字母和小寫字母被認為是兩個不同的字符。選項B)定義的變量標識符int和選項D)定義的變量標識符int與C語言的關鍵字int是不同的,是正確的變量標識。選項C)定義的變量標識符For與C語言中的關鍵字for是兩個不同的標識符,而在選項A)包含有特殊字符$,因而其不符合C語言的變量命名規(guī)定。23、用樹形結構表示實體之間聯(lián)系的模型是A、關系模型B、網狀模型C、層次模型D、以上三個都是標準答案:C知識點解析:層次模型的基本結構是樹形結構,這種結構方式在現(xiàn)實世界中很普遍,它們自頂向下、層次分明。24、有三個關系R、S和T如下:則由關系R和S得到關系T的操作是A、自然連接B、差C、交D、并標準答案:B知識點解析:由三個關系R、S和T的結構可以知道,關系T是由關系R、S經過差運算得到的。25、以下選項中合法的常量是A、2.7eB、999C、123E0.2D、0Xab標準答案:D知識點解析:0xab是十六進制表示的常量。26、有以下程序:#include<stdio.h>#include<string.h>main(){charstr[][20]={’’One*World’’,’’One*Dream!’’},*p=str[1];printf(’’%d,’’,strlen(p));printf(’’%s\n’’,p);}程序的運行結果是()。A、10,One*Dream!B、9,One*Dream!C、9,One*W0rldD、10,One*World標準答案:A知識點解析:p是指向二維字符數組第二行One*Dream!的數組指針,所以長度是10,打印輸出的也是該字符串。27、以下選項中,當x為大于1的奇數時,值為0的表達式是A、x/2B、x%2==0C、x%2!=0D、x%2==1標準答案:B知識點解析:因為x的值為大于1的奇數,所以x除以2的余數等于1。所以選項B)等于關系表達式的結果為假,即等于0。28、有以下程序:#include<stdio.h>main(){FILE*pf;char*s1="China",*s2="Beijing";pf=fopen.("abc.dat","wb+");fwrite(s2,7,1,pf);rewind(pf);/*文件位置指針回到文件開頭*/fwrite(s1,5,1,pf);fclose(pf);}程序執(zhí)行后,abc.dat文件的內容是()。A、ChinaB、ChinangC、ChinaBeijingD、BeijingChina標準答案:B知識點解析:本題考查文件操作函數:fwrite和rewind函數。題目中先是將s2字符串寫入adc.dat中,然后將寫指針回到文件開頭,然后寫入s1字符串,那么s1字符串就將前5個字符覆蓋,所以最終結果為Chinang,B選項正確。29、有以下程序#include#definef(x)x*x*xmain(){inta=3,s,t;s=f(a+1);t=f((a+1));printf("%d,"d\n",s,t);}程序運行后的輸出結果是A、10,10B、10,64C、64,10D、64,64標準答案:B知識點解析:根據題目中宏f(x)的定義,f(a+1)=a+1*a+1*a+1=a+a+a+1=10,而f((a+1))=(a+1)*(a+1)*(a+1)=4*4*4=64。30、有以下程序#includevoidfun(char**p){++p;printf("%s\n”,"p);}main(){char*a[]=("Morning","Afternoon","Evening","Night");fun(a);}程序的運行結果是A、fternoonB、MorningC、orningD、Afternoon標準答案:D知識點解析:在程序中,指針的指針變量a和p都是指向字符串的指針。執(zhí)行fun(a)語句時,p指向的是7符串數組a的第一個字符串“Moming”,p自加1之后,*p指向了字符串數組a的第2個字符串“Aftermoon”。31、設有定義:inta=1,b=2,c=3;以下語句中執(zhí)行效果與其它三個不同的是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;}標準答案:A知識點解析:在C語言中,用分號表示一條語句的結束,用{}把幾條語句放在一塊表示一個語句塊,其整體表示一個功能。因而在題目給出的四個選項中,選項B、C、D表示的功能相同,而選項A表示的是一條if語句,兩條賦值語句。32、有以下程序,程序運行后的輸出結果是main(){intm=12,n=34;printf("%d%d",m++,++n);printf("%d%d\n",n++,++m);}A、12353514B、12353513C、12343514D、12343513標準答案:A知識點解析:本題主要考查自加運算符,自加運算符++在變量前表示先增加然后再使用,++在變量后表示先使用然再增加。本題中,第一個prinff語句m++表示先輸出m的值,然后m增加1,因此首先輸出的是12,然后m的值變成13,++n表示n首先增加1變成35然后輸出,因此輸出的是35;在第二個printf語句中,n++是先輸出n的值然后增加,即輸出35,n的值變?yōu)?6,++m表示先增加m的值再輸出,m的值由13變成14,故最后輸出的是14。33、有以下程序#includemain(){inti,j;for(i=3;i>=1;i--){for(j=1;j<=2;j++)printf("%d",i+j);printf("\n");}}程序的運行結果是()。A、453423B、432543C、233445D、233423標準答案:A知識點解析:考查循環(huán)嵌套。內層循環(huán)是外層循環(huán)的一部分,外層循環(huán)每循環(huán)一次,內層循環(huán)要一直循環(huán)到結束。該程序的執(zhí)行流程就是,外層循環(huán)i從3到1,內層循環(huán)j從1到2,每次內層循環(huán)輸出i+j的值。內層循環(huán)結束后輸出回車。由此,易得出第一行的輸出結果為:3+13+2<回車>即45<回車>,以此類推,答案選A。34、有以下程序structS{inta;intb;};main(){structSa,*p=&a;a.a=99;printf("%d\n",___________);}程序要求輸出結構體rfl成員a的數據,以下不能填入橫線處的內容是A、a.aB、*p.aC、p->aD、(*p).a標準答案:B知識點解析:如果p指向結構體,那么下面三種形式都可以訪問結構體的成員:結構體變量.成員名、(*p).成員名、p->成員名。35、在一個C源程序文件中所定義的全局變量,其作用域為A、由具體定義位置和extern說明來決定范圍B、所在程序的全部范圍C、所在函數的全部范圍D、所在文件的全部范圍標準答案:A知識點解析:全局變量是在函數外部任意位置上定義的變量,它的作用域是從變量定義的位置開始,到整個源文件結束止。在同一編譯單位內用extern說明符擴展全局變量的作用域(當全局變量定義在后,引用它的函數在前時,應該在引用它的函數中用extern對此全局變量進行說明,以便通知編譯程序:該變量是一個已在外部定義了的全局變量,已經分配了存儲單元,不需要再為它分配存儲單元。這時全局變量的作用域從extern說明處起,延伸到該函數末尾)。當一個程序由多個編譯單位構成,并且在每個文件中均需要引用同一個全局變量,這時只在其中一個文件中定義所有的全局變量,而在其他用到這些全局變量的文件中用extern對這些變量進行說明。36、以下敘述中正確的是A、不能用字符串常量對字符數組名進行整體賦值操作B、字符串常量“Hello”會被隱含處理成一個無名字符型數組,它有5個元素C、“charstr[7]="string!";”在語法上是合法的,運行也是安全的D、“char*str;str="Hello";”與“charstr[];str="Hello";”效果是一樣的標準答案:A知識點解析:字符數組僅僅可以采用定義時初始化以及輸入得到數據,在程序其他部分不允許對其進行賦值,字符串常量中除了實際字符之外還有結束標志,選項B)錯誤,而選項C)中,沒有空間存放字符串結束標志,因此運行是不安全的。選項D)中第一個str為指針,可以賦值,而后面的為數組,在程序中賦值出錯。37、有以下程序,程序運行后的輸出結果是#include<stdio.h>#definefix)x*x*xmain(){inta=3,s,t;s=f(a+1);t=f((a+1));printf("%d,%d\n",s,t);}A、10,10B、10,64C、64,10D、64,64標準答案:B知識點解析:根據題目中宏f(x)的定義,運算過程應為:s=f(a+1)=a+1*a+1*a+1=a+a+a+1=10,因此最后s的結果為10,而t=f((a+1))=(a+1)*(a+1)*(a+1)=4*4*4=64的結果為64。38、若要定義一個具有5個元素的整型數組,以下錯誤的定義語句是A、inta[5]={0};B、intb[]={0,0,0,0,0};C、intc[2+3]D、inti=5,d[i];標準答案:D知識點解析:本題考查一維數組的定義,C語言中一維數組的定義方式為:類型說明符數組名[常量表達式];。選項A正確:選項B初始化了5個元素,因此數組長度為5;選項C常量表達式2+3的值為5,正確:選項D數組長度不是常量表達式,錯誤。39、若有以下程序#include<stdio.h>int*f(int*s,int*t){intk;if(*s<*t){k=*s;*s=*t;*t=k;}returns;}main(){inti=3,j=5,*p=&i,*q=&j,*r;r=f(p,q);printf("%d,%d,%d,%d,%d\n",i,j,*p,*q,*r);}則程序的輸出結果是A、3,5,5,3,5B、3,5,3,5,5C、5,3,5,3,5D、5,3,3,5,5標準答案:C知識點解析:函數f為返回值為指針的函數,主要功能是返回s和t指向空間值大的數據的地址,同時如何s指向空間數據大于t指向空間的數據,那么交換。主函數p和q指向i和j,值為3和5,j的值大于i的值,因此調用函數f以后,返回i的地址,r指向j,同時i和j的值交換,i=5,j=3,p和q的指向不變,p指向i,q指向j。40、有以下程序:#includevoidswap(char*x,char*y){chart;t=*x;*x=*y;*y=t;}main(){char*s1="abc",*s2="123";swap(s1,s2);printf("%s,%s\n",s1,s2);}程序執(zhí)行后的輸出結果是()。A、321,cbaB、abc,123C、123,abcD、1bc,a23標準答案:D知識點解析:字符串是一個特殊的數組,所以按照數組的規(guī)則,s1應該指向的是數組的首地址,即"abc"的第一個字符的地址。s2指向的是"123"的第一個字符的地址。調用swap函數之后交換的是兩個字符串的第一個字符’a’和’1’的內容,所以打印輸出為D。國家二級C語言機試(選擇題)模擬試卷第4套一、選擇題(本題共40題,每題1.0分,共40分。)1、深度為7的二叉樹共有127個結點,則下列說法中錯誤的是()。A、該二叉樹是滿二叉樹B、該二叉樹有一個度為1的結點C、該二叉樹是完全二叉樹D、該二叉樹有64個葉子結點標準答案:B知識點解析:滿二叉樹滿足深度為m的二叉樹最多有2m-1個結點,本題中二叉樹深度為7且有127個結點,滿足27-1=127,達到最大值,故此二叉樹為滿二叉樹,也是完全二叉樹。滿二叉樹第k層上有2k-1結點,則該二叉樹的葉子結點數為27-1=64個。滿二叉樹不存在度為1的結點。2、某二叉樹有5個度為2的結點,則該二叉樹中的葉子結點數是A、10B、8C、6D、4標準答案:C知識點解析:根據二叉樹的性質,在任意二叉樹中,度為0的結點(即葉子結點)總是比度為2的結點多一個。3、有以下程序#includevoidmain(){intn=2,k=-1;while(!(k>0‖n++));printf("%d%d\n",k,n);}程序運行后的輸出結果是()。A、02B、13C、57D、12標準答案:D知識點解析:在程序中整型變量n的初始值等于2,整型變量k的初始值等于1,在執(zhí)行while語句時,由于表達式k的值大于0為真,所以不再需要判斷“n++”是否為真,“(k>0∥n++)”表達式的值為真。“!(k>0∥n++)”表達式的值為假,所以while語句中的條件不滿足,循環(huán)語句不會執(zhí)行,變量n的值也不會加1,所在輸出變量k和n的值是1和2。4、下面不屬于需求分析階段任務的是A、確定軟件系統(tǒng)的功能需求B、確定軟件系統(tǒng)的性能需求C、需求規(guī)格說明書評審D、制定軟件集成測試計劃標準答案:D知識點解析:需求分析階段的工作可分為4個階段:需求獲取、需求分析、編寫需求規(guī)格說明書、需求評審。5、if語句的基本形式是:if(表達式)語句,以下關于“表達式”值的敘述中正確的是A、必須是整數值B、必須是正數C、可以是任意合法的數值D、必須是邏輯值標準答案:C知識點解析:在if語句中,表達式可以是任意合法的數值。當其值為非零時,執(zhí)行if語句,為0時執(zhí)行else語句。6、在帶鏈隊列中,經過一系列正常的操作后,如果front=rear,則隊列中的元素個數為A、0或1B、0C、1D、隊列滿標準答案:A知識點解析:隊列是一種特殊的線性表,特殊之處在于它只允許在表的前端(front)進行刪除操作,而在表的后端(rear)進行插入操作,和棧一樣,隊列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。隊列的鏈式存儲也稱為鏈隊列。為了便于操作,可給鏈隊列添加1個頭結點,并令頭指針指向頭結點。隊列為空的判斷條件是頭指針和尾指針的值相同,且均指向頭結點。當隊列為空(0)或1時,front=rear。7、以下敘述中正確的是A、if語句只能嵌套一層B、不能在else子句中再嵌套if語句C、if子句和else子句中可以是任意的合法的C語句D、改變if-else語句的縮進格式,會改變程序的執(zhí)行流程標準答案:C知識點解析:含else子句的if語句的格武為if(表達式)語句1else語句2其中if和else是C語言的關鍵字。“語句1”稱為if子句,“語句2”稱為else子句,這些子句只允許為一條語句,若需要多條語句時,則應該使用復合語句,對于if和else語句的嵌會原則是比較自由的。8、對于現(xiàn)實世界中事物的特征,在實體一聯(lián)系模型中使用()。A、屬性描述B、關鍵字描述C、二維表格描述D、實體描述標準答案:A知識點解析:在實體-聯(lián)系模型中,用屬性來描述現(xiàn)實世界中對象的屬性所表示的對象的性質、特征和行為。9、設有定義:intk=0;,以下選項的4個表達式中與其他3個表達式的值不相同的是()。A、++kB、k+=1C、k++D、k+1標準答案:C知識點解析:++k,先使得k的值自增1后再使用,k++是先取得k的值再將k的值自增1,所以C選項中表達式的值為0,而其他3個表達式的值均為1,所以選擇C選項。10、有以下程序:#includemain(){inti,array[6]={1,5,0,4};for(i=0;i<5;i++)printf(“%d”,array[i]);printf(“\n”);}程序運行后的輸出結果是()。A、04040B、15040C、15540D、12120標準答案:B知識點解析:本題主要考查一維數組的輸出。由于數組中有6個元素,但初始化數組的時候只給出4個元素,所以array[5]=0,array[6]=0,前面幾位元素依次輸出,不夠位數補0,所以選項B正確。11、有以下程序main(){inta=1,b=2;for(;a<8;a++){b+=a;a+=2;}pr2ntf("%d,%d\n",a,b);}程序運行后的輸出結果是A、8,11B、10,14C、7,11D、9,18標準答案:B知識點解析:在這段程序中變量a的初值等于1,變量b的初值等于2。第1次執(zhí)行for循環(huán)語句后,變量a的值等于3,變量b的值等于3。第2次執(zhí)行for循環(huán)后,變量a等于6,變量b的值等于7。第3次執(zhí)行for循環(huán)后,變量a等于9,變量b的值等于14。第4次執(zhí)行for循環(huán)后,變量a等于10,這時退出for循環(huán),此時變量b的值等于14。因而程序輸出變量a,b的值分別為10,14。12、設有如下程序:#includechars[20]=“Beijing”,*P;P=s:則執(zhí)行P=s;語句后,以下敘述正確的是()。A、s和P都是指針變量B、s數組中元素的個數和P所指字符串長度相等C、可以用*P表示s[0]D、數組s中的內容和指針變量P中的內容相同標準答案:C知識點解析:程序定義了字符數組s和字符型指針變量p,并且使得p指向數組,執(zhí)行p=s;語句后,*p即表示s[0];s數組中元素的個數和p所指字符串長度不相等,因為s數組中元素的個數包括字符串結束標志“\0”,而p所指字符串長度不包括“\0”;s是字符型數組,p是指針變量,數組s中的內容和指針變量p中的內容不相同,數組中存放的是字符串,而指針變量p存放的是數組的首地址,因此C選項正確。13、若intx=12;doubley=3.141593;則printf(’’%d%8.6f’’,x,y);的輸出結果是()。A、123.141593B、123.1415930C、12,3.141593D、123.1415930標準答案:A知識點解析:本題考查格式化輸出函數printf,在printf函數調用里面首先輸入整型變量x的值12.然后按照’’%8.6f’’格式輸出double類型變量y的值,’’%8.6f’’表示輸出8位,小數點后輸出6位,這里的8位是指輸出的總長度。14、以下關于C語言的敘述中正確的是()。A、預處理命令通常位于函數體外面,但也可以位于函數體中間B、C語言中的變量定義須在其他語句之前C、在C語言程序的書寫中,一個語句必須單占一行D、一個C語言源程序可以由一個或多個源文件組成,每個源文件可由自己的main函數標準答案:A知識點解析:源程序中可以有預處理命令(include命令僅為其中的一種)。C語言中的變量可以在使用之前的任何位置進行定義。C語言程序的書寫中,多個語句可以位于一行,但為了增強可讀性,一般每行只有一條語句。一個C語言源程序可以由一個或多個源文件組成,但僅可以有一個main函數。15、有以下程序#includeintfun(inta,intb){if(b==0)returna;elsereturn(fun(--a,--b));}main(){Printf("%d\n",fun(4,2));}程序的運行結果是A、1B、2C、3D、4標準答案:B知識點解析:由程序可知函數fun(inta,intb)是一個遞歸函數。所以當t函數中調用fun(4,2)時,其執(zhí)行過程如下:fun(4,2)->fun(3,1)->fun(2,0),其返回值為2。16、已定義以下函數intfun(int*P){return*P;}fun函數的返回值是()。A、一個整數B、不確定的值C、形參P中存放的值D、形參P的地址值標準答案:A知識點解析:返回值為指針變量指向的數據,該數據已被定義為整型,因此A選項正確。17、以下程序的輸出結果是()。#includemain(){inta=8,b=6,m=1;switch(a%4){case0:m++;break;case1:m++;switch(b%3){default:m++;case0:m++;break;}}printf("%d\n",m);}A、1B、2C、3D、4標準答案:B知識點解析:本題考查switch語句。因為a=8,a%4=0,所以執(zhí)行case0后面的語句,將m加1,遇到break語句跳出switch。18、以下關于retum語句的敘述中正確的是A、一個自定義函數中必須有一條return語句B、一個自定義函數中可以根據不同情況設置多條return語句C、定義成void類型的函數中可以有帶返回值的return語句D、沒有return語句的自定義函數在執(zhí)行結束時不能返回到調用處標準答案:B知識點解析:return語句主要用于返回函數的值。在一個自定義函數中,可以根據不同的情況設置多條return語句返回函數的值。19、以下選項中,不合法的C語言用戶標識符是A、AaBcB、a-bC、a_bD、_1標準答案:B知識點解析:在C語言中的用戶標識符只能由字母,數字和下劃母組成,并且第一個字符必須是字母或下劃線,在選項A)中出現(xiàn)了非法的字符--。20、以下選項中合法的變量是A、5aB、A%C、_10_D、sizeof標準答案:C知識點解析:對于變量的命名要利用標識符命名,所謂標識符就是C語言中的變量名、函數名、數組名、文件名、類型名等。其中標識符構成如下:①標識符由字母、數字和下劃線組成;②第一個字符必須為字母或下劃線;因此選項A)中數字開頭,選項B)出現(xiàn)了非法字符%,而選項D)中sizeof為關鍵字,不能為變量命名。21、以下敘述中正確的是A、continue語句的作用是:使程序的執(zhí)行流程跳出包含它的所有循環(huán)B、break語句只能用在循環(huán)體內和switch語句體內C、在循環(huán)體內使用break語句和continue語句的作用相同D、break語句只能用于switch語句體中標準答案:B知識點解析:只能在循環(huán)體內和switch語句體內使用break語句。continue語句的作用是結束本次循環(huán),即跳過本次循環(huán)體中continue語句后面的語句,立刻進行下一次的循環(huán)條件判斷,可以理解為僅結束本次循環(huán)。而break語句可以使程序流程跳出switch語句體,也可用break語句在循環(huán)結構中終止循環(huán)體。22、關于字符數組的定義中有語法錯誤的是()。A、charstr[3][10];str[1]=’’guest’’;B、charstr[][10]={’’guest’’};C、char*str[3];str[1]=’’guest’’;D、char*str[]={’’guest’’};標準答案:A知識點解析:本題考查字符數組的定義和使用。選項A定義了一個二維字符數組,第二句是直接給字符數組賦值,錯誤。C語言中不能直接給字符數組賦值;選項,B、C和D都是正確的。23、以下選項中關于程序模塊化的敘述錯誤的是A、把程序分成若干相對獨立、功能單一的模塊,可便于重復使用這些模塊B、可采用自底向上、逐步細化的設計方法把若干獨立模塊組裝成所要求的程序C、把程序分成若干相對獨立的模塊,可便于編碼和調試D、可采用自頂向下、逐步細化的設計方法把若干獨立模塊組裝成所要求的程序標準答案:B知識點解析:如果應用結構化程序設計方法設計程序,那么可采用自頂向下,逐步細化的設計方法把若干獨立模塊組裝成所要求的程序。24、有以下程序:#include<stdio.h>main(){FILE*fp;charstr[10];fp=fopen("myfile.dat","w");fputs("abc",fp);felose(fp);fp=fopen("myfile.dat","a+");fprintf(fp,"%d",28);rewind(fp);fscanf(fp,"%s",str);puts(str);felose(fp);}程序的運行結果是()。A、abcB、28cC、ad9c28D、因類型不一致而出錯標準答案:C知識點解析:本題考查文件操作函數:fprintf()函數。fprintf()函數向文件輸出,將輸出的內容輸出到硬盤上的文件,或是相當于在文件的設備上執(zhí)行兩次fprintf后,文件中有abc28,所以C選項正確。25、設變量均已正確定義并賦值,以下與其他三組輸出結果不同的一組語句是A、x++;printf("%d\n",x);B、++x;printf("%d\n",x);C、n=x++:printf("%d\n",n);D、n=++x;printf("%d\n",n);標準答案:C知識點解析:本題考查自增運算符。++在前表示先自增然后使用,++在后面表示先使用然后自增。選項A中首先執(zhí)行x++,執(zhí)行完后x自增1,然后printf輸出的是x自增后的值;選項B首先執(zhí)行++x,x的值增加1,接著輸出x的值:選項C中++在x的后面,因此n的值是x自增前的值,printf輸出的是x自增前的值;選項D中++在x的前面,因此x首先自增,然后再賦值給n,n的值是x自增后的值,輸出的也是x自增后的值。26、以下選項中正確的定義語句是A、doublea=b=7;B、doublea:b;C、double,a,b;D、doublea=7,b=7;標準答案:D知識點解析:在C語言中,可以用一條語句同時定義幾個同類型的變量,變量之間用逗號隔開。27、已知字符’A’的ASCII代碼值是65,字符變量c1的值是’A’,c2的值是’D’。則執(zhí)行語句printf("%d,%d",c1,c2-2);的輸出結果是A、A,68B、A,BC、65,66D、65,68標準答案:C知識點解析:在C語言中,字符常量

溫馨提示

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

評論

0/150

提交評論