無紙化真考試題庫第35套_第1頁
無紙化真考試題庫第35套_第2頁
無紙化真考試題庫第35套_第3頁
無紙化真考試題庫第35套_第4頁
無紙化真考試題庫第35套_第5頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、無紙化真考試題庫第35套.下列敘述中正確的是A)程序可以作為算法的一種表達方式B)算法的有窮性是指算法的規(guī)模不能太大C)算法的復雜度用于衡量算法的控制結(jié)構(gòu)D)算法的效率與數(shù)據(jù)的存儲結(jié)構(gòu)無關(guān)參考答案:A算法的有窮性是指操作步驟有限且能在有限時間內(nèi)完成,如果一個算法執(zhí)行耗費的時間太長,即使最終得出了正確結(jié)果,也是沒有意義的。B選項錯誤。一個算法復雜度的高低體現(xiàn)在運行該算法所需要的計算機資源的多少。C選項錯誤。算法的效率是指算法執(zhí)行的時間,算法執(zhí)行時間需通過依據(jù)該算法編制的程序在計算機上運行時所消耗的時間來度量,這就與算法本身設(shè)計的優(yōu)劣以及具體的編程實現(xiàn)有關(guān),數(shù)據(jù)的存儲結(jié)構(gòu)會極大的影響程序的執(zhí)行時間

2、。D選項錯誤。算法在實現(xiàn)時需要用具體的程序設(shè)計語言來實現(xiàn),所以程序可以作為實現(xiàn)算法的一種表達方式。故選Ai項.某循環(huán)隊列的存儲空間為 Q(1:m),初始狀態(tài)為front=rear=m 。現(xiàn)經(jīng)過一系列的入隊操作和退隊操作后, front=m-1 , rear=m ,則該循環(huán)隊列中的元素個數(shù)為m-11m0參考答案:B循環(huán)隊列長度為 m,由初始狀態(tài)為front=rear=m可知此時循環(huán)隊列為空。入隊運算時, 首先隊尾指針(rear)進1 (即rear+1),然后在rear指針指向的位置插入新元素。特別的,當隊 尾指針rear=m+1時,置rear=1。退隊運算時,排頭指針(front)進1 (即fr

3、ont+1 ),然后刪除front 指針指向的位置上的元素,當排頭指針front=m+1時,置front=1。從排頭指針front指向的后一個位置直到隊尾指針rear指向的位置之間所有的元素均為隊列中的元素,則該循環(huán)隊列中的元素個數(shù)為m-(m-1)=1。故選擇A選項3.能從任意一個結(jié)點開始沒有重復地掃描到所有結(jié)點的數(shù)據(jù)結(jié)構(gòu)是A)循環(huán)鏈表雙向鏈表二叉鏈表D)有序鏈表參考答案:A在單鏈表的第一個結(jié)點前增加一個表頭結(jié)點,隊頭指針指向表頭結(jié)點,最后一個結(jié)點的指針域的值由NULL改為指向表頭結(jié)點,這樣的鏈表稱為循環(huán)鏈表。在循環(huán)鏈表中,只要指 出表中任何一個結(jié)點的位置,就可以從它出發(fā)沒有重復地掃描到表中其

4、他所有的結(jié)點。雙向鏈表與二叉鏈表都可以掃描到所有結(jié)點,但是會有重復。有序鏈表如果是單鏈表的情況下,不能掃描到所有結(jié)點。故 A選項正確4.某棵樹中共有25個結(jié)點,且只有度為3的結(jié)點和葉子結(jié)點,其中葉子結(jié)點有7個,則該樹中度為3的結(jié)點數(shù)為A)不存在這樣的樹B) 7 C) 8 D) 6參考答案:A樹是一種簡單的非線性結(jié)構(gòu),直觀地來看,樹是以分支關(guān)系定義的層次結(jié)構(gòu)。在樹結(jié)構(gòu)中,一個結(jié)點所擁有的后件個數(shù)稱為該結(jié)點的度,所有結(jié)點中最大的度稱為樹的度。首先假設(shè)這樣的樹是存在的,由于只有度為3的結(jié)點和葉子結(jié)點,可知最后一層都為葉子結(jié)點,倒數(shù)第二層一部分結(jié)點的度為3, 一部分結(jié)點為葉子結(jié)點。結(jié)點總數(shù)為 25,葉

5、子結(jié)點有7個,則度為3的結(jié)點有18個,由于(34-1-1)/218,能把字符1輸入給變量c、數(shù)值2輸入給變量d的輸入語句是scanf(%d%lf, &c,&d);scanf(%c%lf, &c,&d);scanf(%c%f, &c,&d);scanf(%d%f, &c,&d);參考答案:B%lf是針對double的,如果僅用f,輸入的數(shù)據(jù)可能沒有被完全接收 ,數(shù)據(jù)的精度可能不足, 選項C,D錯誤。住要針對float類型的變量的輸入。立要針對整型數(shù)據(jù)的輸入,住要針 對字符類型的數(shù)據(jù)的輸入,選項A昔誤。故答案為B選項13.輸出語句:printf(%dn,11+011); 的輸出結(jié)果是2022022

6、021參考答案:Aprintf(%dn”,11+011) 中,11為十進制,011為八進制形式,打印格式%d表示十進制格式輸出,因此,先將八進制數(shù)轉(zhuǎn)化為十進制,011(8)=81*1+1*8 0=9,相當于 printf(%dn,11+9),故答案為 20, A選項正確14.以下敘述正確的是A)有些算法不能用三種基本結(jié)構(gòu)來表達B) C語言程序不編譯也能直接運行C)結(jié)構(gòu)化程序的三種基本結(jié)構(gòu)是循環(huán)結(jié)構(gòu)、選擇結(jié)構(gòu)、順序結(jié)構(gòu)D)如果C語言程序?qū)崿F(xiàn)的算法很簡單,則計算機不進行任何代碼轉(zhuǎn)換就能執(zhí)行程序參考答案:C算法的三種基本結(jié)構(gòu)可以表達任何算法,只是不同的實現(xiàn)復雜度不相同。因此選項A錯誤。C語言是編譯型

7、語言,程序必須先編譯、鏈接才能運行,因此選項B錯誤。15.若有定義:double x;,則表達式:x=0,x+10,x+ 的值是11.010.00.01.0參考答案:CC語言中,逗號運算符可以把兩個以上(包含兩個)的表達式連接成一個表達式。逗號運算符的優(yōu)先級是所有運算符中級別最低的,逗號運算符保證左邊的子表達式運算結(jié)束后才進行右邊的子表達式的運算。也就是說,逗號運算符是一個序列點,其左邊所有副作用都結(jié)束后,才對其右邊的子表達式進行運算,并以最右邊表達式值作為整個逗號表達式的值。1、后置自增運算:k+表示先運算,后自加。2、前置自增運算:+k表示先自加,后運算。因此,表達式x=0,x+10,x+

8、的計算過程為首先賦值x=0,然后將x加10,但是并不對x進行賦值,最后計算x+,并,根據(jù)后置自增運算的計算結(jié)果,即為 x=0.0o,故答案為C選項。 16.有以下程序#include main() int x=1, y=0, a=0, b=0; switch ( x ) case 1: switch(y) case 0: a+; break; case 1: b+; break;a+; b+; break;a+; b+; printf(a=%d, b=%dn, a, b);程序的運行結(jié)果是a=2 , b=2a=2 , b=1a=1 , b=1a=1 , b=0參考答案:BC語言還提供了一種用于

9、多分支選擇的switch語句,計算表達式的值。并逐個與其后的常量表達式值相比較,當表達式的值與某個常量表達式的值相等時,即執(zhí)行其后的語句,然后不再進行判斷,繼續(xù)執(zhí)行后面所有case后的語句。如表達式的值與所有case后的常量表 達式均不相同時,則執(zhí)行 default后的語句。x=1;進入第一層 switch , y=0;進入第二層 switch ,執(zhí)行 a+;break;后a=1;在進入 case 2, (這里case 1 :沒有break ,)執(zhí)行了 a+,b+,由于存在break,則跳出switch ,得到a=2,b=1, 因此答案為B選項。左邊所有副作用都結(jié)束后,才對其右邊的子表達式進行

10、運算,并以最右邊表達式值作為整個逗號表達式的值。1、后置自增運算:k+表示先運算,后自加。2、前置自增運算:+k表示先自加,后運算。因此,表達式 x=0,x+10,x+的計算過程為首先賦值x=0 ,然后將x加10,但是并不對x進行賦值,最后計算x+,并,根據(jù)后置自增運算的計算結(jié)果,即為 x=0.0o,故 答案為C選項。.以下程序段中的變量已正確定義for( i=0; i4; i+,i+ )for( k=1; k3; k+ ); printf(* );該程序段的輸出結(jié)果是A) *C)D)*參考答案:AC語言約定分號為一條語句的結(jié)束。因此 for( i=0; i4; i+,i+)for( k=1;

11、 k3; k+ );是完整的語句,對printf();沒有任何影響,最后 printf(*), 執(zhí)行一次。因此答案為砒項.有以下程序#include main() char c;for (; ( c=getchar() != #;) if ( c=a & c=z ) c = c - a + A;putchar(+c);)執(zhí)行時輸入:aBcDefG#煙車,則輸出結(jié)果是AbCdEFgABCDEFGBCDEFGHbcdefgh參考答案:C循環(huán)的作用是將輸入的字符串轉(zhuǎn)化為大寫,getchar()每次讀入一個字符,putchar()每次輸出一個字符,當遇到#字符結(jié)束。putchar(+c),表示將字符變

12、量c加1后輸出。因此,輸入 aBcDefG#,得到的結(jié)果是 BCDEFGH故答案為 佻項.有以下程序#include int f(int x);main() int n=1,m;m=f(f(f(n); printf(%dn,m);)int f(int x) return x*2; 程序運行后的輸出結(jié)果是4281參考答案:C在C語言中,需要在 main函數(shù)后面定義函數(shù),需要提前聲明,否則調(diào)用報錯,無法找到該函數(shù)。m=f(f(f(n), 一共調(diào)用3次f()函數(shù),f()函數(shù)是對n*2,因此,結(jié)果是n*2*2*2,得到結(jié)果 為8。故答案為他項.關(guān)于地址和指針,以下敘述正確的是A)可以通過強制類型轉(zhuǎn)換讓

13、 char型指針指向double型變量B)函數(shù)指針p指向一個同類型的函數(shù)f時,必須寫成:p = &f;C)指針p指向一個數(shù)組f時,必須寫成:p = &f;D) 一個指針變量p可以指向自身參考答案:A函數(shù)指針p指向一個同類型的函數(shù) f時,可以寫成:p = f,而不能寫成&f,選項B錯誤。函 數(shù)名代表函數(shù)的入口地址,指針 p指向一個數(shù)組f時,可以寫成:p = f,也可寫成&f,數(shù)組 名f ,可以代表數(shù)組的首地址,選項 C錯誤。指針變量指向的是地址,是個常量,不能將地 址指向另一個地址,選項 D錯誤。char型根據(jù)轉(zhuǎn)化原則可以轉(zhuǎn)化為double類型,因此答案為A選項。21.有以下程序#include

14、 #define N 4int fun( int a口N) int i,j,x=0;for( i=0; iN; i+ )for( j=0; jN; j+ ) if ( i = j )x += aN-1-ji;return x;)main() int xNN= 1, 2, 3, 4), 5, 6, 7, 8), 9, 10, 11, 12),13, 14, 15, 17), y;y = fun(x);printf( %dn, y );)程序運行后的輸出結(jié)果是34352859參考答案:Afun函數(shù)求矩陣反對角線的元素之和。根據(jù) fun()函數(shù),當數(shù)組的行列下標相等時,對該行 反對角線上的元素求和。

15、故結(jié)果為4+7+11+13=34,答案為A選項。22.有以下程序#include #define N 3void fun( int xN, int *r1, int *r2 ) int i, j;*r1 = *r2 =0;for( i=0; iN; i+ ) j=N - (i+1); if (x*r1*r2 xij) *r1 = i; *r2 = j; ) main() int aNN = 1,5,7,9,2,6,4,3,8 , i,j;fun( a,&i,&j ); printf(%dn, aij);程序運行后的輸出結(jié)果是86 C) 7 D) 9參考答案:Cfun()獲取矩陣正反對角線的元素

16、的最大值,fun()中for( i=0; iN; i+ ) j=N - (i+1);/反對角線列位置if (x*r1*r2 xij) *r1 = i; *r2 = j; /比較正反對角線的元素,使得*r1,*r2始終只在最大元素的位置。由數(shù)組元素可得,正反對角線的最大元素為7。答案為C選項23.對于以下函數(shù)聲明void fun(int array4, int *ptr);以下敘述中正確的是A) array, ptr都是指針變量B)調(diào)用fun函數(shù)時,實參的值將逐一復制給arrayC)調(diào)用fun函數(shù)時,array按值傳送,ptr按地址傳送D) array是數(shù)組,ptr是指針,它們的性質(zhì)不同參考答案

17、:Avoid fun(int array4,int *ptr); fun()函數(shù),第一個參數(shù)雖然是數(shù)組類型,但是會退化為指針,并且形參數(shù)組的個數(shù)沒有用。第二個參數(shù)是指針,因此實際上二個形參都是指針。兩個形參都是指針,傳遞的都是地址,而不是值??芍x項B、C D昔誤。答案為Ai項24.設(shè)有定義:int x10,*p=x,i;,若要為數(shù)組x讀入數(shù)據(jù),以下選項正確的是for(i=0;i10;i+) scanf(%d,p+i);for(i=0;i10;i+) scanf(%d,*p+i);for(i=0;i10;i+) scanf(%d,*(p+i);for(i=0;i10;i+) scanf(%d,

18、xi);參考答案:AC語言聲明scanf(,);可知scanf()的第二個參數(shù)是地址,因此, 從四個答案中可以判斷,只有選項A是pi的地址,其他的均是變量本身。故答案為A選項。.有以下程序#include main() char s=012xy08s34f4w2;int i, n=0;for ( i=0; si!=0; i+ )if(si = 0 & si = 9) n+; printf(%dn,n);)程序運行后的輸出結(jié)果是7038參考答案:C題意統(tǒng)at字符s中阿拉伯數(shù)字的個數(shù)。char s= / 012xy08s34f4w2 z ;元素是字符型。/ 0,=48;而/ 0 / =0;因此可以

19、計算出/0 /之前阿拉伯數(shù)字的個數(shù),由字符串s可知,有3個阿拉伯數(shù)字。答案為 C選項。.有以下程序段char str 4 12 =aaa,bbb,ccc,ddd , *p4;int i;for( i=0; i4; i+ ) pi=stri;以下選項中不能正確引用字符串的是*P3P3str2*p參考答案:A*p3p30是一個字符,不是字符串,選項A錯誤。p3和str2和*p分別代表了ddd,ccc,aaa 。答案為A選項。27.有以下程序#include int mul(int val)static int init = 1;return init *= val;main( )int i;for

20、 (i=1; i=5; i+) printf(%d, mul(i);程序運行后的輸出結(jié)果是A) 1,2,6,24,120,1,2,3,4,5,1,1,1,1,1,1,2,4,6,8,參考答案:Astatic靜態(tài)變量只在聲明日初始化一次。mul()累乘,第一次init=1,init*=val, 第二次 init=1,val=2, 第三次 init=2,val=3, 第四次 init=6,val=4, 第五層 init=24,val=5, 因此結(jié)果為1,2,6,24,120 。故答案為A選項。28.有以下程序#include void fun( int n )static int k=0;if(n

21、0) printf(-); n=-n; k+=n%10; printf(%d,k);if(n/10) fun(n/10);main( )int x=-12;fun(x); printf(n);程序運行后的輸出結(jié)果是-2,3-1,-2,-2,-3,-2,1參考答案:Afun()函數(shù)使用了靜態(tài)變量,靜態(tài)變量只在聲明時初始化一次。首先實參的數(shù)值是-12 , if判斷后輸出負號,并將 n=12,計算k+=n%10 k+=2 2,因此輸出2,后將數(shù)值除以10,結(jié)果 為1,遞歸調(diào)用fun ()函數(shù),第二次調(diào)用 fun(),此時n=1, k=2,計算k+=n%10 k+=1 3,因 此打印3,。故最后打印結(jié)

22、果為-2, 3,。故答案為 頌項。.有以下程序#include struct Sint n; int a20; ;void f(struct S *p) int i,j, t;for (i=0; in-1; i+)for (j=i+1; jn; j+)if (p-ai p-aj) t= p-ai; p-ai = p-aj; p-aj = t; main() int i; struct S s=10, 2,3,1,6,8,7,5,4,10,9;f(&s);for (i=0; is.n; i+) printf(%d, s.ai);程序運行后的輸出結(jié)果是A) 1,2,3,4,5,6,7,8,9,10

23、,B) 10,9,8,7,6,5,4,3,2,1,C) 2,3,1,6,8,7,5,4,10,9,D) 10,9,8,7,6,1,2,3,4,5,參考答案:A結(jié)構(gòu)體s中n代表數(shù)組的實際長度,a是個定長數(shù)組。函數(shù)f(),對結(jié)本體S內(nèi)的a數(shù)組元素 使用冒泡法進行遞增排序。因此最終數(shù)組的元素是一個遞增序列。故答案為A選項。.有以下程序#include typedef struct stu char name10; char gender; int score; STU;void f( STU a, STU *b, STU c ) *b = c =a;printf( %s,%c,%d, b-name,

24、 b-gender, b-score );printf( %s,%c,%d, , c.gender, c.score );main( ) STU a=Zhao, m, 290, b=Qian, f, 350, c=Sun, m, 370;f( a, &b, c );printf( %s,%c,%d, , b.gender, b.score );printf( %s,%c,%dn, , c.gender, c.score );程序運行后的輸出結(jié)果是A) Zhao,m,290,Zhao,m,290,Zhao,m,290,Sun,m,370B) Zhao,m,29

25、0,Zhao,m,290,Zhao,m,290,Zhao,m,290C) Zhao,m,290,Zhao,m,290,Qian,f,350,Sun,m,370D) Zhao,m,290,Zhao,m,290,Qian,f,350,Zhao,m,290參考答案:AC語言函數(shù)參數(shù)彳遞分為:1、值傳遞過程中,被調(diào)函數(shù)的形參作為被調(diào)函數(shù)的局部變量 處理,即在內(nèi)存的堆棧中開辟空間以存放由主調(diào)函數(shù)放進來的實參的值,從而成為了實參的一個拷貝。值傳遞的特點是被調(diào)函數(shù)對形參的任何操作都是作為局部變量進行,不會影響主調(diào)函數(shù)的實參變量的值。2、地址傳遞過程中,被調(diào)函數(shù)的形參雖然也作為局部變量在堆棧中開辟了內(nèi)存空間,

26、但是這時存放的是由主調(diào)函數(shù)放進來的實參變量的地址。被調(diào)函數(shù)對形參的任何操作都被處理成間接尋址,即通過堆棧中存放的地址訪問主調(diào)函數(shù)中的實參變量。正因為如此,被調(diào)函數(shù)對形參做的任何操作都影響了主調(diào)函數(shù)中的實參變量。題設(shè)中,參數(shù)b是地址傳遞,因此會直接影響實參變量。a,c是值傳遞,傳遞是a,c的拷貝, 不會a,c實參產(chǎn)生影響,因此,調(diào)用函數(shù)返回,c沒有被修改,b被修改了。故答案為A選項。31.有以下程序#include #define SUB( x,y ) (x)*(y) main() int a=3, b=4;printf(%d n, SUB( a+, b+ );程序運行后的輸出結(jié)果是151216

27、20參考答案:B#define命令是 曲言中的一個宏定義命令,標識符一般使用大寫,為了區(qū)分其他標識符,它用來將一個標識符定義為一個字符串,該標識符被稱為宏名,被定義的字符串稱為替換文本。宏定義不進行其他操作,僅僅只是替換標識符。后置自增運算:k+表示先運算,后自加。意思是遇到k+了,先把當前的k的值拿來參加運算,后面再去管它的自加。SUB(a+,b+)(a+)*(b+)3*4。故答案為 B選項。.有以下程序#include main() struct cm int x; int y; a2=4,3,2,1 ;printf(%d n, a0.y/a0.x*a1.x );程序運行后的輸出結(jié)果是14

28、03參考答案:C由結(jié)構(gòu)體的定義同時初始化可知,a0.x=4,a0.y=3,a1.x=2,a1.y=1,因此計算 a0.y/a0.x*a1.x=3/4*2=(3/4)*2=0*2=0,故答案為他項。.以下選項中的編譯預處理命令行,正確的是#define E 2.38#define PI_2 1.56#define int INT#DEFINE TRUE參考答案:A無參宏定義格式:#define 標識符 字符串,標識符與 C語言規(guī)定相同,因此,可知選項B,多了 #,選項C使用c語言的關(guān)鍵字,選項 D格式不對。因此答案為 A選項。.設(shè)有以下程序段struct bookfloat price;char

29、 language;char title20;rec, *ptr;ptr = &rec;要求輸入字符串給結(jié)構(gòu)體變量rec的title成員,錯誤的輸入語句是A) scanf(%s, ptr.title);B) scanf(%s, rec.title);C) scanf(%s, (*ptr).title);D) scanf(%s, ptr-title);參考答案:A-是指針特用的,.用于指定元素的成員。ptr是指針,只能用-,因此選項A錯誤。*p 是指定元素(rec)可以使用.運算,因此選項 D正確。選項B,rec.title代表數(shù)組title ,同理選項C正確。答案為 A選項。35.有以下程序#

30、include #include struct computer char CPU10; ;main( )struct computer pc1, pc2;strcpy(pc1.CPU, 3.2G);strcpy(pc2.CPU, ?);pc1 = pc2;printf(%sn, pc1.CPU);程序運行后的輸出結(jié)果是A) ?B) 3.2GC) ?D) ?.2G參考答案:C二個類型相同的結(jié)構(gòu)體,可以使用一個給另一個初始化,使它們相等。前提是右值結(jié)構(gòu)體變量所有成員全部初始化了。pc1=pc2,pc2的成員值和pc1中對應的成員相等。因此pc1.CPU輸出? ? ? ?。答案為他項。.有以下程序#include main( )int a = 2, b;b = (a = 1) + 4;printf(%d,%d, a, b);程序運行后的輸出結(jié)果是A) 1,5B) 2,4C) 2,6D) 2,5參考答案:Aa=1等價于a=a1,即a除以2,則a=2,b=(a1)+

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論