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

下載本文檔

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

文檔簡介

國家二級C語言機試(選擇題)模擬試卷22(共9套)(共240題)國家二級C語言機試(選擇題)模擬試卷第1套一、選擇題(本題共25題,每題1.0分,共25分。)1、下面敘述中正確的是A、線性表是線性結構B、棧與隊列是非線性紿構C、線性鏈表是非線性結構D、二叉樹是線性結構標準答案:A知識點解析:線性表是最簡單的、最常用的一種線性結構。所謂線性鏈表指的是采用鏈式存儲結構盼線性表。棧和隊列其實是一種特殊的線性表。樹是一種簡單的非線性結構,二叉樹是樹的一種。2、一棵二叉樹共有25個結點,其中5個是葉子結點,則度為1的結點數為A、16B、10C、6D、4標準答案:A知識點解析:根據二叉樹的性質,在任意二叉樹中,度為0的結點(即葉子結點)總是比度為2的結點多一個,故此度為1的結點個數=總結點數-葉子節(jié)點數-度為2的節(jié)點數=25-5-4=16。3、對長度為10的線性表進行冒泡排序,最壞情況下需要比較的次數為A、9B、10C、45D、90標準答案:C知識點解析:線性表的長度為n,最壞情況下冒泡排序需要比較的次數為n(n-1)/2。4、若有定義語句:inta=3,b=2,c=1;,以下選項中錯誤的賦值表達式是()。A、a=(b=4)=3;B、a=b=c+1;C、a=(b=4)+c;D、a=1+(b=c=4);標準答案:A知識點解析:這道題目主要考察賦值表達式,對于賦值表達式來說,賦值號“=”的左邊一定為變量名,右邊為一個C語言合法的表達式。5、下面對軟件測試描述錯誤的是()。A、嚴格執(zhí)行測試計劃,排除測試的隨意性B、隨機地選取測試數據C、軟件測試的目的是發(fā)現(xiàn)錯誤D、軟件測試是保證軟件質量的重要手段標準答案:B知識點解析:軟件測試的準則如下:①所有測試都應追溯到需求。②嚴格執(zhí)行測試計劃,排除測試的隨意性。③充分注意測試中的群集現(xiàn)象。④程序員應避免檢查自己的程序。⑤窮舉測試不可能。⑥妥善保存測試計劃、測試用例、出錯統(tǒng)計和最終分析報告,為維護提供方便。6、將E-R圖轉換為關系模型時,實體和聯(lián)系都可以表示為()。A、屬性B、鍵C、關系D、域標準答案:C知識點解析:從E—R圖到關系模型的轉換是比較直接的,實體與聯(lián)系都可以表示成關系,E—R圖中屬性也可以轉換成關系的屬性。7、若用數組名作為函數調用時的實參,則實際上傳遞給形參的是()。A、數組的第一個元素值B、數組元素的個數C、數組中全部元素的值D、數組首地址標準答案:D知識點解析:形參是在函數的定義中,放在括號里聲明的變量;實參是調用函數時,傳入的參數。數組在進行形參實參結合的,就是傳遞數組的首地址,并不是把整個數組復制一份放入函數里運行。故D選項正確。8、以下敘述中正確的是A、在賦值表達式中,賦值號的右邊可以是變量,也可以是任意表達式B、a是實型變量,a=10在C語言中是允許的,因此可以說:實型變量中可以存放整型數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標準答案:A知識點解析:選項B中a=10,在賦值時會把10自動轉換為double類型然后賦值,實型變量中不可能存放整型。而選項C中執(zhí)行a=b后,b的值不變還是9,選項D中執(zhí)行“a=b;b=a;”后,a的值為9,b的值也為9。9、有以下程序#include<stdio.h>main(){intb=10,a=-11;a%=b%=4;printf(’’%d%d\n’’,a,b);)則程序的輸出結果是A、12B、-1-2C、-12D、1.2標準答案:C知識點解析:對于表達式a%=b%=4為復合的賦值運算,結合性自右至左,相當于先計算b=b%4,a=a%b;絀果的符號和第一個操作數的符號相同,因此b為2,a的結果為-1.10、下列對軟件測試和軟件調試敘述中錯誤的是()。A、嚴格執(zhí)行測試計劃,排除測試的隨意性B、軟件調試的目的是改正軟件錯誤C、軟件測試不需要考慮測試成本D、正確的執(zhí)行測試用例標準答案:C知識點解析:軟件測試定義:使用人工或自動手段來運行或測定某個系統(tǒng)的過程,其目的在于檢驗它是否滿足規(guī)定的需求或是弄清預期結果與實際結果之間的差別。軟件測試的目的:發(fā)現(xiàn)錯誤而執(zhí)行程序的過程,是評測軟件質量的重要過程和手段。軟件調試的目的是診斷并改正程序中的錯誤。測試必須對整個軟件總體進行評估。軟件測試需要考慮測試成本,軟件測試成本也要計入軟件開發(fā)成本中。故C選項不正確。11、有以下程序:#includemain(){inta[4][4]={{l,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、1,1,2,6,B、6,2,1,1,C、6,4,3,2,D、2,3,4,6,標準答案:C知識點解析:首先對二維數組進行賦值操作,a[0][0]、a[0][1]、…、a[3][2]、a[3][3]的值為1、4、…、6、1。通過for嵌套循環(huán)語句和if條件語句,對二維數組對角線元素進行由大到小的排序操作,程序最后通過for語句輸出二維數組第1行的4個元素,因此C選項正確。12、以下敘述中錯誤的是A、算法正確的程序最終一定會結束B、算法正確的程序可以有零個輸入C、算法正確的程序可以有零個輸出D、算法正確的程序對于相同的輸入一定有相同的結果標準答案:C知識點解析:算法是指為解決某個特定問題而采取的確定且有限的步驟。一個算法應該具有5個特征:①有窮性。一個算法包含的操作步驟應該是有限的。也就是說,在執(zhí)行若干個操作步驟之后,算法將結束,而且每一步都在合理的時間內完成。②確定性。算法中的每一條指令必須有確切的含義,不能有二義性,對于相同的輸入必能得出相同的執(zhí)行結果。③可行性。算法中指定的操作,都可以通過已經驗證過可以實現(xiàn)的基本運算執(zhí)行有限次后實現(xiàn)。④有零個或多個輸入。在計算機上實現(xiàn)的算法是用來處理數據對象的,在大多數情況下這些對象需要通過輸入來得到。13、以下程序的功能是:給r輸入數據后計算半徑為r的圓面積s。程序在編譯時出錯main()/*Beginning*/{intr;floats;scanf("%d",r);s=*π*r*r;printf("s=%f\n",s);}出錯的原因是A、注釋語句書寫位置錯誤B、存放圓半徑的變量r不應該定義為整型C、輸出語句中格式描述非法D、計算圓面積的賦值語句使用了非法變量標準答案:D知識點解析:本題考查了C語言的基本輸入輸出函數。選項A錯誤,代碼里面的注釋是正確的,“/*”和“*/”配對;選項B錯誤,r變量定義為整型是可以的;選項C輸出語句格式正確;選項D正確,計算s的時候s=*π*r*r使用了未定義變量π。14、計算機能直接執(zhí)行的程序是A、目標程序B、可執(zhí)行程序C、匯編程序D、源程序標準答案:B知識點解析:把由高級語言編寫的程序稱為“源程序”,由二進制代碼表示的程序稱為“目標程序”(后綴名為.obj),由匯編語言編寫的程序稱為“匯編程序”。為了把源程序轉換成機器能接受的目標程序,軟件工作者編制了一系列軟件,通過這些軟件可以把用戶按規(guī)定語法寫出的語句——翻譯成二進制的機器指令。這種具有翻譯功能的軟件稱為“編譯程序”,每種高級語言都有與它對應的編譯程序。C源程序經過C編譯程序編譯之后生成一個后綴為.obj的二制進文件(稱為目標文件),這個目標程序要和C語言的庫函數相鏈接生成一個后綴為.exe的文件,這個文件可以在操作系統(tǒng)中直接執(zhí)行,稱為可執(zhí)行程序。15、有以下程序段intk=0,a=1,b=2,c=3;k:a<b?b:a;k=k>c?c:k;執(zhí)行程序段后,k的值是A、3B、2C、1D、0標準答案:B知識點解析:本題主要考查條件表達式。k=a<b?b:a中a<b為真,因此k的值為b,即k=2。k=k>c?c:k中k>c為假,k的值為2,16、己知天寫字母A的ASCII碼是65,小寫字母a的ASCII碼是97。以下不能將變量c中的大寫字母轉換為對應小寫字母的語句是A、c=(’A’+c)%26-’a’B、c=C+32C、c=C-’A’+’a’D、c=(C一’A’)%26+’a’標準答案:A知識點解析:由題意可知,小寫字符a和大寫字符A的ASCII代碼相差為32,所以選項C)能將大寫字符c的ASCII代碼轉換為小寫字符c的ASCII代碼;選項D)和C)左側的表達式都是大寫字符C與大寫字符A的差與’a’的ASCII代碼的和就是小寫字符c的ASCII代碼。而選項A)中應該是加上’a’,而不是減去’a’。17、將E-R圖轉換為關系模式時,E-R圖中的實體和聯(lián)系都可以表示為A、屬性B、鍵C、關系D、域標準答案:C知識點解析:將E-R圖轉換為關系模式時,實體和聯(lián)系都可以表示為關系。18、若已建立以下鏈表結構,指針p、s分別指向如圖所示結點則不能將s所指節(jié)點插入到鏈表末尾的語句組是A、s->next=’\0’:p=p->next;p->next=s;B、p=p->next;s->next=p;P->next=s;C、p=p一>next;s->next=P->next;p->next=s;D、p=(*p).next;(*s).next=(*p).next;(*p).next=s;標準答案:B知識點解析:選項A中首先p后移,s的后繼指針指向p,p的后繼指向s,在s和最后結點之間形成了圓圈,無法完成題中的操作。19、有以下程序#includemain(){ints[12]={1,2,3,4,4,3,2,1,1,1,2,3),c[5]={0},i;for(i=0;i<12;i++)c[s[i]]++;for(i=1;i<5;i++)printf("%d",c[i]);prinff(”\11”);}A、4332B、2344C、1234D、1123標準答案:A知識點解析:本題考查for語句的循環(huán)控制,首先定義了兩個數組并賦予了初始值,第一個for循環(huán)語句循環(huán)12次遍歷s數組的各個元素,將s[]中的原素值作為c[]數組中的下標,使相應的值自加。例如當i=0,c[s[0]]++為c[1]++,其值變?yōu)?,當執(zhí)行i=1,2,...11后,c[1]、c[2]、c[3]、c[4]分別為4、3、3、2,故選項A)為正確的運行結果。20、下列敘述中正確的是A、C程序中所有函數之間都可以相互調用B、在C程序中main函數的位置是固定的C、在C程序的函數中不能定義另一個函數D、每個C程序文件中都必須要有一個main函數標準答案:C知識點解析:C程序中主函數不能被其他函數調用,所以A選項錯誤,main函數可以放在程序開始,也可以放在中間,也可以放在最后,位置不固定,但程序執(zhí)行時必須從main函數開始,所以B選項錯誤,在C程序的函數中不能定義另一個函數,可以聲明或調用另一個函數,所以C選項正確?每個C程序中必須包含一個main函數,但不一定是每個C程序文件中必須有,用戶單獨編寫的某個函數也可以存儲為一個C程序文件,所以D選項錯誤。21、若有以下函數首部intfun(doublex[10],intn)則下面針對此函數的函數聲明語句中正確的是A、intfun(double,int);B、intfun(double*x,intn);C、intfun(double*,int*);D、intfun(doublex,int*n);標準答案:C知識點解析:函數說明的一般形式為:類型名函數名(參數類型1,參數類型2,……)。因為函數intfun(doublex[10],int*n)的第1個形式參數是一個雙精度型的一維數組,第2個參數是一個整型指針,并返回一個整型值。一維數組的名字表示的是一維數組的地址。22、已有定義:chara[]="xyz",b[]={’x’,’y’,’z’};,以下敘述中正確的是A、數組a和b長度相同B、a數組長度小于b數組長度C、a數組長度大于b數組長度D、上述說法都不對標準答案:C知識點解析:本題考查字符數組的定義。cllar“a[]="xyz",b[]={’x’,’y’,’z’};”定義了兩個字符數組a和b,a數組存放的是一個字符串,字符串以“/0”作為結束標志,數組a的長度必須加上結束符長度1,因此數組a的長度為4。數組b中有三個元素,長度為3。23、有以下程序(注:字符a的ASCII碼值為97)main(){char*s={"abc"};do{printf("%d",*s%10);++s;}while(*s);}程序運行后的輸出結果是A、abcB、7890C、979899D、789標準答案:D知識點解析:因為小寫字符a,b,c的ASCII的值分別為97,98,99,而在dowhile循環(huán)語句中,每次對字符的ASCII的值取余數并輸出,第一次循環(huán)輸出7,第二次循環(huán)輸出8,第三次循環(huán)輸出9。24、以下敘述中正確的是A、結構體數組名不能作為實參傳給函數B、結構體變量的地址不能作為實參傳給函數C、結構體中可以含有指向本結構體的指針成員D、即使是同類型的結構體變量,也不能進行整體賦值標準答案:C知識點解析:本題考查結構體變量作為函數參數,結構體變量的地址可以作為參數傳給函數,結構體數組名就是一個地址,可以傳給函數,如果是同類型的結構體變量,可以整體賦值。25、若以下選項中的變量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;case常量表達式2:語句2;…case常量表達式n:語句n;default:語句n+1;}B選項中,case1和case2有錯誤,;C選項中,casea和caseb不正確,case后面應該跟常量表達式;D選項中,switcha*b,有誤。因此A選項正確。國家二級C語言機試(選擇題)模擬試卷第2套一、選擇題(本題共25題,每題1.0分,共25分。)1、算法的時間復雜度是指A、算法的執(zhí)行時間B、算法所處理的數據量C、算法程序中的語句或指令條數D、算法在執(zhí)行過程中所需要的基本運算次數標準答案:D知識點解析:算法的時間復雜度,是指執(zhí)行算法所需要的計算工作量。算法的工作量可以用算法在執(zhí)行過程中所需基本運算的執(zhí)行次數來度量。2、下列敘述中正確的是A、循環(huán)隊列中的元素個數隨隊頭指針與隊尾指針的變化而動態(tài)變化B、循環(huán)隊列中的元素個數隨隊頭指針的變化而動態(tài)變化C、循環(huán)隊列中的元素個數隨隊尾指針的變化而動態(tài)變化D、循環(huán)隊列中的元素個數不會變化標準答案:A知識點解析:所謂循環(huán)結構就是將隊列存儲空間的最后一個位置繞到第一個位置上,形成邏輯上的環(huán)狀空間,循環(huán)使用。在循環(huán)隊列中,用隊尾指針rear指向隊列中的隊尾元素,用隊頭指針front指向隊頭元素的前一個位置,因此,隊列中的元素數等于從隊頭指針front指向的后一個位置與隊尾指針rear指向位置之間的元素數量。3、下列敘述中正確的是()。A、一個算法的空間復雜度大,則其時間復雜度也必定大B、一個算法的空間復雜度大,則其時間復雜度必定小C、一個算法的時間復雜度太,則其空間復雜度必定小D、算法的時間復雜度與空間復雜度沒有直接關系標準答案:D知識點解析:算法的空間復雜度是指算法在執(zhí)行過程中所需要的內存空間,算法的時間復雜度是指執(zhí)行算法所需要的計算工作量,兩者之間并沒有直接關系,答案為D。4、下面對軟件測試描述錯誤的是()。A、嚴格執(zhí)行測試計劃,排除測試的隨意性B、隨機地選取測試數據C、軟件測試的目的是發(fā)現(xiàn)錯誤D、軟件測試是保證軟件質量的重要手段標準答案:B知識點解析:軟件測試的準則如下:①所有測試都應追溯到需求。②嚴格執(zhí)行測試計劃,排除測試的隨意性。③充分注意測試中的群集現(xiàn)象。④程序員應避免檢查自己的程序。⑤窮舉測試不可能。⑥妥善保存測試計劃、測試用例、出錯統(tǒng)計和最終分析報告,為維護提供方便。5、下列選項中不屬于結構化程序設計方法的是A、自頂向下B、逐步求精C、模塊化D、可復用標準答案:D知識點解析:結構化程序設汁方法的主要原則可以概括為:自頂向下,逐步求精,模塊化,限制使用GOTO語句。自頂向下是指程序設計時應先考慮總體,后考慮細節(jié);先考慮全局目標,后考慮局部目標。逐步求精是指對復雜問題應設計一些子目標過渡,逐步細化。模塊化是把程序要解決的總目標先分解成分目標,再進一步分解成具體的小目標,把每個小目標稱為一個模塊??蓮陀眯允侵杠浖夭患有薷某缮约有薷谋憧稍诓煌能浖_發(fā)過程中重復使用的性質。軟件可復用性是軟件工程追求的目標之一,是提高軟件生產效率的最主要方法,不屬十結構化程序設計方法。6、若有表達式(w)?(一x):(++y),則其中與w等價的表達式是A、w==1B、w==0C、w!=1D、w!=0標準答案:D知識點解析:本題考查條件表達式。(w)?(--x):(++y)的含義是如果w非0那么表達式的值為一x,否為++y,因此只有選項D和w等價。7、某圖書集團數據庫中有關系模式R(書店編號,書籍編號,庫存數量,部門編號,部門負責人),其中要求(1)每個書店的每種書籍只在該書店的一個部門銷售;(2)每個書店的每個部門只有一個負責人;(3)每個書店的每種書籍只有一個庫存數量。則關系模式R最高是()。A、1NFB、2NFC、3NFD、BCNF標準答案:B知識點解析:由題可知關系模式R有三個函數依賴:(書店編號,書籍編號)→部門編號(書店編號,部門編號)→負責人(書店編號,書籍編號)→庫存數量由此可知,(書店編號,書籍編號)可以唯一標識關系模式R中的每個元組,因此屬于關系模式的主鍵。在此關系模式中,每個屬性都是不可再分的,R屬于1NF,且“書店編號”和“書籍編號”單獨之一都不能決定其他非主屬性,所以R屬于2NF;但(書店編號,書籍編號)可以決定“部門編號”,“部門編號”又可決定“部門負責人”,存在傳遞依賴,所以不屬于3NF,更不是BCNF。8、在面向對象方法中,實現(xiàn)信息隱蔽是依靠A、對象的繼承B、對象的多態(tài)C、對象的封裝D、對象的分類標準答案:C知識點解析:對象的封裝性是指從外部看只能看到對象的外部特征,即只需知道數據的取值范圍和可以對該數據施加的操作,而不需要知道數據的具體結構以及實現(xiàn)操作的算法。對象的內部,即處理能力的實行和內部狀態(tài),對外是不可見的。從外面不能直接使用對象的處理能力,也不能直接修改其內部狀態(tài),對象的內部狀態(tài)只能由其自身改變。9、軟件是指A、程序B、程序和文檔C、算法加數據結構D、程序、數據與相關文檔的完整集合標準答案:D知識點解析:計算機軟件是計算機系統(tǒng)中與硬件相互依存的另一部分,是包括程序、數據與相關文檔的完整集合。軟件由兩部分組成:一是機器可執(zhí)行的程序和數據;二是機器不可執(zhí)行的,與軟件開發(fā)、運行、維護、使用等有關的文檔。10、有以下計算公式若程序前面已經在命令行中包含math.h文件,不能夠正確計算上述公式的程序段是A、y=sqrt(x);iffxB、if(x>=0)y=sqrt(x);elsey=sqrt(-x);C、if(x>=0)y=sqrt(x);if(x<0)y:sqrt(-x);D、y=sqrt(x>=0?x:-x);標準答案:A知識點解析:由題意可知計算公式的含義是:當x大于等于0時,y值等于x的算術平方根;當x小于0時,y值等于x的相反數的算術平方根。所以選項B)用一個完整的ifelse語句表達了計算公式的含義;選項C)用兩個if語句表達了計算公式的含義;選項D)在求平方根函數的后面用x≥0?x:-x條件表達式來表達了計算公式的含義。選項A)沒有用C語言語句正確的表達計算公式的含義。11、設有兩行定義語句:intscanf;floatcase;則以下敘述正確的是()。A、第2行語句不合法B、兩行定義語句都合法C、第1行語句不合法D、兩行定義語句都不合法標準答案:A知識點解析:本題考查用戶標識符,用戶自己定義的標識符不能與關鍵字相同,并且盡量避免和預定義標識符相同。本題中scanf為預定義標識符,可以作為用戶標識符;case為關鍵字,不能作為用戶標識符,故而答案選A。12、有以下程序:#includemain(){FILE*fp;inta[10]={1,2,3},i,n;fp=fopen(“d1.dat”,”W”);for(i=0;i<3;i++)fprintf(fp,“%d”,a[i]);fprintf(fp,“\n”);felose(fp);fp=fopen(“d1.dat”,“r”);fscanf(fp,“%d”,&n);fclose(fp);printf(“%d\n”,n);}程序的運行結果是()。A、321B、12300C、1D、123標準答案:D知識點解析:程序首先將數組a[10]中的元素1、2、3分別寫入了文件d1.dat文件中,然后又將d1.dat文件中的數據123整體寫到變量n的空間中,所以打印n時輸出的數據為123。13、以下正確的字符串常量是A、abc’B、OlympicGamesC、""D、"\\\"標準答案:C知識點解析:字符串常量是由雙引號括起來的一串字符。在C語言中。以一個反斜線開頭后跟一個特定的字符,用來代表一個特定的ASCII字符。利用兩個’\\’表示一個反斜杠,因此選項D)的表示無法確認表示幾個反斜杠。14、關于C語言的符號常量,以下敘述中正確的是A、符號常量的符號名是標識符,但必須大寫B(tài)、符號常量在整個程序中其值都不能再被重新定義C、符號常量是指在程序中通過宏定義用一個符號名來代表一個常量D、符號常量的符號名必須是常量標準答案:C知識點解析:在C語言程序中,用一個符號名來代表一個常量,稱為符號常量。注意:這個符號名必須在程序中進行特別的“指定”,并符合標識符的命名規(guī)則。一般在程序中都是利用宏定義來定義符號常量的,在代碼中可以利用undef來結束符號常量的定義,然后進行重新定義,符號常量的大小寫并沒有特別的規(guī)定,一般時候為了和變量區(qū)分利用大寫。15、與十進制數200等值的十六進制數為A、A8B、A4C、C8D、C4標準答案:C知識點解析:本題考察了進制轉換,十進制的數轉換為十六進制規(guī)則:整數部分除以16取余數,將余數倒過來排列。16、s1和s2已正確定義并分別指向兩個字符串。若要求:當s1所指串大于s2所指串時,執(zhí)行語句S;則以下選項中正確的是A、if(s1>s2)S;B、if(strcmp(s1,s2))S;C、if(strcmp(s2,s1)>0)S;D、if(strcp(s1,s2)>0)S;標準答案:D知識點解析:字符串標記使用strcmp函數,該函數有兩個參數分別是需要比較大小的兩個字符串s1和s2,如果s1大于s2則返回值大于0,如果s1小于s2則返回值小于0,否則s1和s2相同返回0。題目要求s1大于s2時執(zhí)行語句s,因此strcmp(s1,s2)的返回值大于0時執(zhí)行s。17、有以下程序段intk=0,a=1,b=2,c=3;k=ac?c:k;執(zhí)行程序段后,k的值是A、3B、2C、1D、0標準答案:B知識點解析:本題主要考查條件表達式。k=ac?c:k中k>c為假,k的值為2。18、若有以下程序#include<stdio.h>main(){inti,j=0;chara[]="Howareyou!",b[10];for(i=0;a[i];i++)if(a[i]==’’)b[j++]=a[i+1];b[j]=’\0’;printf("%s\n",b);}則程序的輸出結果是A、HowareyouB、Hay!C、Howareyou!D、ay標準答案:D知識點解析:主函數中利用for循環(huán)訪問字符串a的每一個字符,判斷當前字符是否為空格,如果是空格則保存該空格后面的一個字符存放到字符數組b中。在字符串"Howareyou!"中,第一個空格后面字符為’a’,第二個空格后廄字符為’y’。19、有以下程序,程序運行后的輸出結果是main(){intm=1,n=2,*p=&m,*q=&n,*r;r=p;p=q;q=r;printf("%d,%d,%d,%d\n",m,n,*p,*q);}A、1,2,1,2B、1,2,2,1C、2,1,2,1D、2,1,1,2標準答案:B知識點解析:在主函數定義了3個整數指針變量p,q,r,并且使p指向m,q指向n,再執(zhí)行“r=p;p=q;q=r;”這三條語句,使q指向m,p指向n,再輸出變量“m,n,*p,*q”時,它們值分別為1,2,2,1。20、有以下程序,程序的輸出結果是voidfun(double*p1,double*p2,double*s){s=(double*)calloc(1,sizeof(double));*s=*p1+*(p2+1);}main(){doublea[2]={1.1,2.2),b[2]={10.0,20.0),*s=a;fun(a,b,s);printf("%5.2f\n",*s);}A、1.10B、11.10C、12.10D、21.1標準答案:A知識點解析:ANSIC標準規(guī)定calloc函數返回值的類型為void*。具體使用格式為:calloc(n,size)。該函數用來給n個同一類型的數據項分配連續(xù)的存儲空間.每個數據項的長度為size個字節(jié)。若分配成功,函數返回存儲空問的首地址:否則返回空。通過調用calloc函數所分配的存儲單元,系統(tǒng)自動置初值0。主函數中定義數組a,b,以及指針s指向數組a,調用fun函數,實參a和b,以及s的值傳遞給相對應形參p1,p2,以及s,在fun函數中更改s的指向,以及指向的數據,但是函數調用結束以后,形參空間撤銷,這項改變對于實參沒有影響,因此實參s指向值不變,仍然為1.1。21、有以下程序#includemain(){structSTU{charname[9];charsex;doublescore[2];};structSTUa={"Zhao",’m’,85.0,90.0},b={"Qian",’f’,95.0,92.0};b=a;printf("%s,%c,%2.0f,%2.0f\n",,b.sex,b.score[0],b.score[1]);}程序的運行結果是()。A、Zhao,m,85,90B、Qian,m,85,90C、Zhao,f,95,92D、Qian,f,95,92標準答案:A知識點解析:同類型的結構體之間可以直接賦值,所以語句"b=a;"的作用是把結構體a中的數據賦值給結構體b,所以答案選A。22、為了建立如圖所示的存儲結構(即每個結點含兩個域,data是數據域,next是指向結點的指針域),則在【】處應填入的選項是Structlink{chardata;【】}node;A、structlink*next;B、linknext;C、link*next;D、structlinknext;標準答案:A知識點解析:單鏈表為動態(tài)分配的存儲空間,在分配時,每個結點之間可以是不連續(xù)的(結點內是連續(xù)的)。結點之間的聯(lián)系用指針實現(xiàn),即在結點結構中定義一個成員項用來存放下一結點的首地址,這個用于存放地址的成員,常把它稱為指針域,該指針為了保持鏈表中結點的地址,因此其基類型和結點的類型相同,選項為A。23、下列敘述中正確的是A、一個算法的空間復雜度大,則其時間復雜度也必定大B、一個算法的空間復雜度大,則其時間復雜度必定小C、一個算法的時間復雜度大,則其空間復雜度必定小D、算法的時間復雜度與空間復雜度沒有直接關系標準答案:D知識點解析:算法的空間復雜度是指算法在執(zhí)行過程中所需要的內存空間,算法的時間復雜度,是指執(zhí)行算法所需要的計算工作量,兩者之間并沒有直接關系,答案為D。24、以下數組定義中錯誤的是()。A、intx[2][3]={1,2,3,4,5,6};B、intx[][3]={0};C、intx[][3]={{1,2,3},{4,5,6}};D、intx[2][3]={{1,2},{3,4},{5,6}};標準答案:D知識點解析:D)選項中x[2][3]定義的是一個兩行三列的二維數組,而在給數組元素賦值時卻賦成了三行,所以錯誤。25、對長度為n的線性表作快速排序,在最壞情況下,比較次數為A、nB、n-1C、n(n-1)D、n(n-1)/2標準答案:D知識點解析:快速排序最壞情況就是每次選的基準數都和其他數做過比較,共需比較(n-1)+(n-2)+…+1=n(n-1)/2,選D。國家二級C語言機試(選擇題)模擬試卷第3套一、選擇題(本題共25題,每題1.0分,共25分。)1、下列敘述中正確的是()。A、非線性結構可以為空B、只有一個根結點和一個葉子結點的必定是線性結構C、只有一個根結點的必定是線性結構或二叉樹D、沒有根結點的一定是非線性結構標準答案:A知識點解析:如果一個非空的數據結構滿足下列兩個條件:①有且只有一個根結點:②每一個結點最多有一個前件,也最多有一個后件則稱該數據結構為線性結構。如果一個數據結構不是線件結構。則稱之為非線性結構。線性結構和非線性結構都可以是空的數據結構。樹只有一個根結點,但不論有幾個葉子結點,樹都是非線性結構。2、有以下程序:#include<stdio.h>main(){inti=0,a=0;while(i<20){for(;;){if((i%5)==0)break;elsei--;}i+=13,a+=i;}printf(’’%d\n’’,a);}程序的輸出結果是()。A、62B、63C、23D、36標準答案:D知識點解析:本題考查while循環(huán)。當i<20時,進入while循環(huán)體,循環(huán)體內的for循環(huán)實現(xiàn)的功能是,當i值是0或5的倍數時,執(zhí)行“i+=13;a+-i;”這兩條語句;若i值不是5的倍數則一直執(zhí)行for循環(huán)。①當i=0時,執(zhí)行“i+=13;a+=i;i=13,a=13”;②判斷“i=13<20”,進入while循環(huán)體,i=10時,跳出for循環(huán),執(zhí)行“i+=13;a+i;i=23,a=36”;③判斷“i=23>20”,循環(huán)結束。3、有如下程序:#include<stdio.h>wildmain(){intx=Ox13:if(x=Ox18)printf(″T″);printf(″F\n″);}程序運行后的結果是()。A、TFB、TC、FD、TFT標準答案:A知識點解析:x=0x18為賦值表達式,十六進制數0x18非0,if條件成立輸出T,之后再輸出F與回車符。程序運行后的輸出結果是TF。4、軟件生命周期中的活動不包括A、市場調研B、需求分析C、軟件測試D、軟件維護標準答案:A知識點解析:軟件的生命周期描述了軟件從產生到最終消亡的全過程,生命周期中的活動包括需求分析、軟件設計(分為概要設計和詳細設計)、軟件實現(xiàn)、軟件測試和軟件維護,不包括市場調研。5、在結構化程序設計中,模塊劃分的原則是A、各模塊應包括盡量多的功能B、各模塊的規(guī)模應盡量大C、各模塊之間的聯(lián)系應盡量緊密D、模塊內具有高內聚度、模塊間具有低耦合度標準答案:D知識點解析:內聚性是對一個模塊內部各個元素間彼此結合的緊密程度的度量。耦合性是對模塊間互相連接的緊密程度的度量。在結構化程序設計中,模塊劃分應遵循高內聚、低耦合的原則,即減弱模塊之間的耦合性和提高模塊內聚性,有利于提高軟件模塊的獨立性。6、在E-R圖中,用來表示實體的圖形是A、矩形B、橢圓形C、菱形D、三角形標準答案:A知識點解析:在E-R圖中,用矩形表示實體集,在矩形內寫上該實體集的名字;用橢圓形表示屬性;用菱形(內部寫上聯(lián)系名)表示聯(lián)系。7、設intk=0:以下選項的四個表達式中與其他三個表達式的值不相同的是()。A、k++B、k+1C、++kD、k+=1標準答案:A知識點解析:選項B、C、D都是對k的值加1,選項A的語句k++表示先利用k的值進行運算,然后k值才加1。8、在數據庫設計中,將E—R圖轉換成關系數據模型的過程屬于A、需求分析階段B、概念設計階段C、邏輯設計階段D、物理設計階段標準答案:C知識點解析:數據庫的設計階段包括需要分析、概念設計、邏輯設計和物理設計,其中將E—R圖轉換成關系數據模型的過程屬于邏輯設計階段。9、以下敘述中正確的是A、C語言規(guī)定必須用main作為主函數名,程序將從此開始執(zhí)行B、可以在程序中由用戶指定任意一個函數作為主函數,程序將從此開始執(zhí)行C、C語言程序將從源程序中第一個函數開始執(zhí)行D、main的各種大小寫拼寫形式都可以作為主函數名,如:MAIN,Main等標準答案:A知識點解析:C語言中的主函數唯一為main()函數不能任意指定,所以B選項錯誤。C語言從主函數main()開始,到主函數main()結束,所以C選項錯誤。主函數必須寫成小寫的main,不能混淆大小寫,所以D選項錯誤。10、有以下函數:intfun(char*x,char*y){intn=0;while((*x==*y)&&*x!=’\0’){x++;y++;n++:}returnn:}函數的功能是()。A、將y所指字符串賦給x所指存儲空間B、查找x和y所指字符串中是否有’\0’C、統(tǒng)計x和y所指字符串中最前面連續(xù)相同的字符個數D、統(tǒng)計x和y所指字符串中相同的字符個數標準答案:C知識點解析:本題中由循環(huán)條件可知,遇到’\0’或x與y所指的字符的值不等中的一個條件時就結束,所以功能是統(tǒng)計x和y所指字符串中最前面連續(xù)相同的字符個數。11、以下程序的輸出結果是()。#include#defineSUB(A)(A)-(A)main(){inta=2,b=3,c=5,d;d=SUB(a+b)*c;printf(’’%d\n’’,d);}A、0B、10C、一12D、一20標準答案:D知識點解析:本題主要考查的是宏替換,在程序中執(zhí)行d=SUB(a+b)*c這條語句時,首先要進行宏替換,依據宏SUB(A)的定義可知,上面這條語句替換為d=(a+b)一(a+b)*c,因為乘法的優(yōu)先級比減法的優(yōu)先級高,所以先進行乘法運算,即d=5—5*5=一20,可以看出,出現(xiàn)了運算錯誤。12、以下程序的輸出結果是()。voidf(int*q)main(){inti=0;{inta[5]={1,2,3,4,5},i;for(;i<5;i++)(*q)++;}f(a);for(i=0;i<5;i++)printf(’’%d,’’,a[i]);}A、2,2,3,4,5,B、6,2,3,4,5,C、1,2,3,4,5,D、2,3,4,5,6,標準答案:B知識點解析:題目中voidf(int*q)函數的功能是對(*q)的值連續(xù)5次自加1。在main函數中f(a)語句把一維數組a[5]的首地址作為實參,傳遞給函數f(int*q)的形參q,然后在函數f(int*q)內,a[0]連續(xù)5次自加1后,a[0]的值就變成6。所以輸出為6,2,3,4,5,選項B正確。13、有以下程序#include#deftneN4voidfun(inta[][N],intb[]){inti;for(i=0;iA、1,2,3,4,B、1,4,5,9,C、1,0,7,0,D、3,4,8,10,標準答案:C知識點解析:函數fun(inta[][N],intb[])的功能是把矩陣a[N][N]主對角線上的元素賦給一維數組b[]。在主函數中由x[][N]的初始化可知,其主對角線上的元素是1,0,7,0。所以當執(zhí)行完函數funq[x,y)后,一維數組元素y[]中的元素值為1,0,7,0。14、有以下程序#includemain(){inta=1,b=2,c=3,d=0;if(a==1&&b++==2)if(b!=2||c--!=3)printf("%d,%d,%d\n",a,b,c);elseprintf("%d,%d,%d\n",a,b,c);elseprintf("%d,%d,%d\n",a,b,c);}程序運行后的輸出結果是()。A、1,3,3B、1,3,2C、1,2,3D、3,2,1標準答案:A知識點解析:else總是與前面距離它最近的且未曾配對的if語句配對。"a=1,b=2,c=3,d=0",所以語句"if(a==1&&b++==2)"的判定條件為真,之后b自加1,其值為3。而語句"if(b!=2||c--!=3)"的判定條件也為真,根據邏輯運算符的"短路求值"原理,表達式"b!=2"為真后整個邏輯表達式的值就為真,"c--!=3"不再計算,所以答案選A。15、有下列程序:structS{intn;inta[20];};voidf(int*a,intn){inti;for(i=0;iA、3,4,2,7,9,8,6,5,11,10,B、2,3,1,6,8,7,5,4,10,9,C、2,4,3,9,12,12,11,11,18,9,D、1,2,3,6,8,7,5,4,10,9,標準答案:C知識點解析:voidf(int*a,intn)函數的功能是對數組a[]的每一個元素加上其下標的值。所以在main()函數中f(s.a,s.n)語句會調用f(int*a,intn)函數,此時指針a指向數組s.a={2,3,1,6,8,7,5,4,10,9}.n=10;然后執(zhí)行for(i=0;i16、有以下程序,程序運行后的輸出結果是main(){intm=1,n=2,*p=&m,*q=&n,*r;r=p;p=q;q=r;printf("%d,%d,%d,%d\n",m,n,*p,*q);}A、1,2,1,2B、1,2,2,1C、2,1,2,1D、2,1,1,2標準答案:B知識點解析:在主函數定義了3個整數指針變量p,q,r,并且使p指向m,q指向n,再執(zhí)行“r=p;p=q;q=r;”這三條語句,使q指向m,p指向n,再輸出變量“m,n,*p,*q”時,它們值分別為1,2,2,1。17、有以下程序main(){inti=5;do{if(i%3=1)if(i%5==2){printf("**%d",i);break;}i++;}while(i!=0);printf("\n");}程序的運行結果是A、*3*5B、*5C、*7D、*2*6標準答案:C知識點解析:由于循環(huán)變量i的初值等于5,所以第一、二次進入do....while循環(huán)語句時,條件語句if(i%3==1),if(i%5==2){printf(“*%d”,i);break;}不執(zhí)行,只執(zhí)行i++語句。當i=7時,滿足條件語句if(i%3==1),if(i%5==2){printf("*%d",i);break;},所以輸出*7,結束循環(huán)。18、有下列程序:main(){inti,s=0,t[]={1,2,3,4,5,6,7,8,9};for(i=0;i<9;i+=2)s+=*(t+i);printf("%d\n",s);}程序執(zhí)行后的輸出結果是A、20B、45C、36D、25標準答案:D知識點解析:本題在主函數中定義了一維整型數組t[]={1,2,3,4,5,6,7,8,9};然后在for循環(huán)語句中自變量i從0開始,每次自加2,執(zhí)行s+=*(t-i)語句,因為C語言規(guī)定數組名代表數組的首地址,也就是第一個元素的地址。因此*(t+i)代表數組的第i+1個元素。所以程序運行的結果是1-3+5+7-9=25,即變量s的值等于25。19、有以下程序,程序運行后的輸出結果是#definePT3.5;#defineS(x)PT*x*x;main(){inta=1,b=2;printf("%4.1f\n",S(a+b));}A、31.5B、7.5C、程序有錯無輸出結果D、14標準答案:C知識點解析:本題考查宏定義。預處理語句后面不能加分號,因此程序有錯。如果沒加分號的話S(a+b)=PT*a+b*a+b=3.5*1+2*1+2=7.5。20、下面選項中的程序段,沒有編譯錯誤的是()。A、char*sp,s[10];sp="Hello";B、char*sp,s[10];s="Hello";C、charstr1[10]="computer",str2[10];str2=str1;D、charmark[];mark="PROGRAM";標準答案:A知識點解析:字符數組名為一個指針常量,在非定義狀態(tài)下,不能進行任何賦值性操作,所以不能通過賦值操作將一個字符串的地址指給它,也不能一個字符數組的地址指給另一個字符數組名,選項B)、C)、D)錯誤;但是可以通過賦值的方式把一個字符串地址指給一個字符指針,選項A)正確;答案選A)。21、有以下程序#includestructSTU{charname[9];charsex;intscore[2];};voidf(structSTUa[]){structSTUb={"Zhao",’m’,85,90};a[1]=b;}main(){structSTUc[2]={{"Qian",’f’,95,92},{"Sun",’m’,98,99}};f(c);printf("%s,%c,%d,%d,",c[0].name,c[0].sex,c[0].score[0],c[0].score[1]);printf("%s,%c,%d,%d\n",c[1].name,c[1].sex,c[1].score[0],c[1].score[1]);}程序運行后輸出結果是A、Qian,f,95,92,Sun,m,98,99B、Qian,f,95,92,Zhao,m,85,90C、Zhao,m,85,90,Sun,m,98,99D、Zhao,m,85,90,Qian,f,95,92標準答案:B知識點解析:本題考查把數組名作為函數參數,執(zhí)行f函數后,結構體數組c的第二個元素被改寫,c[1].name為Zhao,選項B正確。22、若有以下程序#include<stdio.h>int*f(int*s,int*t){int*k;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、5,3,5,3,5C、5,3,3,5,5D、3,5,3,5,5標準答案:D知識點解析:本題考查了返回值為指針的函數,函數f的主要功能為第一個參數小于第二個參數,那么交換指針的指向,這對于實參指向的數據時沒有影響的。最后返回比較大的元素的地址。主函數中p指向i,q指向j,調用r=f(p,q),返回q的地址,因此*p=3,*q=5,*r=5。23、構成計算機軟件的是A、源代碼B、程序和數據C、程序和文檔D、程序、數據及相關文檔標準答案:D知識點解析:軟件指的是計算機系統(tǒng)中與硬件相互依賴的另一部分,包括程序、數據和有關的文檔,選D。24、若有以下程序#includemain(){charc1,c2;c1=’C’+’8’-’3’;c2=’9’-’0’;printf("%c%d\n",c1,c2);}則程序的輸出結果是A、H’9’B、H9C、F’9’D、表達式不合法輸出無定值標準答案:B知識點解析:本題考察字符變量以及printf()函數相關知識,字符變量c1被賦值為’C’+’8’-’3’,即ASSCII碼的運算,67+54-49=72,即H;字符變量c2被賦值為’9’-’0’,但輸出時,需要注意的是c1以字符變量輸出,而c2是以十進制整型變量輸出。因此B選項正確。25、軟件設計中模塊劃分應遵循的準則是()。A、低內聚低耦合B、高內聚低耦合C、低內聚高耦合D、高內聚高耦合標準答案:B知識點解析:軟件設計中模塊劃分應遵循的準則是高內聚低偶合、模塊大小規(guī)模適當、模塊的依賴關系適當等。模塊的劃分應遵循一定的要求,以保證模塊劃分合理,并進一步保證以此為依據開發(fā)出的軟件系統(tǒng)可靠性強,易于理解和維護。模塊之間的耦合應盡可能的低,模塊的內聚度應盡可能的高。國家二級C語言機試(選擇題)模擬試卷第4套一、選擇題(本題共25題,每題1.0分,共25分。)1、下列敘述中正確的是()。A、有一個以上根結點的數據結構不一定是非線性結構B、只有一個根結點的數據結構不一定是線性結構C、循環(huán)鏈表是非線性結構D、雙向鏈表是非線性結構標準答案:B知識點解析:線性結構應滿足:有且只有一個根結點與每個結點最多有一個前件,也最多有一個后件,所以B)正確。所以有一個以上根結點的數據結構一定是非線性結構,所以A)錯誤。循環(huán)鏈表和雙向鏈表都是線性結構的數據結構,所以C)和D)錯誤。2、下列選項中不符合良好程序設計風格的是A、源程序要文檔化B、數據說明的次序要規(guī)范化C、避免濫用goto語句D、模塊設計要保證高耦合、高內聚標準答案:D知識點解析:一般來講,程序設計風格是指編寫程序時所表現(xiàn)出的特點、習慣和邏輯思路。程序設計風格總體而言應該強調簡單和清晰,程序必須是可以理解的??梢哉J為,著名的“清晰第一、效率第二”的論點己成為當今主導的程序設計風格。良好的程序設計風格主要應注重和考慮下列幾個因素:①源程序文檔化,包括下列三個方面:a.符號的命名應具有一定的含義:b.正確的注釋能夠幫助讀者理解程序;c.視覺組織,可以在程序中利用空格、空行、縮進等技巧使程序層次清晰。②數據說明的方法,包括下列三個方面:a.數據說明的次序規(guī)范化;b.說明語句中變量安排有序化;c.使用注釋來說明復雜數據的結構。③語句的結構應該簡單直接,不應該為提高效率而把語句復雜化。④輸入和輸出方式和風格應盡可能方便用戶的使用。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、源代碼B、程序和數據C、程序和文檔D、程序、數據及相關文檔標準答案:D知識點解析:軟件由兩部分組成:一是機器可執(zhí)行的程序和數據;二是機器不可執(zhí)行的,與軟件開發(fā)、運行、維護、使用等有關的文檔。5、在結構化程序設計中,模塊劃分的原則是A、各模塊應包括盡量多的功能B、各模塊的規(guī)模應盡量大C、各模塊之間的聯(lián)系應盡量緊密D、模塊內具有高內聚度、模塊間具有低耦合度標準答案:D知識點解析:內聚性是對一個模塊內部名個元素間彼此結合的緊密程度的度量。耦合性是對模塊間瓦相連接的緊密程度的度量。在結構化程序設計中,模塊劃分應遵循高內聚、低耦合的原則,即減弱模塊之間的耦合性和提高模塊內聚性,有利于提高軟件模塊的獨立性。6、已知字符A的ASCII碼值是65,字符變量c1的值是’A’,c2的值是’D’,則執(zhí)行語句printf(’’%d,%d’’,c1,c2-2);的輸出結果是()。A、65,68B、A,68C、A,BD、65,66標準答案:D知識點解析:打印時以%d整型格式打印輸出,所以字符變量c1的值打印出來就是65,從c2-2的值打印出來就是68-2,即66,所以選擇D選項。7、有以下程序#includemain(){inti,i,m=1;for(i=l;i<3;i++){for(j=3;j>0;j--){if(i*j>3)break;m*=i*j;}}printf("m=%d\n",m);}程序運行后的輸出結果是A、m=2B、m=4C、m=5D、m=6標準答案:D知識點解析:這道題考查了for循環(huán)的嵌套應用。對于外層for循環(huán)來說,變量i從1增到2,循環(huán)執(zhí)行2次。當變量i的值等于1時,對于內層for循環(huán)來說,變量j從3減到1,求得變量m的值等于6。當變量i的值等于2時,第一遍執(zhí)行內層for循環(huán),變量j的值等于3,那么i*j的值等于6,其值大于3,這時執(zhí)行break語句,退出內層for循環(huán)的執(zhí)行。所以程序輸出變量m的值為6。8、以下對C語言中聯(lián)合類型數據的正確敘述是()。A、定義了聯(lián)合變量后,即可引用該變量或該變量中的任意成員B、一個聯(lián)合變量中可以同時存放其所有成員C、聯(lián)合中的各個成員使用共同的存儲區(qū)域D、在向聯(lián)合中的一個成員進行賦值時,聯(lián)合中其他成員的值不會改變標準答案:C知識點解析:聯(lián)合體的幾個特點:①聯(lián)合體所占用的內存空間為最長的成員所占用的空間;②各個成員分量全部是從低地址方向開始使用內存單元;③聯(lián)合體中的空間在某一時刻只能保存某一個成員的數據;④聯(lián)合體和結構體可以任意嵌套。9、有以下程序:#includevoidmain(){chara[5][10]={“one”,“two”,“three”,“four”,“five”};inti,j;chart;for(i:0;i<5;i++)for(j=i+1;j<4;j++)if(a[i][0]>a[j][0]){t:a[i][0];a[i][0]=a[j][0];a[j][0]=t;puts(a[1]);}}程序運行后的輸出結果是()。A、twoowoB、fixowoC、twofovD、owooff標準答案:A知識點解析:for循環(huán)完成的功能是把二維數組a的第一列的字母按從小到大排序,其他列的字母不變。10、以下選項中,值為1的表達式是A、1-’0’B、’1’-0C、1.’\0’D、’\0’-0標準答案:C知識點解析:在C程序中,字符量可參與任何整數運算。字符參與運算時,首先要將字符轉換為其對應的ASCII碼值再參與整數運算。字符’1’對應的ASClI碼值是49,字符’0’對應的ASCII碼值是48,字符’\0’是字符串結束標識符NULL,其對應的ASCII碼值是0。11、有以下程序,程序的輸出結果是main(){charc1=’A’,c2=’Y’;printf("%d,%d\n",c1,c2);}A、輸出格式不合法,輸出出錯信息B、65,90C、65,89D、A,Y標準答案:C知識點解析:C語言允許對整型變量賦以字符值,也允許對字符變量賦以整型值。在輸出時,允許把字符變量按整型量輸出,也允許把整型量按字符量輸出。12、以下程序的輸出結果是()。#include#defineN5#defineMN+1#definef(x)(x*M)main(){inti1,i2;il=f(2);i2=f(1+1);printf(’’%d%d\n’’,il,i2);}A、1212B、127C、1211D、117標準答案:D知識點解析:本題考查了宏的嵌套定義定義了3個宏定義語句,分別是:#defineN5、#defineMN+1和#definef(x)(x*M),所以根據C語言的宏交替規(guī)則,我們可知,f(2)=2*N+1∧2*5+1=11,f(1+1)=1+1*N+1=1+1*5+1=7。13、有以下程序段charname[20];intnum;scanf("name=%snum=%d",name,&num);當執(zhí)行上述程序段,并從鍵盤輸入:name=Lilinum=1001<回車>后,name的值為()。A、LiliB、name=LiliC、Lilinum=D、name=Lilinum=1001標準答案:A知識點解析:考查scanf的格式輸入。如果scanf的""內有普通字符,則程序調試的時候必須原樣輸入,所以字符數組name接受到的字符為Lili,答案選A。14、以下不能輸出字符A的語句是(注:字符A的ASCII碼值為65,字符a的ASCII碼值為97)A、printf("%c\n",’a’-32);B、printf("%d\n",’A’):C、printf("%c\n",65);D、printf("%c\n",’B’-1):標準答案:B知識點解析:在選項B的輸出函數中,大寫字符lA-以整型數據的形式輸出。15、有以下程序#include#includevoidfun(chars[][10],intn){chart;inti,j;for(i=0;is[j][0]){t=s[i][0];s[i][0]=s[j][0];s[j][0]=t;}}main(){charss[5][10]={"bcc","bbcc","xy","aaaacc","aabcc");fun(ss,5);printf("%s,%s\n",ss[0],ss[4]};}程序的運行結果是A、aaaacc,xyB、bcc,aabccC、xy,aaaaccD、aabcc,bcc標準答案:C知識點解析:函數fun(chars[][10],intn)通過兩重for循環(huán)語句,比較二維字符數組s[][10]的每個字符串的首字符大小,如果前一個字符串首字符大于后一個字符串的首字符,則交換這兩個字符串的首字符。在豐函數中,語句fun(ss,5)的作用是對二維字符數組ss[5][10]的5個字符串的首字符進行從小到大的排序,不影響各個字符串另外的字符。所以排序結束后,5個字符串的第一個字符依次變?yōu)閍、a、b、b和x;最后輸出第1個和第4個字符串。16、以下結構體類型說明和變量定義中正確的是A、typedefstruct{intn;charc;}REC;RECtl,t2;B、structREC;{intn;charc;);RECt1,t2;C、typedefstructREC;{intn=0;charc=’A’;}tl,t2;D、struct{intn;charc;}REC;RECtl,t2;標準答案:A知識點解析:定義結構體類型的一般形式為:struct結構體名{成員列表};struct結構體名后不能加“:”號,所以選項B、C錯誤,選項D中定義無名稱的結構體類型同時定義結構體變量形式應為structt1,t2:選項A為用戶自定義類型,其為正確的定義形式。17、以下程序的主函數中調用了其前面定義的fun函數#include<stdio.h>main(){doublea[15],k;k=fun(a);}則以下選項中錯誤的fun函數首部是A、doublefun(doublea[15])B、doublefun(double*a)C、doublefun(doublea[])D、doublefun(doublea)標準答案:D知識點解析:本題考查函數的定義和調用。根據對fun函數的調用可知,fun函數的返回值為double類型的,輸入參數是一個double類型的地址(指針),因此選項D)錯誤。18、有以下程序#includemain(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;}printf("a=%d,b=%d\n",a,b);}程序運行后的輸出結果是A、a=1,b=1B、a=1,b=0C、a=2,b=1D、a=2,b=2標準答案:C知識點解析:本題考查的是用switch語句實現(xiàn)多分支選擇結構,首先進入第一個switch(x)判斷,進入case1中進行嵌套判斷,如果switch(y)也成立,a自加1,遇到break,退出嵌套,接著執(zhí)行case2,a自加為2,b自加為1,遇到break,結束循環(huán),此時a=2,b=1。19、有以下程序voidfunl(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í)行后的輸出結果是A、PrphsbnB、ProhsbnC、ProgsbnD、Program標準答案:B知識點解析:在函數voidfunl(char*p)中,語句(*q)++的功能是q所指的字符加1,變成其后面的字符;q++就是指針q指向下一個字符的位置。所以在主函數中,語句p=&a[3]的作用是使指針p指向字符數組a[]中的第四個字符的位置,即p指向字符’g’;然后調用函數fun1(p)后,字符’g’變成’h’,字符’r’變成’s’,字符’a’變成’b’,字符’m’變成’n’,因而字符數組a[]中的內容就成“Prohsbn”。20、若有以下程序#includeintf(intm){staticintn=0;inta=2;n++;a++;returnn+m+a;}main(){intk;for(k=0;k<4;k++)printf("%d,",f(k));}則程序的輸出結果是()。A、4,6,8,10,B、4,7,10,13,C、4,5,6,7,D、3,5,7,9,標準答案:A知識點解析:靜態(tài)變量定義時的初始化只運行一次,并且其值在程序運行過程中一直存在,而局部變量則是用時分配,用完釋放。main()函數中調用四次f()函數,f(0)=1+0+3=4,n=1,a=3;f(1)=2+1+3=6,n=2,a=3;f(2)=3+2+3=8,n=3,a=3;f(3)=4+3+3=10,n=4,a=3。所以答案選A。21、有如下程序#includevoidget_put(){charch;ch=getchar();if(ch!=’\n’)get_put();putchar(ch);}main(){get_put();printf("\n");}程序運行時,輸入1234<回車>,則輸出結果是()。A、4321B、1234C、4444D、1111標準答案:A知識點解析:函數get_put()的作用是利用遞歸調用,優(yōu)先輸出最后一個輸入的字符,即逆序輸出輸入的字符串,答案選A。22、有以下程序:#includeintb=2;intfun(int*k){b=*k+b;return(b);}main(){inta[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");}程序運行后的輸出結果是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。23、若有以下程序#includemain(){intc;c=10^5;printf("%d\n",c);}則程序的輸出結果是()。A、15B、10000C、5D、105標準答案:A知識點解析:異或運算符的運算規(guī)則是參與運算的兩個數相對應的二進制位相異或運算,當兩個對應的二進制位相異時,結果為1。10的二進制數為1010,5的二進制數為0101,1010^0101=1111,對應十進制數值為15,答案選A。24、關于地址和指針,以下敘述正確的是()。A、可以通過強制類型轉換讓char型指針指向double型變量B、函數指針p指向一個同類型的函數f時,必須寫成:p=&f;C、指針p指向一個數組f時,必須寫成:p=&f;D、一個指針變量p可以指向自身標準答案:A知識點解析:函數名代表函數的入口地址,函數指針p指向一個同類型的函數f時,可以寫成“p=f;”,而不能寫成“p=&F;”,所以選項B錯誤。指針p指向一個數組f時,可以寫成“p=f;”,數組名f代表數組的首地址,所以選項C錯誤。指針變量指向的是變量的地址,所以選項D錯誤。char型根據轉化原則可以轉化為double型。故本題答案為A選項。25、若要使int型變量a,b,c,d的值都為0,以下寫法中錯誤的是()。A、autointa,b,c,d;a=b=c=d=0;B、autointa=b=c=d=0;C、autointa=0,b=a,c=b,d=c;D、staticinta,b,c,d;標準答案:B知識點解析:選項B中,使用autoint定義了整型a,但b、c、d都是未定義的變量,所以不能作右值使用,錯誤;選項A、C都是正確的定義和初始化;選項D中,static變量定義了a、b、c、d,由于未初始化,在程序運行時,首先將這四個變量賦值為0,正確;本題答案為B。國家二級C語言機試(選擇題)模擬試卷第5套一、選擇題(本題共25題,每題1.0分,共25分。)1、下列敘述中正確的是A、線性表鏈式存儲結構的存儲空間一般要少于順序存儲結構B、線性表鏈式存儲結構與順序存儲結構的存儲空間都是連續(xù)的C、線性表鏈式存儲結構的存儲空間可以是連續(xù)的,也可以是不連續(xù)的D、以上都不正確標準答案:C知識點解析:線性表的存儲分為順序存儲和鏈式存儲。在順序存儲中,所有元素所占的存儲空間是連續(xù)的。而在鏈式存儲的方式中,將存儲空間的每一個存儲結點分為兩部分,一部分用于存儲數據元素的值,稱為數據域;另一部分用于存儲下一個元素的存儲序號,稱為指針域。所以線性表的鏈式存儲方式比順序存儲方式的存儲空間要大一些。2、有以下程序#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。3、軟件生命周期中,確定軟件系統(tǒng)要做什么的階段是()。A、需求分析B、軟件測試C、軟件設計D、系統(tǒng)維護標準答案:A知識點解析:在軟件生命周期中,確定軟件系統(tǒng)要做什么的階段是需求分析階段,答案選A。4、下列關于棧的敘述中,正確的是()。A、棧底元素一定是最后入棧的元素B、棧操作遵循“先進后出”的原則C、棧頂元素一定是最先入棧的元素D、以上三種說法都不對標準答案:B知識點解析:棧是“先進后出”,因此,棧底元素是先入棧的元素,棧頂元素是后入棧的元素。5、數據庫設計的根本目標是要解決A、數據共享問題B、數據安全問題C、大量數據存儲問題D、簡化數據維護標準答案:A知識點解析:數據庫應用系統(tǒng)中的一個核心問題就是設計一個能滿足用戶要求、性能良好的數據庫,這就是數據庫設計。數據庫設計是在一

溫馨提示

  • 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

提交評論