2012秋江蘇省計算機二級C考試真題 |
絕密★ 啟用前 2012年秋 江蘇省高等學校非計算機專業學生 計算機基礎知識和應用能力等級考試 二級試卷 試卷語種:C語言 說 明: 1.本試卷包括計算機基礎知識部分和程序設計部分,考試時間共12 0分鐘; 2.本試卷滿分為60分,分選擇題和填空題,試卷不分A、B類型; 3.計算機基礎知識部分全部是選擇題(20分),程序設計部分分為選擇題(1 0 分)和填空題(30分)兩種; 4.選擇題用答題卡答題。每一項有A、B、C、D四個可供選擇的答案,請選 擇其中一個你認為正確的答案,用HB鉛筆涂寫在答題卡的相應答題號內。 每選對一項得1分,不選或選錯不得分; 5.填空題用答題紙答題。請將答案用藍、黑色鋼筆或圓珠筆填寫在答題紙的 相應答題號內,每個答案只占一行,不得換行。每填對一個答案得1分, 不填或填錯不得分; 6.請認真填寫并仔細核對答題卡和答題紙上的學校名稱、準考證號和姓名是 否填寫正確。 7.考試結束時將試卷、答題卡和答題紙放在桌上,不得帶走。待監考人員收 畢清點后,方可離場。 第一部分 計算機基礎知識 一、選擇題(用答題卡答題,答案依次填在1--20題號內) 1.下列關于信息、信息技術、信息產業與信息化的敘述中。錯誤的是___1___ 。 A.世間一切事物都在運動,都具有一定的運行狀態,因而都在產生信息 B.現代信息技術的主要特征之一是以數字技術為基礎 C.信息產業特指利用信息設備進行信息處理與服務的行業,它不包括任何生產制造行業 D.信息化是一個推動人類社會從工業社會向信息社會轉變的社會轉型的過程 2.下列關于數字技術與微電子技術的敘述中,錯誤的是___2___ 。 A.數字技術的處理對象是"比特",它只有兩種取值,即數字0和數字1 B.數據通信和計算機網絡中傳輸二進制信息時,傳輸速率的度量單位通常為B/s、KB/s、MB/s等 C.微電子技術是實現電子電路和電子系統超小型化及微型化的技術,它以集成電路為核心 D.Intel公司創始人之一摩爾曾發表論文預測,單塊集成電路的集成度平均每18~24個月翻一番 3.以下選項中,數值相等的一組數是___3___ 。 A.十進制數54020與八進制數54732 B.八進制數13657與二進制數1011110101111 C.十六進制數F429與二進制數1011010000101101 D.八進制數7324與十六進制數B93 4.下列關于臺式PC機CPU的敘述中,錯誤的是___4___。 A.目前的PC機,CPU芯片都是直接固定在主板上的,用戶不可對其進行更換 B.PC機CPU芯片有多個生產廠商,例如Intel公司、AMD公司等 C.Intel公司的Core i7/i5/i3處理器是64位多內核CPU芯片 D.目前的CPU芯片中一般都集成了一定容量的高速緩沖存儲器cache 5.下列關于臺式PC機主板的敘述中,錯誤的是___5___。 A.為了便于不同PC機主板的互換,主板的物理尺寸已經標準化,例如ATX和BTX規格 B.芯片組是主板上的重要部件,它與CPU芯片及外設同步發展 C.主板上的BIOS集成電路芯片中存儲了CMOS設置程序 D.主板上的CMOS存儲器是一種非易失性存儲器,在任何情況下其信息均不會丟失 6.下列四種I/O總線(接口)中,數據傳輸方式為并行方式的是___6___ 。 A.PCI-Express B.PCI C.USB D.IEEE-1394 7.下列關于常用I/O設備的敘述中,錯誤的是___7___ A.鼠標器與主機的接口主要有PS/2和USB兩種 B.光學分辨率是掃描儀的重要性能指標,目前普通辦公用掃描儀的分辨率可達1000dpi以上 C.數碼相機的成像芯片均為CCD類型,且絕大多數相機的存儲卡是通用的、可互換的 D.寬屏LCD顯示器是目前最常見的PC機顯示器,其顯示屏的寬度與高度之比為16:9或16:10 8.下列關于PC機外存儲器的敘述中,錯誤的是___8___ A.PC機硬盤接口主要有PATA(并行ATA)和SATA(串行ATA)兩種,PATA的傳輸速率更高些 B.目前U盤不僅能方便地保存數據,還可以模擬光驅和硬盤啟動操作系統 C.固態硬盤是基于半導體存儲器芯片的一種外存儲設備,一般用在便攜式計算機中 D.光盤可分為CD光盤、DVD光盤和藍光光盤 9. 下列關于軟件的敘述中,錯誤的是___9___ A.軟件是用于特定用途的一整套程序、數據及相關的文檔 B.共享軟件是沒有版權的軟件。允許用戶對其進行修改并散發 C.目前,Adobe Reader、360殺毒軟件是有版權的免費軟件 D.操作系統、程序設計語言處理蠶統、數據庫管理系統均屬于系統軟件 10.下列關于Windows操作系統多任務處理的敘述中,正確的是___10___。 A.如果用戶只啟動一個應用程序工作(如使用Word寫作),那么該程序就可以自始至終地獨占CPU B.僅當計算機中有多個處理器或處理器為多內核處理器時,操作系統才能同時執行多個任務處理 C.無論是系統程序還是應用程序,所有運行程序(進程)獲得CPU使用權的優先級相同 D.在多任務處理時,后臺任務與前臺任務都能得到CPU的及時響應 11.下列關于程序設計語言及其處理系統的敘述中,錯誤的是___11___ A.機器語言就是計算機的指令系統,機器語言程序一般為二進制代碼形式 B.匯編程序是指用匯編語言編寫的源程序,不同計算機的匯編程序通常是相同的 C.Microsoft Office軟件(如Word、Excel等)中包含VBA程序設計語言,VBA是VB的子集 D.高級語言的語言處理系統的工作方式通常分為兩種,即"解釋"方式和"編譯"方式 12.下列關于移動通信的敘述中,錯誤的是___12___ A.第1代個人移動通信采用的是模擬傳輸技術,從第2代開始均采用了數字傳輸技術 B.目前廣泛使用的GSM和CDMA都是第2代移動通信 C.我國的 D.目前第4代移動通信( 13.下列關于因特網接入技術的敘述中,錯誤的是___13___ A.采用電話撥號接入時,需要使用電話MODEM,其主流產品的速率為56kbps B.采用ADSL接入時,數據上傳速度低于數據下行速度,理想狀態下數據下行速度可達8Mbps C.采用有線電視網接入時,多個終端用戶均可獨享連接段線路的帶寬 D.目前我國許多城市采用"光纖到樓、以太網入戶"的做法,用戶可享受數兆乃至百兆的帶寬 14.Internet使用TCP/IP協議實現了全球范圍的計算機網絡的互連,連接在Internet上的每一臺主機都有一個IP地址。下面不能作為IP地址的是___14___ 。 A.201.109.39.68 B.120.34.0.18 C. D.127.0.257.1 15.現在因特網上的多數郵件系統使用___15___協議,它允許郵件正文具有豐富的排版格式,可以包含圖片、聲音和超鏈接,從而使郵件的表達能力更強,內容更豐富。 A.MIME B.SMTP C.POP3 D.HTML 16.下列關于網絡信息安全的敘述中,錯誤的是 ___16___ 。 A.信息在網絡傳輸過程中,會受到竊聽、偽造、篡改等安全威脅 B.最簡單也是最普遍的身份鑒別方法是使用口令(密碼),但其安全性不高 C.數據加密是常用的網絡信息安全措施.也是數字簽名等安全措施的基礎 D.入侵檢測與防火墻一樣,都是被動保護系統免受攻擊的一種網絡安全技術 17.下列關于字符編碼標準的敘述中,錯誤的是___17___ 。 A.ASCII標準是美國制定的標準,也是目前使用最為廣泛的西文字符編碼標準 B.GB2312、GBK和GB18030都是我國制定的標準,在這些標準中所有字符均采用雙字節編碼 C.目前在臺港澳等地區廣泛使用BIG5編碼標準,它與GB2312不兼容 D.UCS是ISO制定的標準,相應的工業標準稱為Unicode 18.人們說話時所產生的語音信號必須數字化才能由計算機存儲和處理。假設語音信號數字化時取樣頻率為8kHz,量化精度為8位,數據壓縮比為4,那么1分鐘數字語音的數據量(壓縮后)大約為___18___ A.960KB B.480KB C.120KB D.60KB 19.目前數字有線電視和衛星電視所傳輸的數字視頻采用的壓縮編碼標準大多是___19___ A.MPEG-1 B.MPEG 20.下列關于Microsoft Office軟件(以2003/2007版本為例)功能的敘述中,錯誤的是___20___ A.Word編輯處理的文檔可以保存為多種文件格式,例如DOC、RTF、TXT、HTML等 B.一個Excel文件不可以引用另一個Excel文件中的數據 C.PowerPoint編輯處理的文檔可以另存為網頁或圖像文件 D.Access是一個數據庫管理系統,Access數據庫中 第二部分C語言程序設計 一、選擇題(用答題卡答題,答案依次填在21—30答題號內,共10分) 21.以下聲明中有語法錯誤的是____(21)___。 A.char *x="thank"; B.char x[]; C.char *x(void); D.char (*x)[2]; 22.假定a為一個一維字符數組名,則引用數組元素a[k]的正確形式為___22___。 A.a+k B.&a+k C. *(a+k) D. *a+k 23.已有聲明"int x;",實現"若x的值是奇數,則輸出x"這一功能的語句是___23 ___。 A.if(x/2) printf("%d”,x); B.if(x%2)printf("%d”,x); C.if(x/2==1)printf("%d”,x); D.if(x%2==0) printf("%d”,x); 24.假定一個函數的頭部為"char *func(int n)",則該函數返回值的類型是 24 。 A.int B.int * C.char D.char * 25.已知fun函數的頭部為"void fun(int x[],int n)",main函數中有聲明"int a[10]={l},b=10;",欲 在main函數中調用fun函數,則以下調用語句中正確的是 25 。 A.fun(a,fun(a,b)); B.fun(a[10],b); C.fun(a,a[0]); D.fun(b,a); 26.已有聲明"int a[3][4]={{3,4},{2,8,6}};",則數組元素a[1][0] 26 。 A.2 B 27.已有聲明"int x=0,*p;",則以下賦值表達式中正確的是 27 。 A.p=x B. *p= *x C.&p=&x D.p=&x 28.已有聲明"char c='\72';",則變量c包含 28 個字符. A.1 B 29.已有聲明"int *p;",若用語句"p=(int *)malloc(20 *sizeof(int));"動態申請一個int型數組存儲區,則P所指向的數組中可存儲 22 個int型數據。 A.l0 B 30.判斷char型變量cl的值是否為小寫字母的正確表達式為 30 。 A.'a’<=c1<=’z’ B.cl>=a&&cl<=z C.'a'>=c1||’z’<=c1 D.cl>=’a’&&c1<=’z’ 二、填空題(將答案填寫在答題紙的相應答題號內,每個答案只占一行,共30分) .基本概念(5分) 1.已有聲明"int a=-3;",則表達式"a>=0?a:-a"的值是___(1)___ 。 2.&&、+、>=是C語言中的三個運算符,其中優先級最高的是 ___ (2) ___ 。 3.假定指針變p指向對象的值為16,p+l指向對象的值為35,則 *p++的值為______(3)______ 。 4.在系統頭文件中定義的符號常量NULL代表的數值(整數)是______(4)______ . 5.若需要打開一個已存在的非空文件F.txt并修改其中的部分數據,則打開文件F.txt的語句應是 "fp=fopen("F.txt",_____(5)_____);"。 . 閱讀程序(13分) 6.以下程序運行時,輸出到屏幕的結果是______(6)______ . #include int main() {int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=0; for(i=0;i<3;i++) for(j=2;j>=i;j--) t+=b[i][j]; printf("%d\n",t); return 0; } 7.以下程序運行時,輸出到屏幕的結果是___(7)___ 。 #include int main() { char *str[]={"one","two","three","four"}; puts(str[3]+1); return 0; } 8.以下程序運行時,輸出到屏幕的結果是___(8)___ 。 #include int fun(int x,int y,int z) {return x*y *z;} int main() {printf("%d",fun(1.5,2.5,3.5)); return 0; } 9.以下程序運行時,輸出到屏幕的結果是___(9)___ . #include int fun(char *s) { if(*s=='\0') return 0; else return 1+fun(s+1); } int main() {char str1[]=" printf("%d\n",fun(str1)); return 0; } 10.下程序運行時,輸出到屏幕的結果中第一行是___(10)___,第二行是___(11)___. #include int main() {int x; char a; a=x=266; printf("%d\n%d",x,a); return 0; } 11.以下程序運行時,輸出到屏幕的結果中第一行是___(12)___ ,第二行是___(13)___ 。 #include int f(int n) {int s=1; return s*=n; } int g(int n) { static int s=1; return s *=n; } int main() { int a=0,b=0,i; for(i=1;i<4;i++) { a=a+f(i); b=b+g(i); } printf("%d\n%d",a,b); return 0; } 12.以下程序運行時,輸出到屏幕的結果中第一行是___(14)___ ,第二行是___(15)___ 。 #include void fun(int a[],int b[],int n) {int k,i,j; for(i=0;i {k=n; for(j=0;j if(a[i]<=a[j])k--; b[k]=a[i]; } } int main() {int i,b[6],a[6]={1,3,4,2,5,0}; fun(a,b,6); for(i=0;i<6;i++) printf((i+1)%3==0?"M\n":"M",b[i]); return 0; } 13.以下程序運行時,若輸入1到變量kl、輸入85到變量k2,則輸出到屏幕的結果中第一行是 ___(16)___,第二行是___(17)___ ,最后一行是___(18)___ 。 #include int sieve(int x[][4],int n,int y[][4],int key1,int key2,int *p1,int *p2) { int i=0,k,m=0; while(i { if(x[i][1]==key1 && x[i][2]>=key2 && x[i][3]>=key2) {for(k=0;k<4;k++)y[m][k]=x[i][k]; m++; } i++; } *p1=*p2=0; for(i=0;i { *p1+=y[i][2]; *p2+=y[i][3]; } *p1/=m; *p2/=m; return m; } int main() { int a[6][4]={{101,1,97,90},{102,0,92,89},{103,0,88,78},{104,1,90,90}, {105,1,60,70},{106,1,93,87}},b[6][4]={0}; int count=6,k1,k2,av1,av2,i,j; printf("key1=");scanf("%d",&k1); printf("key2=");scanf("%d",&k2); count=sieve(a,count,b,k1,k2,&av1,&av2); for(i=0;i { for(j=0;j<4;j++) printf("M",b[i][j]); printf("\n"); } printf("ave1=%d,ave2=%d\n",av1,av2); return 0; } . 完善程序(12分) 14.以下程序在20000~21000范圍內驗證數學命題:如果一個整數的奇數位上各位數字之和與該整數的偶數位上各位數字之和的差是ll的倍數(若奇數位的各位數字之和小于或等于偶數位的各位數字之和,則對奇數位各位數字之和不斷加11,直到其值大于偶數位各位數字之和為止),則這個數能被11整除. #include int fun(long m) { int odd,even; odd=even=___(19)___ ; while(m>0) { odd=odd+m; even=even+___(20)___ ; m=m/100; } while( ___(21)___ ) { odd=odd+11; } if((odd-even)==0)return 1; else return 0; } int main() {long k,n=20000,m=21000,j=0; for(k=n;k<=m;k++) {if(___(22)___) if(k==0) { if(j++==0) putchar('\n'); printf("%ld ",k); } else printf("error"); } return 0; } 15.以下程序的功能是反轉一個字符串中單詞的順序。例如,將字符串"there is no try"中單詞順序反轉后變為"try no is there"。假定以空格作為單詞分隔符。 #include #include #include void reverseWords(char str1[],char str2[]) { int tokenPos,wReadPos,wEnd,writePos; writePos=0; /* tokenPos記錄向前掃描(從串尾到串首掃描)strl字符串時當前被判斷字符的下標 */ tokenPos=___(23)___ ; while(tokenPos>=0) { if(strl[tokenPos]==' ') { str2[writePos++]=str1[tokenPos--]; /*復制單詞之間的空格 */ } else { wEnd=tokenPos; /*wEnd記錄strl字符串中被處理單詞的尾字符下標 */ while(tokenPos>=0 && str1[tokenPos]!=' ') /*向前掃描到空格為止+, tokenPos--; /*wReadPos記錄str1字符串中被處理單詞的首字符下標 */ wReadPos= ___(24)___ ; while(wReadPos<=wEnd) str2[writePos++]=str1[wReadPos++]; } } str2[writePos]=___(25)___; /*在str2數組中置字符串的終止符*/ } int main() { char *sentence="there is no try", *reverse; reverse=(char *)malloc(strlen( ___(26)___ )+1); printf("%s\n",sentence); reverseWords(sentence,reverse); printf("%s\n",reverse); free(reverse); return 0; } 16.已知一個單向鏈表結點的數據結構定義如下: typedef struct point {int x; struct point *next; }POT; 函數creat的功能是:找出p指向的單向鏈表中數據值只出現一次的結點,將這些結點依次復 制鏈接到q鏈表,函數返回q鏈表首結點的地址. POT *creat(POT *p) {POT *q=NULL,*qr, *p0, *p1, *p2; int c; p0=___(27)___; / *p0指向p鏈表首結點 */ while(p0!=NULL) { c=0; p1=p; / *p1指向p鏈表首結點*/ while(p1!=NULL)/ *依次將p1指向的每個結點中的數據與p0指向的結點中的數據做比較*/, { if(p1->x==p0->x) c++; p1=___(28)___; } if(c==1) { /*將p0指向的結點中數據復制到p2指向的結點,將p2指向的結點鏈入q鏈表*/ p2=(POT *)malloc(sizeof(POT)); p2->x=p0->x; if(q==NULL) q=qr=___(29)___ ; else{ qr->next=p2;qr=p2; } } p0=p0->next; } qr->next=___(30)___ ; return q; } 二級C參考答案 一、選擇題 (1)C (2)B (3)B (4)A (5)D (6)B (7)C (8)A (9)B (10)D 21.B 22.C 23.B 24.D 25.C 26.A 27.D 28.A 29.B 30.D 二、填空題 (1)3 (2)+ (3)16 (4)0 (5)r+(6)8 (7)our (8)6 (9)5 (10)266 (11)10 (12)6 (13)9 (14)0 1 2 (15)3 4 5(16)101 1 97 90 (17)104 1 90 90 (18)ave1=93,ave2=89 (19)0 (20)m/10(21)odd<=even (22)fun(k) (23)strlen(str1)-1 (24)tokenPos+1 (25)'\0'(26)sentence (27)p (28)p1->next (29)p2 (30)0 |