2016年3月江蘇省計算機二級C真實考題 |
2016年3月江蘇省高校計算機等級考試真題 1、單選題 1. 最大的10位無符號二進制整數轉換成八進制數是__________。 A.1000 B.1023 C.1024 D.1777 D 解析:最大10位無符號二進制整數是1111111111,根據轉換的關系,從右向左每三位1組轉換成一個8進制數,不足三位時左邊補0, 即001 111 111 111對應的8進制數是1777 1 2. 打印機的性能指標主要是打印精度、打印速度、色彩數目和打印成本等。打印機精度也就是打印機的分辨率,它用dpi來表示,是衡量圖像清晰程度最重要的指標。dpi的含義是_______。 A.每厘米可打印的點數 B.每平方厘米可打印的點數 C.每英寸可打印的點數 D.每平方英寸可打印的點數 C 解析:dip的含義是每英寸可打印的點數 2 3. 下面對于網絡信息安全的認識正確的是___________。 A.只要加密技術的強度足夠高,就能保證數據不被非法竊取 B.訪問控制的任務是對每個(類)文件或信息資源規定不同用戶對它們的操作權限 C.數字簽名在效力法律上還不明確,所以尚未推廣使用 D.根據人的生理特征(如指紋、人臉)進行身份鑒別在單機環境下還無法使用 B 解析:A錯,加密強度足夠高,增加了數據被非法竊取后破解的難度,但不能保證不被非法竊取。 C錯,數字簽名的效力在法律上已經明確,已經推廣。D錯,根據人的生理特征進行身份鑒別在1臺計算機環境下可以使用。 3 4. 下列關于計算機動畫的敘述中,錯誤的是_______________。 A.計算機動畫是用計算機制作可供實時演播的一系列連續畫面的一種技術 B.計算機動畫的基礎是計算機圖形學,涉及景物的造型、運動控制和描述、視頻生成等技術 C.計算機動畫的制作要借助于動畫制作軟件,如二維動畫軟件Animator Pro和三維動畫軟件Adobe Director等 D.在國際上,目前計算機動畫的設計與制作已經形成了一個年產值達幾億美元的動漫產業 D 解析: 目前計算機動畫的設計與制作已經形成了一個年產值達上千億美元的動漫產業 5 5. 在下列有關Windows操作系統的多任務處理功能敘述中,正確的是__________。 A.在多任務處理過程中,前臺任務與后臺任務都能得到CUP的響應(處理) B.由于CPU具有并行執行指令的功能,所以操作系統才能同時進行多個任務的處理 C.如果用戶只啟動一個應用程序,那么該程序就可以自始至終的獨占CPU D.Windows操作系統采用協作方式支持多個任務的處理 A 解析:B錯,多任務處理是操作系統的功能,與CPU是否具有并行執行指令的功能沒有關系。C錯,使用CPU是由操作系統來管理的,即使只有一個應用程序,如果應用程序沒有計算的任務,也不會使用CPU。D錯, Windows操作系統采用時間片輪轉方式支持多個任務的處理 3 6. 下列關于字符編碼標準的敘述中,錯誤的是____________。 A.ASCII標準是美國制定的標準,也是目前使用最為廣泛的西文字符編碼標準 B.GB2312、GBK和GB18030都是我國制定的標準,在這些標準中所有字符均采用雙字節編碼 C.目前在臺港澳等地區廣泛使用BIG5編碼標準,它與GB2312不兼容 D.UCS和ISO制定的標準,相應的工業標準稱為Unicode B 解析:GB18030采用單字節,雙字節與四字節編碼。單字節用于ASCII字符,雙字節編碼表示漢字,與GBK兼容,用四字節表示UCS中的其他字符。 5 7. 下列關于移動通信的敘述中,錯誤的是______________。 A.第1代個人移動通信采用的是模擬傳輸技術,從第2代開始均采用了數字傳輸技術 B.目前仍在使用的GSM和CDMA都是第2代移動通信 C.我國的3G通信目前有三種技術標準,這三種標準的網絡不能互通,但終端設備互相兼容 D.目前第4代移動通信(4G)已廣泛使用,我國三大電信運營商均已經開展4G業務 C 解析:3G通信三種網絡可以互通,但終端設備不兼容。 4 8. 在下列有關算法的敘述中,錯誤的是_____________。 A.通俗地說,算法就是解決問題的方法和步驟 B.算法總是在執行了有限步的操作后終止 C.程序是算法的實現,程序與算法是一一對應的 D.算法解決的往往是一類問題而不是一個特定的問題 C 解析:程序是算法的具體實現,算法是抽象的,程序是具體的,兩者無法做到一一對應。 3 9. 下列關于CPU及指令系統的敘述中,錯誤的是_____________。 A.CPU中的ALU可能有多個,有的負責完成整數運算、有的負責完成浮點數運算 B.目前CPU芯片不僅包含邏輯CPU,往往還包含有高速緩存、存儲控制器等其他一些部件 C.不同指令的操作要求不同,但被處理的操作數類型、個數和來源通常一樣 D.CPU所執行的全部指令稱為CPU的指令系統,通常指令系統中有數以百計的不同指令 C 解析: 不同指令的操作要求不同,被處理的操作數類型、個數和來源也不同。 2 10. 所說的TCP/IP協議,是指由100多個協議組成的協議系列(包含下列幾個協議),在下列協議中所發送電子郵件主要依賴________。 A. HTTP協議 B. FTP協議 C. Telnet協議 D. SMTP協議 D 解析:HTTP協議用于服務器與客戶端網頁傳輸協議,FTP協議用于兩臺計算機之間傳輸文件,Telnet協議用于遠程登錄,SMTP用于發送電子郵件, POP3用于接收電子郵件。 4 C程序設計部分 11. 已知"int x=3,y=5,z,*p=&y; void f(int, int *);"以下語句中語法正確的是_________ A.f(x,y); B.z=f(x,p); C.f(x,&p); D.f(x,&y); D 解析:f函數中有2個參數,第1個參數是int類型,第2個參數是int *類型,A錯在y是int類型不是int *類型。B錯,f函數返回void類型,沒有返回值,無法給z賦值。C錯在&p返回的是二級指針int **類型,不是指針int *類型。 10 12. 已知有說明和定義"unsigned x=2; int y; float z=5; enum A{m,n,k}; "以下表達式中錯誤的是_________ A. y=(int)z%x B. y=sqrt(z-k) C.m++ D.x=x-z C 解析:enum類型無法自增, 枚舉型是一個集合,集合中的元素(枚舉成員)是一些命名的整型常量。 11 13. 以下選項中能表示C語言合法常量的是__________ A.1/2 B.-e-3 C.0fd D.'\045' D 解析:1/2是一個表達式。B錯在e的左邊必須要有值,如2e-3。C錯,以0開始的表示是8進制數,8進制的取值范圍在0—7,而fd不在0-7之間。D表示8進制45所對應的ASCII字符,即%這個字符。 2 14. 已知有結構定義及聲明: typedef struct { char title[50]; char author[50]; int pub_date; }BOOK; BOOK bookarr[10]= {{"Fourier Series", "Tolstov",1962}, {"Quantum Physics", "Gasiorowicz",1974}}; 以下表達式中有語法錯誤的是__________ A.bookarr.title[0] B.bookarr[0].title C.(*bookarr).title D.bookarr->title A 解析:bookarr返回操作系統分配的內存編號,如果用內存編號,那么要求必須用->符號來表示。A選項修改為(*bookarr).title[0]或修改為bookarr->title[0]就對了。 11 15. 以下能正確輸出字符串"hello"的是__________ A.char *s; s="hello"; puts(s); B.char s[]; s="hello"; puts(s); C.char s[5]="hello"; puts(s); D.char *s; strcpy(s,"hello"); puts(s); A 解析:B錯, 聲明時如果s[]這種格式,要求必須要初始化,B選項修改為char s[ ]="hello"就正確。C錯,char s[5]聲明了5個內存單元,因為"hello"這種格式存放時,會在末尾自動增加一個'\0',實際是6個字符,無法存放到5個內存單元中。D錯, char *s;聲明s是一個指針變量,因為s沒有初始化,所以s中的內存單元是一個隨機的數字編號如果執行后邊的strcpy(s,"hello")時,因為s中存放的是一個實際不存在的內存編號,執行時會報錯。 10 6. 程序運行時,輸出結果中第一行是__________,第二行是__________ #include <stdio.h> int main() { int x=1; int i,j; for(i=0;i<2;i++) { x=2*x; for(j=3;j>0;j--) x=x+1; printf("%d\n",x); } return 0; } 5@13 解析: 因為文字描述不如視頻講解清楚,詳細見視頻講解 8 程序運行時,輸出結果中第一行是__________, 第二行是___________, 第三行是____________ 題目要將 #include <stdio.h> #define N 5 void filla(int a[][N], int n) { int i,j,tep,k=1; for(i=0;i<n;i++) for(j=0;j<n;j++) a[i][j]=k++; for(i=0;i<n/2;i++) { for(j=0;j<n;j++) { tep=a[j][i]; a[j][i]=a[n-j-1][n-i-1]; a[n-j-1][n-i-1]=tep; } } } int main() { int a[N][N]={0},i,j,n=3; filla(a,n); for(i=0;i<n;i++,putchar('\n')) for(j=0;j<n;j++) printf("%5d",a[i][j]); return 0; } 9 2 7@6 5 4 @3 8 1 解析: 因為文字描述不如視頻講解清楚,詳細見視頻講解 8 程序運行時,輸出結果中第一行是____________, 第二行是_____________ #include <stdio.h> int fun(int x) { static int y=3; x+=y++; return x; } int main() { int x; for(x=2;x<4;x++) printf("%d \n",fun(x)); return 0; } 5@7 解析: 因為文字描述不如視頻講解清楚,詳細見視頻講解 8 程序運行時,輸出結果中第一行是_____________,第二行是___________ #include <stdio.h> int swap1(int a,int b) { int temp=a; a=b; b=temp; } int swap2(int a[], int b[]) { int temp=a[0]; a[0]=b[0]; b[0]=temp; } int swap3(int*a,int *b) { int temp=*a; *a=*b; *b=temp; } int main() { int a[2]={1,2}; int b[2]={4,5}; swap1(a[0],a[1]); printf("%d %d\n",a[0],a[1]); swap2(a,b); swap3(&b[0],&b[1]); printf("%d %d\n",b[0],b[1]); return 0; } 1 2@5 1 解析: 因為文字描述不如視頻講解清楚,詳細見視頻講解 8 程序運行時,輸出結果是____________ #include <stdio.h> void dream(int n) { if(n==1) { printf("w"); return; } if(n>1) { printf("e"); dream(n-1); printf("p"); } } int main() { dream(3); return 0; } eewpp 解析: 因為文字描述不如視頻講解清楚,詳細見視頻講解 8 1(完善程序) 【要求】 1. 打開T盤中的文件myf0.c,按以下程序功能完善文件中的程序。 2. 修改后的源程序仍保存在T盤myf0.c文件中,請勿改變myf0.c的文件名。 【程序功能】 驗證一個大于等于6的偶數可分解為兩個素數之和。函數guess的功能是將[m,n]內每個偶數i分解成兩個素數k與j的和(得到驗證即可,如果有多個答案,只取一個),將i,j,k依次寫到a指向的二維數組一行的三個元素中,函數返回實際寫入二維數組中數據的行數。 【測試數據與運行結果】 輸出: 6=3+3 8=3+5 10=3+7 12=5+7 14=3+11 16=3+13 18=5+13 20=3+17 【待完善的源程序】 #include <stdio.h> #include <conio.h> #include <math.h> int guess(int a[][3], int m,int n); int prime(int m); int main() { int a[100][3],m,i; m=guess(a,6,20); for(i=0;i<m;i++) printf("%2d=%d+%d\n",a[i][0],a[i][1],a[i][2]); getch(); return 0; } int guess(int a[][3], int m, int n) { int i,k,j,count=0; i=(m%2==0)?m:m+1; for(; i<=n; i+=2) { for(k=3;k<=i/2;k+=2) if( ______(1)______ ) { j= ______ (2) ______ ; if(prime(j)) { a[count][0]=i; a[count][1]=k; a[count][2]=j; count++; break; } } } return ______ (3) ______ ; } int prime(int m) { int g,h; h=sqrt(m); for(______ (4) ______ ;g<=h;g++) if(m%g==0) return 0; return 1; } prime(k)@i-k@count@g=2 解析: (1) prime(k) (2) i-k (3) count (4) g=2 因為文字描述不如視頻講解清楚,詳細見視頻講解 8 2(改錯題) 【要求】 1.打開T盤中的文件myf1.c按以下程序功能改正文件中程序的錯誤。 2.可以修改語句中的一部分內容,調整語句次序,增加變量聲明或預處理命令,但不能增加其他語句,也不能刪去整條語句。 3.修改后的源程序仍保存在T盤myf1.c中,請勿改變myf1.c的文件名。 【程序功能】 函數saveword的功能是:在s指向的由若干英文單詞組成的字符串中搜索包含t指向字符串的單詞,將找到的所有包含t字符串的單詞復制到ch指向的二維數組中,函數返回找到單詞個數。 稱s字符串為“被搜索字符串”,t字符串為“搜索字符串”。 函數searchsub的功能是判斷s指向的字符串中是否包含t指向的字符串,若包含則函數返回1,否則函數返回0 【測試數據與運行結果】 被搜索字符串:"Life is an onion and one cries while peeling it." 搜索字符串:"on" 輸出: ch[0]:onion ch[1]:one k=2 【含有錯誤的源程序】 #include <stdio.h> #include <string.h> #include <ctype.h> #include <conio.h> int searchsub(char s[], char t[]) { int i,j,k; for(i=0;s[i]!='\0';i++) { j=0,k=i; while(t[j]!='\0'&&t[j]==s[k]&&s[k]) {j++; k++;} if(t[j]!='\0') return 1; } return 0; } int saveword(char s[],char t[],char ch[][20]) { int i=0,j,k=0; char str[20]; while(s[i]) { while(!isalpha(s[i])) if(s[i]!='\0') i++; else break; for(j=0;isalpha(s[i]);j++;i++) str[j]=s[i]; str[j]='\0'; if(searchsub(str,t)) strcpy(str,ch[k++]); } return k; } int main() { char s[80]="Life is an onion and one cries while peeling it."; char t[20]="on", ch[40][20]; int i,k; k=saveword(s,t); for(i=0;i<k;i++) printf("ch[%d]:%s\n",i,ch[i]); printf("k=%d\n",k); getch(); return 0; } (1) 第13行if(t[j]!='\0') 修改成 if(t[j]=='\0')@ for(j=0;isalpha(s[i]);j++;i++) 修改為for(j=0;isalpha(s[i]);j++,i++)@ strcpy(str,ch[k++]); 修改為 strcpy(ch[k++],str);@ sk=saveword(s,t); 修改為 sk=saveword(s,t,ch); 解析: 錯誤1:第13行if(t[j]!='\0') 修改成 if(t[j]=='\0') 錯誤2: for(j=0;isalpha(s[i]);j++;i++) 修改為for(j=0;isalpha(s[i]);j++,i++) 錯誤3: strcpy(str,ch[k++]); 修改為 strcpy(ch[k++],str); 錯誤4: sk=saveword(s,t); 修改為 sk=saveword(s,t,ch); 因為文字描述不如視頻講解清楚,詳細見視頻講解 8 3編程題 【要求】 1、 打開T盤中的文件myf2.c,在其中輸入所編寫的程序。 2、 數據文件的打開、使用、關閉均用C語言標準庫中緩沖文件系統的文件操作函數實現。 3、 請勿改變myf2.c的文件名。 【程序功能】 給定一個存放于一維數組中的整數序列,統計序列中每個整數被該序列中多少個其他較大的整數字面包含。所謂一個大整數字面包含一個小整數,是指小整數從字面上是大整數的一部分。兩個相等的整數不算字面包含。 例如,在整數序列{21,3,15,35,315,121,31,1,2115,2}中,21被121和2115字面包含,因此21被該序列中的其他整數數字包含2次。 【編程要求】 1、 編寫函數void fcount(int data[],int ct,int x[])。函數功能是統計data指向的包含ct個整數的一維數組中每個整數被其他整數字面包含的次數,統計結果依次存放于x指向的一維數組中。 2、 編寫main函數,函數功能是聲明一維數組res和a并用測試數據初始化a數組,用a和res作為實參調用fcount函數,將統計結果輸出到屏幕及文件myf2.out中,最后將考生本人準考證號輸出到文件myf2.out中 【測試數據與運行結果】 測試數據:21,3,15,35,315,121,31,1,2115,2 輸出:2 3 2 0 0 0 1 6 0 3 參考答案: #include <stdio.h> void fcount(int data[], int ct, int x[]) { int i,j; int k1,k2,temp; for(i=0;i<ct;i++) { for(j=0;j<ct;j++) if(data[i]!=data[j]) { k2=data[j]; while(k2) { k1=data[i]; temp=k2; while(k1) { if(k1%10!=temp%10) break; k1=k1/10; temp=temp/10; } k2=k2/10; if(k1==0) {x[i]++; break; } } } } } int main() { int res[10]={21,3,15,35,315,121,31,1,2115,2}; int a[10]={0}; int i; fcount(res,10,a); for(i=0;i<10;i++) printf("%d ",a[i]); return 0; } |