月二級C真題分析_第1頁
月二級C真題分析_第2頁
月二級C真題分析_第3頁
月二級C真題分析_第4頁
月二級C真題分析_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、2010年9月全國計算機二級C語言筆試試題一、選擇題(每小題2分,共70分)下列各題A)、B)、C)、D)四個選項中,只有一個選項是正確的。請將正確選項填涂在答題卡相應(yīng)位置上,答在試卷上不得分。(11)以下關(guān)于結(jié)構(gòu)化程序設(shè)計的敘述中正確的是A)一個結(jié)構(gòu)化程序必須同時由順序、分支、循環(huán)三種結(jié)構(gòu)組成B)結(jié)構(gòu)化程序使用goto語句會很便捷C)在C語言中,程序的模塊化是利用函數(shù)實現(xiàn)的D)由三種基本結(jié)構(gòu)構(gòu)成的程序只能解決小規(guī)模的問題【答案與解析】C、C語言中有順序、選擇(分支)、循環(huán)三種基本結(jié)構(gòu),這三種基本結(jié)構(gòu)組成的算法可以任何復(fù)雜的問題,但并不是所有的程序都要用到這三種結(jié)構(gòu)。goto語句稱為無條件轉(zhuǎn)向

2、語句,濫用goto語句會是程序流程毫無規(guī)律,可讀性變差,應(yīng)盡量避免使用。(12)以下關(guān)于簡單程序設(shè)計的步驟和順序的說法中正確的是A)確定算法后,整理并寫出文檔,最后進行編碼和上機調(diào)試B)首先確定數(shù)據(jù)結(jié)構(gòu),然后確定算法,再編碼,并上機調(diào)試,最后整理文檔C)先編碼和上機調(diào)試,在編碼過程中確定算法和數(shù)據(jù)結(jié)構(gòu),最后整理文檔D)先寫好文檔,再根據(jù)文檔進行編碼和上機調(diào)試,最后確定算法和數(shù)據(jù)結(jié)構(gòu)【答案與解析】B、本題考查程序設(shè)計基本知識。簡單程序設(shè)計首先確定數(shù)據(jù)結(jié)構(gòu),然后確定算法,再編碼,并上機調(diào)試,最后整理出文檔。(13)以下敘述中錯誤的是A) C程序在運行過程中所有計算都以二進制方式進行B)C程序在運行

3、過程中所有計算都以十進制方式進行C)所有C程序都需要編譯鏈接無誤后才能運行D)C程序中整型變量只能存放整數(shù),實型變量只能存放浮點數(shù)【答案與解析】B、本題考查C語言基礎(chǔ)知識。編寫C語言源程序要經(jīng)過編譯鏈接生成二進制文件才能執(zhí)行,B選項錯誤的。(14)有以下定義:int  a; long  b; double  x,y;則以下選項中正確的表達式是A)a%(int)(x-y)B)a=x!=y;C)(a*y)%bD)y=x+y=x 【答案與解析】A、本題考查算術(shù)運算符的基本用法。B選項是語句,不是表達式首先排除。A、B、C中求余符號%要求左右兩邊必須是整型,只有A符合。(

4、15)以下選項中能表示合法常量的是A)整數(shù):1,200 B)實數(shù):1.5E2.0 C )字符斜杠: D)字符串:"007" 【答案與解析】D、本題考查各類型常量的正確表示形式。整數(shù)里面沒有逗號,實型數(shù)e的后面必須是整數(shù),字符斜杠應(yīng)為.本題只有D選項是正確的,表示只有一個字符的字符串,而且是一個八進制轉(zhuǎn)義字符。(16)表達式a+=a-=a=9的值是A)9 B)_9 C)18 D)0【答案與解析】D、本題考查連續(xù)賦值。連續(xù)賦值是從右向左依次運算。首先9賦值給a,然后將a-a賦值給a,a變?yōu)?,再將a+a賦值給a,得0,答案選D選項。(17)若變量已正確定義,在if (W)pri

5、ntf(“%dn,k”);中,以下不可替代W的是A)ab+c B)ch=getchar() C)a=b+c D)a+ 【答案與解析】A、在C語言中沒有這種形式的運算符。 (18)有以下程序include<stdio.h>main()int  a=1,b=0;if(!a) b+;else  if(a=0)if(a)b+=2;else  b+=3;printf(”%dn”,b);程序運行后的輸出結(jié)果是A)0B)1C)2D)3 【答案與解析】A、本題考查if-else的嵌套。本題中整體是一個if-else語句,if控制b+;else后面跟if語句,這個if語

6、句控制一個if-else語句。!a為假,執(zhí)行else后面的if語句,a=0為假,后面的if-else不再執(zhí)行。整個過程中b均為再賦值,故仍保持原值為0(19)若有定義語句int a, b;double x;則下列選項中沒有錯誤的是A)switch(x%2)               B)switch(int)x/2.0)case 0: a+; break;        &#

7、160;   case 0: a+; break;case 1: b+; break;             case 1: b+; break;default : a+; b+;             default : a+; b+;        &

8、#160;                      C)switch(int)x%2)        D)switch(int)(x)%2)case 0: a+; break;            case

9、 0.0: a+; break;case 1: b+; break;              case 1.0: b+; break;default : a+; b+;              default : a+; b+;         

10、                       【答案與解析】C、本題考查switch結(jié)構(gòu)。switch后面括號內(nèi)必須是整形或字符型的表達式,case后面必須是對應(yīng)類型的常量表達式。符合要求的只有選項。(20)有以下程序include <stdio.h>main()int a=1,b=2;while(a<6)b+=a;a+=2;b;printf(”d,dn”,a

11、,b);程序運行后的輸出結(jié)果是A)5,11B)7,1C)7,11D)6,1【答案與解析】、本題是語言的簡單計算。題中隨著循環(huán),取,的時候執(zhí)行循環(huán)體,均被加到上去,后面有一個除取余,當(dāng)小于的時候不變,原值為加完,后均沒有大于,最后一輪循環(huán)加了之后變?yōu)?,除取余后為。而在最后一次循環(huán)的時候,也從變?yōu)榱恕W罱K答案選擇選項。(21)有以下程序includestdioh>main()int y=10;while(y-);printf(”=dn”,);程序執(zhí)行后的輸出結(jié)果是A)y=0B)y= -1C)y=1D)while構(gòu)成無限循環(huán)【答案與解析】、本題考查循環(huán)的簡單計算。while的循環(huán)體是空語句,所

12、以我們看能不能結(jié)束循環(huán),當(dāng)while后面-為時結(jié)束循環(huán),不會死循環(huán),結(jié)束時又自減了。所以最后值為-1。選項正確。(22)有以下程序includestdio .h>main()char srstuv;printf(cn,*s2);程序運行后的輸出結(jié)果是A)tuv B)字符t的ASCII碼值 C)t D)出錯 【答案與解析】、本題考查字符數(shù)據(jù)類型。*值為,加后變?yōu)?,本題答案選。(23)有以下程序includestdio.h>includestring.h>main()char x“STRING”;x0=0;x10;x20;printf(“d  dn”,sizeof(x)

13、,strlen(x);程序運行后的輸出結(jié)果是A)6  1 B)7  0 C)6  3 D)7  1【答案與解析】B、本題考查了sizeof和strlen的功能。sizeof是求結(jié)構(gòu)所占字節(jié),要存放長度為6的那個字符串,需要長度為7的一維字符數(shù)組,所以x數(shù)組的占字節(jié)數(shù)為7。strlen是求字符串長度的,是指從參數(shù)的字符地址開始到第一個0之間的字符個數(shù),x0被賦予0,實際上是被賦了0,因為0是0的ASCII碼值,第一個就是字符串結(jié)束的標(biāo)志,所以長度為0。(24)有以下程序include stdioh>int   f(int 

14、; x);main()int  n=1,m;m=f(f(f(n);printf(“%dn”,m);int  f(int  x)return  x*2;程序運行后的輸出結(jié)果是A)1 B)2 C)4 D)8【答案與解析】D、本題考查簡單的函數(shù)嵌套調(diào)用。f函數(shù)的功能是x的2倍,顯然最里面的fun(n)的值為2,fun(2)為4,fun(4)為8。最終m被賦值為8。輸出結(jié)果為D選項。(25)以下程序段完全正確的是A)int *p;  scanf("%d",p); B)int *p;  scanf(“%d”,p);C)int

15、 k, *p=&k;  scanf("%d",p); D)int k, *p; *p= &k;  scanf(“%d”,p);【答案與解析】D,指針變量都要遵循先定義,然后賦值,最后進行運算。A,B只定義沒賦值,C選項沒定義,所以錯誤。(26)有定義語句:int *p4;以下選項中與此語句等價的是A)int  p4; B)int  *p; C)int  *(p4); D)int (*p)4;【答案與解析】C、本題考查運算符的優(yōu)先級和結(jié)合性。的優(yōu)先級高于*,故題干中語句與C選項等價。(27)下列定義數(shù)組的語句中

16、,正確的是A)int  N=10;            B)define N 10int  xN;                int xN;C)int  x0.10;        D)int x;【答案與解析】B、本題考查數(shù)組的基礎(chǔ)

17、知識。定義數(shù)組時數(shù)組名后面的內(nèi)必須是常量,而若要在定義時缺省這個數(shù)字,必須定義同時進行數(shù)組的初始化。本題中只有B選項正確。(28)若要定義一個具有5個元素的整型數(shù)組,以下錯誤的定義語句是A)int  a5=0;B)int  b=0,0,0,0,0;C)int  c2+3; D)int  i=5,di;【答案與解析】D、本題考查數(shù)組的基礎(chǔ)知識。定義數(shù)組時數(shù)組名后面的內(nèi)必須是常量,而若要在定義時缺省這個數(shù)字,必須定義同時進行數(shù)組的初始化。D選項里面i是變量了,錯誤。答案應(yīng)選擇D。(29)有以下程序includestdioh>void  f(i

18、nt *p);main()int  a51,2,3,4,5,*r=a;f(r);printf(“dn”;*r);void f(int *p)p=p+3;printf(“d,”,*p);程序運行后的輸出結(jié)果是A)1,4 B)4,4 C)3,1 D)4,1【答案與解析】D、本題考察函數(shù)值傳遞的問題。f函數(shù)參數(shù)為指針,容易讓人誤解為傳址的問題,但實際上只是簡單傳值問題,調(diào)用后實參沒有改變。故答案選D。(30)有以下程序(函數(shù)fun只對下標(biāo)為偶數(shù)的元素進行操作)# includestdioh>void fun(int *a;int n)int i、j、k、t;for (i=0;in一1

19、;i=2) k=i;for(j=i;j<n;j+=2)if(aj>ak)k=j;t=ai;ai=ak;akt;main()int aa10=1、2、3、4、5、6、7,i;fun(aa、7);for(i=0,i<7; i+)printf(“d,”,aai);printf(“n”);程序運行后的輸出結(jié)果是A)7,2,5,4,3,6,1 B)1,6,3,4,5,2,7C)7,6,5,4,3,2,1 D)1,7,3,5,6;2,1【答案與解析】A、本題是考查基本的讀程序的能力。fun函數(shù)的功能是將傳進來的數(shù)組中下標(biāo)為偶數(shù)的元素按降序排列。答案選擇A選項。(31)下列選項中,能夠滿足

20、“若字符串s1等于字符串s2,則執(zhí)行ST”要求的是A)if(strcmp(s2,s1)=0)ST;B)if(sl=s2)ST;C)if(strcpy(s l ,s2)=1)ST;D)if(sl-s2=0)ST;【答案與解析】A、本題考查字符串操作的基本知識。strcmp函數(shù)是比較字符串的,相同則返回0,strcpy函數(shù)是復(fù)制比較的函數(shù)。s1、s2引導(dǎo)兩個字符串,單獨拿出來是作為字符指針,除非表示同一個字符串,否則恒不相等。(32)以下不能將s所指字符串正確復(fù)制到t所指存儲空間的是A)while(*t=*s)t+;s+;B)for(i=0;ti=si;i+);C)do*t+=*s+;while(

21、s);D)for(i=0,j=0;ti+=sj+;);【答案與解析】C、本題考查字符串的基本操作。要正確復(fù)制一個字符串,除了要復(fù)制所有的字符以外,還要包括字符串結(jié)束符0,本題C選項中,當(dāng)s移動到0處時,*s值為0跳出循環(huán),無法將最后一個0復(fù)制到t中,無法完成字符串的復(fù)制。本題答案 選C。(33)有以下程序( strcat函數(shù)用以連接兩個字符串)includestdioH>includestring h>main()char a20=“ABCDOEFG0”,b“IJK”;strcat(a,b);printf(“sn”,a);程序運行后的輸出結(jié)果是A)ABCDEOFGOIJKB)ABC

22、DIJKC)IJKD)EFGIJK【答案與解析】B、本題考察字符串操作函數(shù)。strcat的功能是將后面字符指針引導(dǎo)的字符串連接到前面一個字符指針引導(dǎo)的字符串上去,是直接連在結(jié)束標(biāo)識0的位置,故IJK會直接從D后面連接,答案選擇B選項。(34)有以下程序,程序中庫函數(shù)islower(ch)用以判斷ch中的字母是否為小寫字母includestdioh>includectypehvoid  fun(char*p)int  i=0;while (pi)if(pi= islower(pi-1)pi-1=pi-1-a+A;i;main()char s1100“ab cd EFG!

23、”;fun(s1); printf(“sn”,s1);程序運行后的輸出結(jié)果是A)ab  cd  EFG! B)Ab  Cd  EFg!C)aB  cD  EFG! D)ab  cd  EFg!【答案與解析】C、本題考查字符指針的基本運算。根據(jù)對if語句的理解,fun函數(shù)的功能是字符串中當(dāng)一個字符為小寫字母且其后面為空格時,就將其變?yōu)榇髮懽帜?。本題選C答案。(35)有以下程序includestdioh>void  fun(int x)if(x21)fun(x2);printf(“d”,x);main(

24、)fun(7);printf(“n”);程序運行后的輸出結(jié)果是A)1 3 7 B)7 3 1 C)7 3 D)3 7【答案與解析】D、本題考查函數(shù)遞歸調(diào)用的問題。本題中遞歸調(diào)用了fun函數(shù),根據(jù)對fun函數(shù)觀察發(fā)現(xiàn),要輸出對應(yīng)x的值,必須先執(zhí)行了前面的if語句,if直接控制是否再次調(diào)用fun函數(shù),顯然要輸出x的值,肯定要先執(zhí)行完可能的內(nèi)層fun函數(shù)調(diào)用。執(zhí)行fun就肯定有輸出,因此最先輸出的肯定是最內(nèi)層的x值,當(dāng)x為3時x/2>1為假了,故最內(nèi)層應(yīng)輸出3,接著輸出7調(diào)用結(jié)束。答案應(yīng)選擇D。(36)有以下程序includestdiohint fun()static int x=1;x+=1

25、;return x;main()int i;s=1;for(i=1;i<=5;i+)s+=fun();printf(“dn”,s);程序運行后的輸出結(jié)果是A)11 B)21 C)6 D)120【答案與解析】B、本題主要考查變量存儲類別的問題。static是說明靜態(tài)類變量,其生存周期一直延續(xù)到整個程序結(jié)束。靜態(tài)類變量定義時只初始化一次,若定義時未初始化,則系統(tǒng)會默認初始0。本題中在五次調(diào)用fun函數(shù)的過程中,返回結(jié)果一次為2,3,4,5,6依次累加到s上去,s最后值為21,最終輸出s值,結(jié)果為B選項(37)有以下程序 inctudestdiohincludestdlibhMain()int

26、 *a,*b,c;a=b=c=(int)malloc(sizeof(int);a=1;b=2,c=3;a=b;printf(“d,d,dn”,a,b,c);程序運行后的輸出結(jié)果是A)3,3,3    B)2,2,3    C)1,2,3    D)1,1,3【答案與解析】A、本題中a、b、c三個整型指針均指向同一個存儲單元,其值都相等。一個整型的存儲單元里面只能存放一個整型的數(shù)據(jù),即最后一次被賦的值3。故最后輸出結(jié)果為A選項。(38)有以下程序includestdioh>main()int s,t,

27、A=10;double B=6;ssizeof(A);t=sizeof(B);printf(“d,dn”,s,t);在VC6平臺上編譯運行,程序運行后的輸出結(jié)果是A)2,4      B)4,4      C)4,8      D)10,6【答案與解析】C、本題考查基本數(shù)據(jù)字節(jié)長的問題?;緮?shù)據(jù)類型在不同的編譯環(huán)境下會不同。sizeof的功能是求字節(jié)長,在VC6平臺上,int類型和double類型的數(shù)據(jù)所占字節(jié)數(shù)分別為4和8。(39)若有以下語句

28、Typedef struct Sint g; char h;T;以下敘述中正確的是A)可用S定義結(jié)構(gòu)體變量B)可用T定義結(jié)構(gòu)體變量C)S是struct類型的變量D)T是struct S類型的變量【答案與解析】C、本題考查結(jié)構(gòu)體以及定義新類型名的基本概念。typedef作用是定義新的類型名稱,原來的類型名依然有效。按照題干定義后,可以用struct S或者T來定義結(jié)構(gòu)體變量。(40)有以下程序includestdioh>main()short c=124;c=c_;printf(“dn”、c);若要使程序的運行結(jié)果為248,應(yīng)在下劃線處填入的是A)>>2  

29、     B)|248     C)0248    D)<<1【答案與解析】D、本題考查簡單的移位運算。左移n位過程中若無1被舍去,則原數(shù)變?yōu)樵瓉淼?的n次方倍,右移變?yōu)樵瓉淼?的n次方分之一倍。c經(jīng)過運算變?yōu)樵瓉淼亩叮『每梢杂眠^右移一位來得到,選D答案。二、填空題(每空2分,共30分)請將每空的正確答案寫在答題卡【1】至【15】序號的橫線上,答在試卷上不得分。(6)以下程序運行后的輸出結(jié)果是【6】。includestdioh>main()int a=200,b=

30、010;printf(“%d%dn”,a,b);【答案與解析】2008、本題考查整型進制轉(zhuǎn)換的問題。整型變量,定義時被賦值分別以十進制和八進制,然后均以十進制輸出,原轉(zhuǎn)化成十進制為。故答案為。(7)有以下程序includestdioh>main()int  x,y;scanf(“%2d%1d”,x,y);printf(“dn”,x+y);程序運行時輸入:1234567程序的運行結(jié)果是【7】。【答案與解析】15、本題考查格式輸入。%和d之間用整數(shù)表示讀取寬度。顯然第一個數(shù)字讀取為12賦值給x,第二個數(shù)字讀取為3賦值給y,故最終輸出結(jié)果為15。(8)在C語言中,當(dāng)表達式值為0時表示

31、邏輯值“假”,當(dāng)表達式值為【8】時表示邏輯值“真”。 【答案與解析】非0(9)有以下程序includestdioh>main()int i,n=0,0,0,0,0;for (i=1;i<=4;i+)ni=ni-1*3+1; printf(“%d”,ni);程序運行后的輸出結(jié)果是【9】?!敬鸢概c解析】141340、本題是循環(huán)的簡單計算。本題中當(dāng)i為1時n1被賦值為1并輸出,當(dāng)i為2時n2被賦值為1*3+1即4,同理n3,n4被賦值為13和40并輸出。所以答案為141340(10)以下fun函數(shù)的功能是:找出具有N個元素的一維數(shù)組中的最小值,并作為函數(shù)值返回。請?zhí)羁?。(設(shè)N已定義)int fun(int xN)int i,k=0;for(i=0;i<N;i+)if(xi<xk)k=【10】return xk; 【答案與解析】i、本題考查C語言簡單算法。本題中xk是用來存放數(shù)組最小值的,所以k始終是那個最小值的下標(biāo)。(11)有以下程序#includestdioh>int *f(int *p,int *q);main()int m=1,n=2,*r=&m;r=f(r,n);printf(“dn”,*r);int*f(int *p,int*q)return(*p>*q)?p:q;程

溫馨提示

  • 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)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論