2015年10月江蘇省計算機二級C真實考卷 |
2015年10月江蘇省高校計算機等級考試 二級C真實考卷 第一部分 計算機基礎知識 下列有關數字技術與微電子技術的敘述中,錯誤的是______ A.數字技術是采用有限個狀態(主要是兩個狀態)來表示、處理、存儲和傳輸信息的技術 B.比特是信息的基本單位,1個比特可以表示8位二進制數 C.集成電路芯片是微電子技術的結晶,是現代信息產業的基礎 D.Moore定律是指"單塊集成電路的集成度平均每18-24個月翻一番" B 解析: 比特是信息的基本單位,1個比特可以表示1位二進制數 1 下列有關計算機發展與分類的敘述中,錯誤的是______。 A.數字電子計算機誕生于20世紀40年代,個人計算機(微型計算機)產生于20世紀80年代初 B.第4代計算機的CPU主要采用中小規模集成電路,第5代計算機采用超大規模集成電路 C.計算機分類有多種方法,按其內部邏輯結構通常分為16位機、32位機或64位機等,目前使用的PC機大多是32位機或64位機 D.巨型計算機一般采用大規模并行處理的體系結構,我國國防科技大學研制的"天河1號,巨型計算機,其性能可在全球巨型機排行榜中位居前10名 B 解析:計算機的發展一共4代,第4代計算機的CPU主要采用超大規模與極大規模集成電路 2 下列有關PC機微處理器的敘述中,錯誤的是_________ A.目前PC機所用的各種微處理器均由Intel公司設計和生產 B.微處理器通常由單片集成電路制成 C.一臺高性能PC機中通常包含多個微處理器 D.臺式PC機與筆記本PC機采用的微處理器通常有所不同公司 A 解析:目前PC機所使用的各種微處理器主要是由Intel與AMD公司設計和生產的,我們國家也能生產CPU 2 下列是PC機常用的四種外設接口,其中適用于連接硬盤和光驅的是______ A.RS-232 B.SATA C.IEEE-1394 D.VGA B 解析:VGA是連接顯示器接口,IEEE-1394用于連接高速數據傳輸設備 2 按照軟件著作權益的處置方式,軟件可以分為商品軟件、共享軟件、自由軟件等類型。在下列相關敘述中,錯誤的是_________。 A.商品軟件需要用戶付費才能得到其使用權 B.共享軟件是具有版權的軟件,允許用戶有條件的使用 C.自由軟件允許使用者隨意拷貝、傳播,允許修改其源代碼但必須公開修改內容 D.共享軟件、自由軟件均屬于免費軟件 D 解析:共享軟件是買前免費試用,不屬于免費軟件,自由軟件屬于免費軟件 3 因特網中的IP地址可以分為A類、B類、C類、D類等。在下列4個IP地址中,屬于C類地址的是_________ 。 A.28.129.200.19 B.88.129.200.19 C.188.129.200.19 D.222.129.200.19 D 解析:A類IP地址首個數字的范圍是0—127, B類IP地址首個數字范圍是128-191,C類IP地址首個數字范圍是192—223范圍內, 4 通常所說的TCP/IP協議,是指由100多個協議組成的協議系列(包含下列幾個協議)。在下列協議中,發送電子郵件主要依賴______. A.HTTP協議 B.FTP協議 C.Telnet協議 D.SMTP協議 D 解析:HTTP是上網時所用的協議,FTP是文件傳輸時使用的協議,Telnet是遠程登錄協議 4 下列有關采用ADSL技術接入因特網的敘述中,錯誤的是_________ A.計算機中需要安裝(集成)以太網網卡 B.需要使用專用的ADSL MODEM設備 C.上行與下行傳輸速率相同,傳輸速率可達100Mbps D.可傳送數據、音頻、視頻等信息 C 解析:ADSL上行與下行傳輸速率不相同,上行傳輸速率小于下行傳輸速率 4 下列有關漢字字符集及其編碼的敘述中,錯誤的是_________ A.GB2312是我國頒布的第一個漢字編碼國家標準,該標準包含了6000多個漢字 B.GB2312的所有字符在計算機內都采用2個字節來表示 C.GBK收錄了包括繁體字在內的20000多個漢字和符號,它向下兼容GB2312 D.GB18030是我國最新頒布的漢字編碼標準,它與GB2312和GBK均不兼容 D 解析: GB18030是我國最新頒布的漢字編碼標準,它與GB2312和GBK均保持兼容 5 語音在數字化時常用的取樣頻率為8kHz、量化位數為8bits。若聲道數為2,則每分鐘的數字語音數據量在未壓縮時大約為_________ A.64KB B.128KB C.1MB D.2MB C 解析:8Khz*8b*2*60=8000b*8b*2*60=8000*960b/8=8000*120B=960 000B大約為1MB 5 第二部分 C程序設計 一、選擇題(用答題卡答題,答案依次填在21-30答題號內) 已有聲明”int x,a=3,b=2;”,則執行賦值語句”x=a>b++?a++:b++;”后,變量x、a、b的值分別為______ 。 A.3 4 3 B.3 3 4 C.3 3 3 D.4 3 4 A 解析:根據運算符規則,首先執行b++,因為++在b之后,所以首先返回b的值2,然后b自增1變為3,即a>2返回真值,所以執行a++,同樣++在后邊,首先返回a的值3,然后a自增1變為4,即x=3,所以x,a,b的值分別是3,4,3 5 已有聲明"int a,b,k;",以下語句中與"if(a>b) k=0; else k=1;"等價的是_________。 A.k=a<=b; B.k=a C.k=a>b; D.k=(a>b)?1:0; A 解析:題目中if語句作用是a>b條件成立時給k賦值0,不成立執行給k賦值1,與選項A符合 5 已有結構定義和聲明如下: A. *p->str++與(*p)->str++等價 B.(p++)->len與p++->len不等價 C.++p->len使p增1 D.++p->len使p指向的結構變量中成員len增1 D 解析:根據運算符的優先級,->的優先級高于++,++的優先級高于*, 所以首先執行->然后執行++,所以A選項錯誤。B選項是等價的。 11 已有聲明“int i; char c, s[20];”,現要求從輸入序列“123, b45efg”中將123看作十進制整數字符串轉換為int整型數據后讀入變量i,將'b'讀入變量c、將"45efg"讀入數組s,正確的scanf語句應為_______。 A.scanf("%d,%c%s",i,c,s); B.scanf("%d,%c%s",&i,&c,s); C.scanf("%d%c%s",&i,&c,s); D.scanf("%d%c%c%s",&i,&c,s); B 解析: A選項錯誤,用scanf獲取值時,變量必須以地址的形式,i,c要修改為&i,&c。C選項沒有在%d與%c之間加,號,這樣導致將符號,賦值給變量c了。D選項中格式符與變量不匹配,s是地址,卻對應了%c。 5 以下函數的功能是__________。 A.求字符串s和字符串t的長度差 B. 按ASCII編碼值比較字符串s和字符串t C. 連接字符串s和字符t D. 將字符串s復制到字符串t中 B 解析:for循環的作用比較*s是否等于*t,如果相等就執行下一次循環,否則for循環停止,具體見視頻詳細解析 10 C填空題 以下程序運行時,輸出結果中第一行是_________,第二行是_________。 dcbaef@dcbfea 解析:具體見視頻詳細解析 10 以下程序運行時,輸出結果中第一行是_________,第二行是_________。 *#@#*# 解析:具體見視頻詳細解析 6 以下程序運行時,輸出結果中第一行是_________,第二行是_________。 6@2 解析:具體見視頻詳細解析 7 以下程序運行時,輸出結果中第一行是_________,第二行是_________。 ABCDE@AB 解析:具體見視頻詳細解析 10 以下程序運行時,輸出結果中第一行是__________,第二行是__________。 Mongland@Korea 解析:具體見視頻詳細解析 7 C操作題 一、(完善程序): 【要求】 1. 打開T盤中的文件myf0.c,按以下程序功能完善文件中的程序。 2. 修改后的源程序仍保存在T盤myf0.c文件中,請勿改變myf0.c的文件名。 【程序功能】 某人有5張1塊,3張2塊和4張3塊的游戲幣,求解使用這些游戲幣能組合出多少種不同面值的游戲活動。 【運行結果】 24 kinds: 0,3,6,9,12,2,5,8,11,14,4,7,10,13,16,15,18,1,17,19,20,21,22,23, 【待完善的源程序】 #include #include int getZuhe( (1) ) { int i,j,k,m,s,n=0; for (i=0;i<6;i++) for (j=0;j<4;j++) for (k=0;k<5; k++) { s= (2) ; for (m=0;m if(s==a[m]) break; if( (3) ) a[n++]=s; } return n; } int main() { int k, kind; int a[120]={0}; kind=getZuhe(a); printf("\n%d kinds:",kind); for (k=0; (4) ;k++) printf("%d,", a[k]); getch(); return 0; } int a[]@i+2*j+k*3或i*1+j*2+k*3@m==n或m>=n@k 解析: (1) int a[] (2) i+2*j+k*3 (3) m==n或m>=n (4) k 具體見視頻詳細解析 二、(改錯題): 【要求】 1. 打開T盤中的文件myf1.c,按以下程序功能改正文件中程序的錯誤。 2. 可以修改語句中的一部分內容,調整語句次序,增加變量聲明或預處理命令,但不能增加其他語句,也不能刪去整條語句。 3. 修改后的源程序仍保存在T盤myf1.c中,請勿改變myf1.c的文件名。 【程序功能】 函數int fun(int num[],int n,char res[][50])的功能是對num指向的數組中n個整數中的每個整數r尋找滿足等式“xyz+yzz=r”的x、y、z(x、y、z分別代表一位十進制數字)。如果找到一組x, y, z使得等式成立則生成一個等式字符串存儲到res數組的一行中,如果未找到就將“not found for”字符串存入res數組的一行中,函數返回num數組中滿足上述等式的整數個數。 函數void itostr(int n,char *s)的功能是將整數n轉換為一個十進制表示的字符串存入s指向的數組中。 【測試數據與運行結果】 測試數據: 762, 145, 678 輸出: found 2 equations for 3 nums 251+511=762 not found for 145 334+344=678 【含有錯誤的源程序】 #include #include #include int main() { int fun(int num[],int n,char res[][50]); int num[3]={762,145,678}; char res[10][50],ct,i; ct=fun(num,3,res); printf("found %d equations for %d nums\n",ct,3); for(i=0;i<3;i++) puts(res); getch(); return 0; } void itostr(int n,char *s) { int i=0,j; char ch; while(n>10) { s[i++]=n+'0'; n=n/10; } s[i]='\0'; j=0,i--; while(j { ch=s[i]; s[i]=s[j]; s[j]=ch; i--,j++; } } int fun(int num[],int n,char res[][50]) { int x,y,z,i,j,k,f,ct=0; char tmp[50]; for(k=0;k { for (f=0,i=100;i<=999;i++) { y=i/10; z=i; if (i+100*y+10*z+z=num[k]) { itostr(i, tmp); strcpy(res[k],tmp); strcat(res[k],"+"); itostr(100*y+10*z+z,tmp); strcat(res[k],tmp); strcat(res[k],"="); itostr(num[k],tmp); strcat(res[k],tmp); f=1; ct++; break; } } if(!f) { strcpy(res[k],"not found for "); itostr(num[k],tmp); strcat(res[k],tmp); } } return ct; } puts(res[i])@i+100*y+10*z+z==num[k]@n>0@y=i/10; 解析: (1) puts(res[i]) (2) i+100*y+10*z+z==num[k] (3) n>0 (4) y= i/10; 具體見視頻詳細解析 三、(編程題): 【要求】 1. 打開T盤中的文件myf2.c,在其中輸入所編寫的程序。 2. 數據文件的打開、使用、關閉均用C語言標準庫中緩沖文件系統的文件操作函數實現。 3. 請勿改變myf2.c的文件名。 【程序功能】 計算一個歌唱比賽參賽選手的得分。 假設有N個裁判給一個參賽選手打分(分值在0到10之間)。選手得分計算方法為:去掉一個最高分和一個次高分,再去掉一個最低分和一個次低分,所剩分數的平均分作為該參賽選手的最后得分。 【編程要求】 1. 編寫函數double getscore(double *score) 。函數形參score指向的數組中存放N個裁判給一個參賽選手的打分。函數功能是依據score數組中的分數按上述方法計算一個參賽選手的最后得分,并作為函數返回值返回。 2. 編寫main函數。函數功能是聲明數組score并用測試數據初始化,用score數組作為實參調用getscore函數計算數組score中參賽選手的最后得分,將score數組中數據及該選手的最后得分輸出到屏幕及文件myf2.out中。最后將考生本人準考證號輸出到文件myf2.out中。 【測試數據與運行結果】 測試數據: 9.47 9.56 9.96 10.00 9.75 9.78 9.95 9.86 9.82 9.18 輸出: 9.47 9.56 9.96 10.00 9.75 9.78 9.95 9.86 9.82 9.18 last score = 9.79 #include #include #define N 10 double getscore(double *score) { int i; double num,sum=0,max=score[0],min=score[0],max2=-1,min2=11; for(i=0;i { if(score[i]>max) max=score[i]; if(score[i] } for(i=0;i { if(score[i]>max2&&score[i] if(score[i] } num=i-4; for(i=0;i { sum=sum+score[i]; } sum=sum-max-max2-min-min2; return sum/num; //返回參賽選手的最后得分 } int main() { int i; double score[20]={9.47,9.56,9.96,10.00,9.75,9.78,9.95,9.86,9.82,9.18},average; FILE *fp; if((fp=fopen("myf2.out","w"))==NULL) { printf("\nCan't open the file!"); exit (0);} average=getscore(score); printf("\n測試數據:\n"),fprintf(fp,"\n測試數據:\n"); for(i=0;score[i]!='\0';i++) printf("%6.2lf",score[i]),fprintf(fp,"%6.2lf",score[i]); printf("\n"),fprintf(fp,"\n"); printf("last score=%4.2lf\n",average),fprintf(fp,"last score=%4.2lf\n",average); printf("\nMy number is:001122\n"),fprintf(fp,"\nMy number is:001122\n"); fclose(fp); return 0; } |