版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、二級 C語言真題 2017 年 09 月-(1)( 總分: 100.00 ,做題時間: 90 分鐘 )一、選擇題 ( 總題數(shù): 40,分數(shù): 40.00)1. 設(shè)有一個棧與一個隊列的初始狀態(tài)均為空?,F(xiàn)有一個序列的元素為A,B,C,D,E,F(xiàn),G,H,先分別將序列中的前 4個元素依次入棧,后4 個元素依次入隊;然后分別將棧中的元素依次退棧,再將隊列中的元素依次退隊。最后得到的序列為 _。(分數(shù): 1.00 )A.A ,B,C,D,H,G,F(xiàn),EB.D ,C,B,A,H,G,F(xiàn),EC.A ,B,C,D,E,F(xiàn),G,HD.D ,C,B,A,E,F(xiàn),G,H 解析:解析元素入隊列為棧的特點是先進后出,而
2、隊列的特點是先進先出。前4 個元素依次進棧為EFGH,出隊列也是 EFGH,最后得到的序列為DCBAEFGH。故 D 選項正確。ABCD,出棧后為DCBA,后 4 個2. 設(shè)某棵樹的度為 3,其中度為 2,1,0 的節(jié)點個數(shù)分別為 3,4,15,則該樹中總節(jié)點數(shù)為 _。(分數(shù): 1.00 )A.30B.22C.35D. 不可能有這樣的樹解析: 解析 在樹結(jié)構(gòu)中,一個節(jié)點所擁有的后件個數(shù)稱為該節(jié)點的度,所有節(jié)點中最大的度稱為樹的度,樹中的節(jié)點數(shù)即為樹中所有節(jié)點的度數(shù)之和再加1。假設(shè)度為 3 的節(jié)點數(shù)為 n,總節(jié)點數(shù)為 m,m=3×n+2×3+1×4+1,葉子節(jié)點數(shù)1
3、5=m-(3+4+n) 。得 m=3n+11,2n=11,n 無法得到整數(shù),說明不可能存在這樣的樹。故答案為D 選項。3. 設(shè)二叉樹的前序序列為 ABDEGHCFIJ,中序序列為 DBGEHACIFJ。則按層次輸出 ( 從上到下,同一層從左到右 ) 的序列為_。(分數(shù): 1.00 )A.ABCDEFGHIJB.DCHEBIJFCAC.JIHGFEDCBAD.GHIJDEFBCA解析: 解析 二叉樹遍歷可以分為 3 種:前序遍歷 ( 訪問根節(jié)點在訪問左子樹和訪問右子樹之前 ) 、中序遍歷 ( 訪問根節(jié)點在訪問左子樹和訪問右子樹兩者之間 ) 、后序遍歷 ( 訪問根節(jié)點在訪問左子樹和訪問右子樹之后
4、) 。二叉樹的前序遍歷序列為 ABDEGHCFIJ,中序序列為 DBGEHACIFJ,可知該樹 A 為根節(jié)點,右子樹節(jié)點為 CFIJ,左子樹節(jié)點為 BDEGH。從頂向下從左向右依次為 ABCDEFGHIJ,A選項正確。4. 設(shè)順序表的長度為 16,對該表進行簡單插入排序。在最壞情況下需要的比較次數(shù)為 _。(分數(shù): 1.00 )A.15B.60C.30D.120解析: 解析 簡單插入排序在最壞情況下, 即初始排序序列是逆序的情況下, 比較次數(shù)為 n(n-1)/2 ,移動次數(shù)為 n(n-1)/2。本題中即 16×(16-1) ÷2=8×15=120。故答案為 D選項。
5、5. 軟件系統(tǒng)總體結(jié)構(gòu)圖的作用是 _。(分數(shù): 1.00 )A. 描述軟件系統(tǒng)結(jié)構(gòu)的圖形工具 B. 描述軟件系統(tǒng)的控制流描述軟件系統(tǒng)的數(shù)據(jù)流 C.D. 描述軟件系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)解析: 解析 軟件系統(tǒng)總體結(jié)構(gòu)圖是描述軟件系統(tǒng)結(jié)構(gòu)的圖形工具,它包括軟件系統(tǒng)的控制流、軟件系統(tǒng)的數(shù)據(jù)流、軟件系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)等。故答案為A選項。6. 不屬于對象構(gòu)成成份的是 _。(分數(shù): 1.00 )A. 屬性B. 規(guī)則 C. 方法( 或操作 )D. 標識解析: 解析 一個對象通??捎蓪ο竺?、屬性和操作7. 十進制整數(shù)設(shè)為整數(shù)類,則下面屬于類的實例的是3 部分組成,對象名唯一標識一個對象。故答案為_。B 選項。(分數(shù): 1.
6、00 )A.-518C.518E-2D.518解析: 解析 類是具有共同屬性、共同方法的對象的集合。-518 是整數(shù), 0.518 是浮點數(shù), 518E-2 是指數(shù)。故答案為A 選項。8. 結(jié)構(gòu)化程序設(shè)計原則強調(diào)的是 _。(分數(shù): 1.00 )A. 自頂向下 B. 可封裝性C. 可復(fù)用性D. 可恢復(fù)性解析: 解析 結(jié)構(gòu)化程序設(shè)計的原則強調(diào)自頂向下、逐步求精、模塊化、限制使用goto 語句。故答案為A選項。9. 違背數(shù)據(jù)流圖 (DFD)構(gòu)造規(guī)則的是 _。(分數(shù): 1.00 )A. “加工”應(yīng)既有輸入又有輸出B. “數(shù)據(jù)存儲”間有數(shù)據(jù)流 C. “數(shù)據(jù)流”應(yīng)標識數(shù)據(jù)流名D. 父圖子圖是指相鄰上下兩層
7、的數(shù)據(jù)流圖解析: 解析 數(shù)據(jù)流圖 (DFD)應(yīng)遵循以下構(gòu)造規(guī)則。對加工處理建立唯一、層次性的編號,且每個加工處理通常要求既有輸入又有輸出。數(shù)據(jù)存儲之間不應(yīng)有數(shù)據(jù)流?!皵?shù)據(jù)流”應(yīng)標識數(shù)據(jù)流名,數(shù)據(jù)流圖的一致性,即輸入輸出、讀寫的對應(yīng)。父圖、子圖關(guān)系與平衡規(guī)則。相鄰兩層DFD之間具有父子關(guān)系,子圖代表父圖中某個加工的詳細描述,父圖代表子圖間的接口。子圖個數(shù)不大于父圖中的處理個數(shù)。所有子圖的輸入輸出數(shù)據(jù)流和父圖中相應(yīng)處理的輸入輸出數(shù)據(jù)流必須一致。故本題答案為B選項。10. 關(guān)系數(shù)據(jù)庫規(guī)范化主要為克服數(shù)據(jù)庫邏輯結(jié)構(gòu)中的插入異常、刪除異常以及_。(分數(shù): 1.00 )A. 數(shù)據(jù)丟失的問題B. 結(jié)構(gòu)不合理
8、的問題C. 數(shù)據(jù)不一致的問題D. 冗余度大的問題 解析: 解析 規(guī)范化主要為克服數(shù)據(jù)庫邏輯結(jié)構(gòu)中的插入異常、刪除異常、數(shù)據(jù)冗余以及修改異常。故本選項。 D題答案為_ 。11. 以下敘述中正確的是 1.00 )(分數(shù): A.C 語言既可以用來編寫系統(tǒng)軟件,又可以用來編寫應(yīng)用軟件C源程序進行編譯 B. 機器中只要安裝有任一種編譯程序, 就能對 C 語言提供的庫函數(shù), 則可以不運行連接程序 C. 若程序中不使用 D. 調(diào)試程序時若發(fā)現(xiàn)語法錯誤,改正后即可直接運行,無需再次編譯正確;機器中必須安裝語言既可以用來編寫系統(tǒng)軟件,又可以用來編寫應(yīng)用軟件,選項A 解析 C解析:語言源程序中函數(shù)的定義和調(diào)用不在
9、同一個錯誤; C 源程序進行編譯,選項 BC語言的編譯程序,才能對 C 錯誤;調(diào)試程序時若發(fā)現(xiàn)語法錯誤,改正后需要重新再次編譯,選源文件,就需要使用鏈接程序,選項C A 選項。項 D錯誤。本題答案為 。12. 以下說法正確的是 _ )(分數(shù): 1.00 種基本結(jié)構(gòu)組成的結(jié)構(gòu)化程序只能解決一些簡單的問題A.由 33 種基本結(jié)構(gòu)組成的結(jié)構(gòu)化程序可以解決任何復(fù)雜的問題B. 由 種基本結(jié)構(gòu)組成的結(jié)構(gòu)化程序只能解決那些可以結(jié)構(gòu)化的問題 C.由 3種基本結(jié)構(gòu)組成的結(jié)構(gòu)化程序只能解決一些數(shù)學(xué)上有解析解的問題D.由 3種基本結(jié)構(gòu)所構(gòu)成的算法稱為結(jié) 33 種基本結(jié)構(gòu)組成的算法可以解決任何復(fù)雜的問題,由解析: 解
10、析由 選項。種基本結(jié)構(gòu)所構(gòu)成的程序稱為結(jié)構(gòu)化程序, 故本題答案為 B 構(gòu)化算法,由 3 。以下說法正確的是 _13.)(分數(shù):1.00語言標識符中字母、數(shù)字和下劃線字符必須同時出現(xiàn)A.C B.C語言標識符中僅出現(xiàn)下劃線字符是不允許的 C.C 語言標識符中可以出現(xiàn)多個字母、數(shù)字和下劃線字符D.C 語言標識符中字母、數(shù)字和下劃線字符不能同時出現(xiàn)語言中合法的標識符命名規(guī)則是:標識符可以由字母、數(shù)字和下劃線組成,并且第一個字解析 C解析: C 選項。、D錯誤。故本題答案為符必須是字母或下劃線, 選項 A、B 。_以下屬于 C 語言標識符的是 14._6_A#6# B6CD )(分數(shù): 1.00 A.B
11、.C.D.語言中合法的標識符命名規(guī)則是:標識符可以由字母、數(shù)字和下劃線組成,并且第一個字解析合法。故中的“ ”不合法;選項 D 符必須是字母或下劃線,選項B 中的“ #”不合法;選項15. 以下不能作為合法常量的是_ )(分數(shù): C 解析: 中的“ $”不C A 選項。本題答案為。后面的 eE 或 eE(e) 解析實數(shù)的指數(shù)形式為:尾數(shù)整型指數(shù),其中字母E或之前必須要有數(shù)字,析: 選項。 D 后面的指數(shù)是小數(shù),不合法。故本題答案為e 中 D 都正確;選項 C、B、A 指數(shù)必須是整數(shù)。選項 解16. 設(shè)有如下語句:int k=0;k=printf(OK/n);則以下敘述中正確的是 _。(分數(shù):
12、1.00 )A.printf必須作為獨立語句出現(xiàn)B. 變量 k 得到的是輸出的可見字符個數(shù)2C. 變量 k 得到的是輸出字符的總個數(shù)3 D. 變量 k 仍保持初值0解析: 解析 printf()函數(shù)的原型如下:extern int printf(const char *format,.);它是有返回值的,返回值是打印出來的字符個數(shù),題意中的字符串“OK/n”輸出3 個字符,所以k 的值為3。故本題答案為 C 選項。17. 以下說法正確的是 _。(分數(shù): 1.00 )A. 賦值語句是一種可執(zhí)行語句,應(yīng)當出現(xiàn)在函數(shù)的可執(zhí)行部分B. 賦值語句可以出現(xiàn)在函數(shù)中的任意位置C. 賦值語句可以出現(xiàn)在函數(shù)外單
13、獨執(zhí)行D. 賦值語句可以出現(xiàn)在源程序中的任意位置解析: 解析 在賦值表達式的尾部加上分號就構(gòu)成了賦值語句,賦值語句是一種可執(zhí)行語句,應(yīng)當出現(xiàn)在函數(shù)的可執(zhí)行部分。故本題答案為A 選項。18. 有以下程序:#include stdio.hmain()char*s=34;while(*(+s)!=/0)switch(*s-case 0:case 1: putchar(*s+1);break;case 2: putchar(*s+1);break;case 3: putchar(*s+1);default: putchar(*s+1);break;程序執(zhí)行后的輸出結(jié)果是_。(分數(shù): 1.00 )A.2
14、2345B.2345C.12345D.23445解析: 解析 程序首先定義一個字符指針s,指向一個常量字符串“ 01234”;接著 while 循環(huán)的循環(huán)條件每次將s 指向下一個字符,然后判斷s 指向的字符是否為空字符屜?,若不是,則執(zhí)行循環(huán)體,將當前字符與的ASCII 碼差值作為switch 語句的常量表達式,執(zhí)行對應(yīng)的case 語句;若是則終止循環(huán),程序結(jié)束。所以對于常量字符串“01234”可知:循環(huán)過程中s 指向的各個字符分別是:?、?、?、?,當*s是?時,豬尭尰的值為1,執(zhí)行case 1 語句,輸出 *s+1即字符 ?;當*s是?時,豬尭尰的值為2 ,執(zhí)行case 2 語句,輸出 *
15、s+1 即字符 ?;當*s是?時,豬尭尰的值為3,執(zhí)行case 3 和 default語句,兩次輸出 *s+1級字符 ?;當*s是?時,豬尭尰的值為4,執(zhí)行default語句,輸出 *s+1 即字符 ?;綜 選項。 D。故本題答案為23445 上所述程序輸出結(jié)果為:19. 有如下程序:#includestdio.hmain()int i;for(i=0;i5;i+)putchar(9-i%2);程序運行后的輸出結(jié)果是_。(分數(shù): 1.00 )A.98989B.98765C.98765D.98989解析: 解析 main()函數(shù)中, for循環(huán)遍歷i的值為0、1、2、3、4,每次遍歷調(diào)用putc
16、har()函數(shù)輸出表達式9-i%2的結(jié)果,由運算符優(yōu)先級可知表達式9-i%2 首先計算i%2 的值,再執(zhí)行減法操作,所以當i 取值為偶數(shù)時,i%2 的值為0,9-0 結(jié)果為 ?;當 i取值為奇數(shù)時,i%2 的值為1,9-1 結(jié)果為 ?,所以程序輸出結(jié)果為98989。故本題答案為A選項。20. 以下關(guān)于 switch 語句的敘述中正確的是 _。(分數(shù): 1.00 )A. 所有 case 的標號都應(yīng)當是連續(xù)的B. 每個 case 語句標號后面可以沒有break 語句 C.char型常量不能做case 的標號使用D.default必須放在全部case 的最后解析: 解析 switch 語句中, ca
17、se 標號不需要是連續(xù)的,選項 A錯誤;每個 case 語句標號后面可以沒有 break 語句,此時程序會接著執(zhí)行下一個 case 語句,選項 B 正確; case 標號后必須是常量表達式,可以是整型、 char 型、枚舉型或常量表達式,選項 C 錯誤; default 標號可以出現(xiàn)在 switch 語句體中任何標號位置上,選項 D 錯誤。故本題答案為 B 選項。21. 有下列程序:#include stdio.hmain()int a=6,i;for(i=1;i=3;i+)if(a5)break;if(a%2)a+=2;continue;a=a+4;printf(%d,%d,i,a);程序執(zhí)
18、行后的輸出結(jié)果是_。(分數(shù): 1.00 )A.4 ,9B.3 ,18C.4 ,18 D.4 ,2解析: 解析 main() 函數(shù)中,a 的初值為 6,for 循環(huán)首先判斷 i 的值是否小于 5,若小于 5。執(zhí)行 break 語句終止循環(huán);若不小于 5,接著判斷 a 的奇偶性,若 a 是奇數(shù),將 a 自增 2 后執(zhí)行 continue 語句,執(zhí)行循環(huán)過程 for 的值只會增不會減。所以中,兩個a;可見無論程序如何執(zhí)行,4 自增 a 是偶數(shù),將if語句都不會執(zhí)行,每次都是將a 自增 4,又由 ia 下一輪循環(huán);若取值可以是 1,2,3 知變量a 一共自增3 次,最終i的值為4,a 的值為 18。故
19、本題答案為22. 有以下程序:#include stdio.hmain()int a=1,b=2,c=3;char flag;flag=b =2 && c =3;switch(a)case 1:switch(flag)case 0: printf(*);break;case 1: printf(%);break;case 0: switch(c)case 1: printf($);break;case 2: printf(&&);break;default: printf(#);printf(/n);C 選項。程序運行后的輸出結(jié)果是_。(分數(shù): 1.00 )A.
20、*$B.%#C.%&&D.*#解析: 解析 main()函數(shù)中,根據(jù) b=2,c=3 可知表達式 b=2&&c=3 為真, flag值為 1;由 a=1 以及外層 switch 語句的 case 標號沒有 break 語句,可知外層switch 語句執(zhí)行 case 1 、case 0 ;對于外層 case 1 ,嵌套的 switch 語句根據(jù) flag=1 執(zhí)行 case 1 ,執(zhí)行 printf(%) ,輸出結(jié)果是“ %”,接著執(zhí)行 break 語句;對于外層 case 0 ,嵌套的 switch語句根據(jù) c=3 執(zhí)行 default語句,執(zhí)行 printf(
21、#),輸出“ #”。故本題答案為 B 選項。23. 有以下程序:#include stdio.hvoid main()char*s=/ta/018bc;for(;*s!=/0;s+)printf(*);printf(/n);程序運行后的輸出結(jié)果是_。(分數(shù): 1.00 )A.*B.*C.*D.*解析: 解析 main()函數(shù)定義一個字符指針s,指向字符串“ /ta/018be ”;for 循環(huán)遍歷 s 指向的字符串中的字符,然后輸出“ * ”,所以題意可以理解為: s 指向的字符串中有多少個字符,就輸出多少個“* ”。s 指向的字符串中字符分別是:/t(轉(zhuǎn)義字符 ) 、慜、/01( 轉(zhuǎn)義字符
22、) 、?、扜和捜,總共 6 個,其中由于 8 不屬于八進制中的數(shù)字,所以屜?不是一個轉(zhuǎn)義字符,而屜 ?就是轉(zhuǎn)義字符。故本題答案為A 選項。24. 以下正確的字符常量是 _。(分數(shù): 1.00 )A.ABB./0ABC.ABD./xAB解析: 解析 ?層是字符串常量,選項 A錯誤;屜 ?由 3 個字符構(gòu)成,以 /0 開頭的表示八進制字符,但是字符 ?屜層不是八進制數(shù)字,選項 B錯誤; ?層由兩個字符構(gòu)成,不能使用單引號,選項 C 錯誤;屜砯 ?是兩位十六進制數(shù) A、B 代表的一個 ASCII 碼字符,選項 D 正確。故本題答案為 D 選項。25. 有如下程序:#include stdio.hvo
23、id fun(int *a, int *b)for(;(*a*b)|(getchar()!=);)(*a)+;(*b)-;main()int i=0,j=5;fun(&i,&j);printf(%d,%d/n,i,j);程序運行時在第一列開始輸入:ab回車則運行結(jié)果是 _。(分數(shù): 1.00 )A.7,1B.3,2C.0,5D.5,0解析: 解析 fun()函數(shù)接收兩個整型指針變量 a、b,for 循環(huán)判斷 a、b 指向的值大小和 getchar()讀入的字符是否 ?來決定循環(huán)是否執(zhí)行,循環(huán)體內(nèi)對a、b 指向的值各自自增 1、自減 1。main() 函數(shù)定義并初始化實參i 的值
24、為 0,實參j 的值為 5,調(diào)用函數(shù) fun() ,傳入 i 、j 的地址,所以形參 a 指向 i ,形參 b 指向 j 。所以:*a 的值為 0,*b 的值為 5,*a *b 為真,執(zhí)行循環(huán)體;*a 的值為 1,*b 的值為 4,*a *b 為真,執(zhí)行循環(huán)體;*a 的值為 2,*b 的值為 3,*a *b 為真,執(zhí)行循環(huán)體;*a 的值為 3,*b 的值為 2,*a *b 為假, getchar() 讀入字符慜,執(zhí)行循環(huán)體; *a 的值為 4,*b 的值為 1,*a *b 為假, getchar() 讀入字符扜,執(zhí)行循環(huán)體;*a 的值為 5,*b 的值為 0,*a *b 為假, getchar
25、()讀入字符 ?,fun() 函數(shù)執(zhí)行完畢, main() 函數(shù)輸出結(jié)果為: 5,0。故本題答案為 D選項。26. 有下列程序:#include stdio.hvoid swap(int *a,int *b)int *tp;tp=a;a=b;b=tp;printf(%d,%d,*a,*b);main()int i=3,j=7,*p=&i,*q=&j;swap(p,q);printf(%d,%d,*p,*q);程序執(zhí)行后的輸出結(jié)果是_。(分數(shù): 1.00 )A.3 ,7,7,3B.7 ,3,7,3C.3 ,7,3,7D.7 ,3,3,7 解析: 解析 main() 函數(shù)定義兩個整
26、型變量 i 、j ,初值分別是 3、7;定義兩個整型指針變量 p、q,用 i 的地址初始化p,用 j 的地址初始化 q,此時 p 指向 i ,q 指向 j 。接著將 p 和 q 作為參數(shù)傳給 swap() 函數(shù),所以形參 a 是 p 的拷貝,它們都指向變量 i ;b 是 q 的拷貝,它們都指向變量 j 。然后 swap() 函數(shù)交換 a、b 的值,由于 a、b 分別是 p、q 的拷貝,所以 a、b 值的交換不影響實參 p、q。a、b 交換后, a 是變量 j 的地址, b 是變量 i 的地址,所以 swap() 函數(shù)中輸出 *a 的值為 j ,*b 的值為 i ,輸出 7,3;swap() 調(diào)
27、用結(jié)束后, main() 函數(shù)輸出 *p 、*q ,由于它們的值沒有改變,所以輸出 3,7。故本題答案為 D 選項。27. 以下關(guān)于函數(shù)參數(shù)的敘述中,錯誤的是 _。(分數(shù): 1.00 )A. 實參應(yīng)與其對應(yīng)的形參類型一致B. 形參可以是常量、變量或表達式 C. 實參可以是常量、變量或表達式D. 形參可以是任意合法數(shù)據(jù)類型解析: 解析 形式參數(shù)簡稱形參, 就是在定義函數(shù)時給出的參數(shù), 它可以是任意合法的數(shù)據(jù)類型; 實際參數(shù)簡稱實參,是在調(diào)用函數(shù)時傳遞給函數(shù)的確定的數(shù)據(jù), 它的類型應(yīng)該與對應(yīng)的形參類型一致, 可以是常量、變量或表達式,選項 A、C、D敘述正確。選項B中,常量、表達式不能作為右值,所
28、以形參不能是常量、表達式,敘述錯誤。故本題答案為B 選項。28. 以下有關(guān)函數(shù)的敘述錯誤的是 _。(分數(shù): 1.00 )A.C 語言規(guī)定,不能在函數(shù)的內(nèi)部定義函數(shù)B. 在 C 語言的函數(shù)體中可以有多個return語句C. 在 C 語言中函數(shù)的實參個數(shù)可以有多個,各實參之間用分號隔開D.C 語言程序總是從main() 函數(shù)開始執(zhí)行解析: 解析 C 語言規(guī)定,不能在函數(shù)的內(nèi)部定義函數(shù),選項A 敘述正確;在 C 語言的函數(shù)體中,可以有多個return語句,最終只有一個會被執(zhí)行,選項 B 敘述正確;在 C語言中函數(shù)的實參個數(shù)可以有多個,各實參之間用逗號分開,選項 C 敘述錯誤; C 語言程序總是從 m
29、ain() 函數(shù)開始執(zhí)行,選項 D 敘述正確。故本題答案為 C選項。29. 以下關(guān)于指針的說法錯誤的是 _。(分數(shù): 1.00 )A. 可以向指針中寫入任意數(shù)據(jù)B. 可以向指針所指內(nèi)存單元中寫入數(shù)據(jù)C. 指針可以指向與其基類型相同的普通變量D. 可以通過加法運算,使指針指向下一個內(nèi)存單元解析: 解析 指針變量必須區(qū)分基類型,可以向指針所指內(nèi)存單元寫入與基類型相同的數(shù)據(jù),而不能寫入說法正C說法正確;指針可以指向與其基類型相同的普通變量,選項B 說法錯誤,選項 A 任意數(shù)據(jù),選項確;指針是一個內(nèi)存地址,它是一個整數(shù),可以通過加法運算,使指針指向下一個內(nèi)存單元,選項D 說法正確。故本題答案為 A 選
30、項。30. 有以下程序:#include stdio.h #define SWAT(t,a,b)t=a;a=b;b=t;main()int x=6,y=4,z=3,s=0;if(xy)SWAT(s,x,y);if(xz)SWAT(s,x,z);if(yz)SWAT(s,y,z);printf(%d,%d,%d/n,x,y,z);執(zhí)行后的輸出結(jié)果是 _。(分數(shù): 1.00 )A.6 ,4,3B.3 ,4,6C.0 ,3,4D.3 ,0,0 解析: 解析 程序定義一個宏, #define SWAT(t,a,b)t=a;a=b;b=t;程序中 3 個 if語句經(jīng)過宏替換后如下:if(xy)s=x;x
31、=y;y=s;if(xz)s=x;x=z;z=s;if(yz)s=y;y=z;z=s;x 初值為 6,y 初值為 4,z 初值為 3,s 初值為 0,所以:第 1 個 if 語句, xy(6 4) 為假,執(zhí)行 x=y;y=s;此時 x 的值為 4,y 的值為 0;第 2 個 if 語句, xz(4 3) 為假,執(zhí)行 x=z;z=s;此時 x 的值為 3,z 的值為 0;第 3 個 if 語句, yz(0 0) 為假,執(zhí)行 y=z;z=s;此時 y 的值為 0,z 的值為 0;最終 x、y、z 的值為 3、0、0。故本題答案為 D 選項。31. 有以下程序:#include stdio.hint
32、 f(int x,int n)if(n1)return f(x,n-1)+xn-1*10;elsereturn x0;main() int a6=1,2,3,4,y; y=f(a,4); printf(%d,y);程序執(zhí)行后的輸出結(jié)果是_。(分數(shù): 1.00 )A.91 B.4321C.1234D.10解析: 解析 函數(shù) f 是遞歸函數(shù),當參數(shù) n 大于 1 時,函數(shù)返回 f(x,n-1)+xn-1*10 ;若參數(shù) n 不大于;2)+x2*10+x3*10 ,f(a等價于; 3)+x3*10 ,f(a 等價于 4) ,f(a函數(shù)中 main() 所以。 x0返回時, 1等價于 f(a ,1)+
33、x1*10+x2*10+x3*10;等價于 x0+x1*10+x2*10+x3*10;其中 x0值為 1,x1 值為 2,x2 值為 3,x3 值為 4,所以 y 的值為: 91。故本題答案為A選項。32. 有如下程序:#include stdio.hvoid get_put()char ch;ch=getehar();if(eh!=/n)get_put();putchar(ch);main()get_put();程序運行時,輸入AB12回車,則輸出結(jié)果是_。(分數(shù):1.00 )A.2100B.21BAC.DCBAD.21AB解析: 解析 main() 函數(shù)調(diào)用 get_put() 函數(shù),ge
34、t_put()是遞歸函數(shù),每次使用 getchar()讀入一個字符存放到 ch 中,若 ch 不是字符屜港,遞歸調(diào)用自身,然后調(diào)用 putchar()函數(shù)輸出該字符。當輸入“ AB12/n( 回車 ) ”時,直到讀入的字符是屜港,輸出回車符,然后回到上一層遞歸,逆序輸出各個字符,輸出結(jié)果為:回車21BA。故本題答案為 B選項。33. 有以下程序:#includestdio.h#includestring.hvoid fun(char *s)int len;len=strlen(s);if(len2)fun(s+2);putchar(*s);void main()char *p=abcdefg:
35、fun(p);putchar(/n);程序的運行結(jié)果是 _。(分數(shù): 1.00 )A.abcdefgB.gfedcbaC.gecaD.aceg解析: 解析 fun()函數(shù)是遞歸函數(shù),功能是將字符指針s 指向的字符串,逆序輸出下標為偶數(shù)的字符,題意實參p 指向的字符串中,下標為偶數(shù)的字符分別是a( 下標為 0) 、c( 下標為 2) 、e( 下標為 4) 、g( 下標為 6) ,所以逆序輸出結(jié)果為:geca,所以本題答案為 C 選項。34. 有如下程序:#include stdio.hvoid convert(char ch)printf(%c,ch);if(ch_x0005_)convert(
36、ch+1);main()convert(程序運行后的輸出結(jié)果是_。(分數(shù): 1.00 )A.5B.123456C.012345D.01234解析: 解析 convert()函數(shù)首先將形參 ch 輸出,然后在 ch 的 ASCII 碼小于 ?時,遞歸調(diào)用自身, 傳入 ch+1 這個字符;main() 函數(shù)調(diào)用 convert()函數(shù),傳入字符,所以程序輸出結(jié)果為:012345,故本題答案為 C 選項。35. 有以下程序:#include stdio.hint mm;int func(int a)static int n=3;int i;for(i=1; ia;i+)n=n*a;return n;
37、void main()int a;mm=func(2);a=func(3);printf(%d%d/n,mm,a);程序的運行結(jié)果是 _。(分數(shù): 1.00 )A.6 34B.9 729C.3 9D.6 54解析: 解析 程序中 mm是全局變量, n 是 func() 函數(shù)中的靜態(tài)局部變量,所以mm初值默認為 0;n 只有在第一次調(diào)用func() 函數(shù)時定義并完成初始化,初值為 3,后續(xù)每次調(diào)用 func() 時 n 的值是上一次調(diào)用結(jié)循環(huán), for 經(jīng)過,3 的值為 n 靜態(tài)局部變量, 2 的值為 a 形參時, mm=func(2)函數(shù)中 main() 執(zhí)行束時的值;在 i 取值為 1 時,
38、n=n*a,所以 n 的值為 6,函數(shù)返回值也是 6,所以 mm的值為 6;執(zhí)行 a=func(3) 時,形參 a 的值為 3,靜態(tài)局部變量 n 的值為 6,經(jīng)過 for 循環(huán),在 i 取值為 1 、2 后,n=n*a*a ,所以 n 的值為 54,函數(shù)返回值也是 54,所以main() 函數(shù)中 a 的值為 54。故本題答案為 D 選項。36. 有以下程序:#include stdio.hint fun(char *p) if(*p=0)return 0;fun(p+1);putchar(*p);return 0;main() char ch=ABCD; fun(ch);程序運行后的輸出結(jié)果是
39、_。(分數(shù): 1.00 )A.DCBA B.BCDC.ABCDD.D解析: 解析 fun() 函數(shù)是遞歸函數(shù),當形參p 指向的字符不是空字符 /0(ASCII輸出 *p 。由于 putchar()函數(shù)在遞歸調(diào)用自身語句之后,函數(shù)的功能是逆序輸出向的字符串為“ ABCD”,所以程序輸出結(jié)果為: DCBA。故本題答案為 A 選項。碼為 0) 時,遞歸調(diào)用 fun(p+1) ,然后p 指向的字符串。 main() 函數(shù)中, ch 指37. 有以下程序:#include stdio.hint fun(int x, int y)static int m=0,i=2;i+=m+1;m=i+x+y;retu
40、rn m;void main()int j=1,m=1,k;k=fun(j,m);printf(%d,k);k=fun(j,m);printf(%d/n,k);程序運行后的輸出結(jié)果是_。(分數(shù): 1.00 )A.5 ,5B.5 ,11 C.11,11D.11,5解析: 解析 fun()函數(shù)中定義兩個靜態(tài)局部變量m、i ,其中 m初值為 0,i 初值為 2,由于是靜態(tài)局部變量,m、i 只在第一次調(diào)用 fun() 函數(shù)時初始化,后續(xù)調(diào)用fun() 函數(shù)時, m、i 的值沿用上一次調(diào)用后的值。main() 函數(shù)中 j 、m、k都是局部變量,作用域都只限在main() 函數(shù)中,所以 main() 函數(shù)
41、中的 m與 fun() 函,1) ,fun(1 ,第一次調(diào)用 1) ,fun(1函數(shù)連續(xù)兩次調(diào)用main() 屬于不同的變量。由源程序可知m數(shù)中的fun() 函數(shù)中 x 值為 1,y 值為 1,m值為 0,i 值為 2,所以執(zhí)行 i+=m+1 后 i 的值為 3。執(zhí)行 m=i+x+y 后, m的值為 5,函數(shù)返回值為 5;第二次調(diào)用 fun(1 ,1) ,fun() 函數(shù)中 x 值為 1,y 值為 1,m值為 5,i 值為 3。所以執(zhí)行 i+=m+1 后 i 的值為 9。執(zhí)行 m=i+x+y 后,m的值為 11,函數(shù)返回值為 11。故本題答案為 B 選項。38. 有下列程序:#include
42、stdio.h#include string.hmain()char a510=efg,abcd,mnopq,hijkl,stuvwxyz;char *p5;int i,len;for(i=4;i=0;i-)pi=ai;len=strlen(pi);printf(%s,pi+len-2);printf(%c,(pi+len-1);程序執(zhí)行后的輸出結(jié)果是_。(分數(shù): 1.00 )A.fggcddpqqkllyzzB.yzzkllpqqcddfggC.yzyklkpqpcdcfgfD.fgfcdepqpklkyzy解析: 解析 main()函數(shù)定義一個二維字符數(shù)組a,它包含5 個字符串,另外定義字
43、符指針數(shù)組p,它包含5 個字符指針元素。通過for循環(huán),從后往前遍歷a 中的 5 個字符串,每次遍歷將字符串首地址(ai)賦給數(shù)組p 中下標為i的元素,然后使用 strlen()庫函數(shù)求得該下標為i 的字符串長度,再通過printf()函數(shù)輸出該字符串最后兩個字符構(gòu)成的字符串 (pi+len-2)以及該字符串最后一個字符*(pi+len-1),所以本題輸出結(jié)果為:yzz-kllpqqcddfgg。故本題答案為 B 選項。39. 有以下程序:#include stdio.htypedef struct bookchar name50;double price;BOOK;void fun(BOOK
44、 *pd,int num,int size);void main()佂?搠瑡噃 ?屻桰瑯獯潨屰水 ?計算機原理 ?數(shù)據(jù)結(jié)構(gòu) ,35.6; int n=3,m=10;fun(data,n,m);printf(%s,%s/n,,);void fun(BOOK*pd,int num,int size)int i,j,t;double mx,mn;mx=mn=pd0.price;j=t=0;for(i=1;inum;i+)if(pdi.pricemx) mx=pdi.price;j=i;if(pdi.price mn) mn=pdi.price;t=i;pdsi
45、ze-2=pdj;pdsize-1=pdt;程序的運行結(jié)果是 _。(分數(shù): 1.00 )A. 數(shù)據(jù)結(jié)構(gòu),計算機原理B. 計算機原理,數(shù)據(jù)結(jié)構(gòu)C.photoshop ,計算機原理D. 數(shù)據(jù)結(jié)構(gòu), photoshop解析: 解析 程序首先使用 typedef 定義一種新的類型名 BOOK,它包含兩個數(shù)據(jù)成員:字符數(shù)組 name,double 類型變量 price 。main() 函數(shù)使用 BOOK定義結(jié)構(gòu)體數(shù)組 data ,它包含 10 個 BOOK類型的結(jié)構(gòu)體元素,并完成初始化,其中前 3 個元素使用確定的值初始化, 后 7 個元素系統(tǒng)默認值初始化。 函數(shù) fun() 通過 for 循環(huán)遍歷結(jié)構(gòu)
46、體數(shù)組 pd 的前 num個元素,從而找出前 num個元素中 price 成員最大的元素下標存放到 j ,找出前 num個元素中 price 成員最小的元素下標存放到 t ,然后將下標為 j 的元素賦給下標為 size-2 的位置,將下標為 t 的元素賦給下標為 size-1 的位置。由于 main() 函數(shù)中調(diào)用 fun(data ,n,m),n 值為 3、m值為 10,fun() 函數(shù)將 data 中下標為 8 的元素賦值為前 3 個元素中 price 值最大的元素,將 data 中下標為 9 的元素賦值為前 3 個元素中 price 值最小的元素,調(diào)用結(jié)束后,輸出下標為 8 和 9 元素的成員 name,根據(jù)初值可知 price最大元素的 name成員為“數(shù)據(jù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年綠色殯葬服務(wù)草皮采購合同
- 2025年度教育培訓(xùn)價格保密協(xié)議范本3篇
- 2024年藝人 management 合同:演員經(jīng)紀與包裝
- 2025版市政綠化工程造價咨詢合同3篇
- 2024版全新住宅租賃協(xié)議附加條款指南版B版
- 2024年煤礦救援打井施工合同協(xié)議
- 二零二五年床墊產(chǎn)品展示會合作協(xié)議及贊助方案3篇
- 2024年汽車零部件加工協(xié)議
- 2024版二手房定金協(xié)議書示例
- 2024年營養(yǎng)餐配送服務(wù)合同3篇
- (八省聯(lián)考)2025年高考綜合改革適應(yīng)性演練 語文試卷(含答案解析)
- GB/T 45002-2024水泥膠砂保水率測定方法
- ISO 56001-2024《創(chuàng)新管理體系-要求》專業(yè)解讀與應(yīng)用實踐指導(dǎo)材料之1:0 引言(雷澤佳編制-2025B0)
- 2024版環(huán)衛(wèi)清潔班車租賃服務(wù)協(xié)議3篇
- 生產(chǎn)安全事故事件管理知識培訓(xùn)課件
- 項目施工單位與當?shù)卣按迕竦膮f(xié)調(diào)措施
- 藥劑科工作人員的專業(yè)提升計劃
- 2024-2025學(xué)年度第一學(xué)期二年級語文寒假作業(yè)第二十一天
- 貸款用設(shè)備購銷合同范例
- 公務(wù)員行測真題題庫及答案
- 2025支部會議記錄范文
評論
0/150
提交評論