2015年秋江蘇省計算機二級VC++真題試卷 |
1. 下列移動通信技術標準中,中國移動通信集團公司(簡稱"中國移動")采用的第四代移動通信(4G)技術標準是_______。 A.WCDMA B.TD-SCDMA C.TD-LTE D.FDD-LTE C 解析:中國移動4G的通信技術標準是TD-LTE 4 2. 二進制數(1010)與十六進制數(B2)相加,結果為__________ 。 A . 八進制274 B. 八進制273 C.八進制314 D.八進制313 A 解析: 二進制1010轉換為十進制是1*2^3+1*2^1=10,十六進制B2轉換為十進制是11*16^1+2*16^0=178。所以是10+178=188。188轉換為8進制是除以8逆序取余法,所以是274八進制 1 3. 下列有關PC及其組成部件的敘述中,錯誤的是______。 A.主板BIOS存儲器和CMOS存儲器都是易失性存儲器,它們均由主板上的電池供電 B.芯片組是PC各組成部分相互連接和通信的樞紐,它是與CPU芯片及外設同步發展的 C.主板上所能安裝的內存最大容量及可使用的內存條的類型在一定程序上由芯片組決定 D.作為高速緩沖存儲器的cache通常是SRAM,主存儲器通常是DRAM A 解析:BIOS屬于非易失性存儲器,不需要供電。CMOS屬于易失性存儲器,需要由主板上的電池供電。 2 4. 目前廣泛使用的打印機主要有針式打印機、激光打印機和噴墨打印機。下列有關這些打印機的敘述中,錯誤的是______。 A.9針的針式打印機是指打印頭由9根鋼針組成 B.激光打印機的主要消耗材料之一是炭粉/硒鼓 C.噴墨打印機與激光打印機的打印速度均用每分鐘打印的頁數來衡量 D.目前激光打印機均為黑白打印機,而噴墨打印機均為彩色打印機 D 解析: 激光打印機與噴墨打印機均有黑白與彩色打印機 2 5. 某計算機系統中,西文使用標準ASCII碼、漢字采用GB2312編碼。設有一段純文本,其機內碼為CB F5 D0 B4 50 43 CA C7 D6 B8,則在這段文本中含有:_________。 A.2個漢字和1個西文字符 B.4個漢字和1個西文字符 C.8個漢字和2個西文字符 D.4個漢字和2個西文字符 D 解析:1個漢字是由兩個字節構成的,且機內碼都大于127,題目給出的機內碼都是十六進制數表示的,轉換為十進制后,CB,F5,D0,B4,CA,C7,D6,B8都是高于127的,因為兩個字節構成一個漢字,所以是4個漢字,50,43轉換為十進制后不高于127所以是2個西文。 3 6. 下列關于Microsoft Office軟件(以2007/2010版本為例)功能的敘述中,錯誤的是_____。 A.Word具有中文簡繁(體)轉換功能 B.Excel處理的數據可以來自Access數據庫 C.PowerPoint演示文稿可以設置為隨機放映 D.在Access中,利用查詢可以修改表中的數據 C 解析:PPT無法設置為隨機放映。 6 7. 因特網中的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 解析:在IPv4地址中,共有4個數字,如果第1個數字<=127屬于A類地址,如果第1個數字大于等于128且小于192的屬于B類地址,如果第1個數字>=192且小于224的屬于C類地址。所以選項A與選項B是A類IP地址,選項C是B類IP地址,選項D是C類IP地址。 4 8. 目前有線電視( CATV)系統已經廣泛采用數字技術傳輸電視節目。下列是有關數字有線電視的相關敘述,其中錯誤的是______。 A.數字有線電視采用光纖同軸電纜混合網,其主干線部分采用光纖連接到"小區" B.數字有線電視網絡依賴于時分多路復用技術 C.借助數字有線電視網絡接人因特網,需要專用的Cable Modem或互動式機頂盒 D.借助數字有線電視網絡接人因特網的多個終端用戶共享連接段線路的帶寬 B 解析: 數字有線電視網絡依賴于頻分多路復用技術 4 9. 目前Windows操作系統支持多種不同語種的字符集,即使同一語種(如漢語)也可有多種字符集。下列字符集中,不包括"臺"、"灣"等繁體漢字的是_______。 A.GBK B.Big5 C.GB 2312 D.GB 18030 C 解析:GB2312是我國頒布的第1個漢字編碼標準,不包括繁體漢字。 5 10. 由于采用的壓縮編碼方式及數據組織方式的不同,圖像文件形成了多種不同的文件格式。在下列4種數字圖像格式中,用數碼相機、智能手機拍照時通常保存為____。 A.BMP格式 B.JPEG格式 C.GIF格式 D.TIF格式 B 解析:BMP屬于Windows程序設計使用的圖像格式。JPEG屬于壓縮編碼格式,GIF用于網頁動畫,TIF屬于掃描儀或桌面出版格式。 5 1. 撤銷一個對象時,系統會自動調用______。 A.友元函數 B.缺省構造函數 C.析構函數 D.拷貝構造函數 C 解析:創建對象時自動調用構造函數,撤銷一個對象時,自動調用析構函數。 7 2. 以下關于類的靜態數據成員的描述中,錯誤的是______。 A.說明靜態數據成員時要在前面加上修飾符static B.靜態數據成員需要在類體外進行初始化 C.可以通過類名或對象名引用類的靜態數據成員 D.靜態數據成員不是所有對象共有的 D 解析: 靜態數據成員是所有對象共有的 7 3. 設有語句序列"char str[15]; cin> >str;",當輸入為”Object windows programming!”時,數組str中保存的是____。 A. Object Windows Programming\0 B. Object C. Object Windows D. Object Windows Programming! B 解析: 通過cin輸入時遇到空格,回車都認為輸入結束,所以結果是Object?梢酝ㄟ^cin.getline(str,15)來獲取前面的14個字符Object Windows賦值給變量str。 5 4. 下列運算符中,不能被重載的是 _____。 A.成員運算符 B.[] C.new D.!= A 解析:有5個運算符不能被重載,包括 ., .*, ->*,::,?:共5個,其中 .屬于成員運算符 8 5. C++中,this指針____。 A.必須顯式聲明 B.創建對象后,將指向該對象 C.屬于某個成員函數 D.可以被靜態成員函數使用 B 解析:this指針是隱含的,它明確地表示出了成員函數當前操作的數據所屬的對象,當一個對象調用成員函數時,編譯程序先將對象的地址復制給this指針,然后調用成員函數,每次成員函數存取數據成員時,則隱含使用this指針。 7 6.[程序] #include<iostream.h> void swap (int &a,int b) { int temp; temp = a++ ; a=b++; b= temp; cout<<a<< ", "<<b<<endl; } void main( ) { int a=2,b=6; swap(a,b) ; cout<<a<<","<<b<<endl; } 程序輸出的第一行是_____________, 第二行是_____________。 6,2@6,6 解析: 因文字解析不如視頻清晰,具體見視頻詳細講解 6 7.[程序] 程序輸出的第一行是_____________, 第三行是_____________, 第五行是_____________。 #include <iostream.h> class S { int x; public : void setx (int i){ x=i; } int getx() { return x; } }; void main() { S *p,sample[40] ; sample[0].setx(3) ; for(int i=1; i<39; i++) { sample[i].setx(sample[i-1].getx()+1) ; } for(i=0; i<36; i+=7){ p = sample+i; cout<<p->getx()<<endl; } cout<<endl; } 3@17@31 解析: 因文字解析不如視頻清晰,具體見視頻詳細講解 7 8.[程序] 程序輸出的第一行是_____________, 第二行是_____________, 第三行是_____________。 #include <iostream.h> class Sample { protected : int x; public : Sample(){ x=0; } Sample(int val){ x= val; } void operator++( ){ x++ ; } }; class Derived : public Sample{ int y; public : Derived():Sample(){ y=0; } Derived(int val1,int val2) : Sample (val1){ y = val2 ; } void operator--( ) { x-- ; y-- ; } void disp() { cout<<"x="<<x<<" y="<<y<<endl; } }; void main () { Derived d(2,7); d.disp( ) ; ++d; d.disp(); --d; --d; d.disp(); } x=2 y=7@x=3 y=7@x=1 y=5 解析: 因文字解析不如視頻清晰,具體見視頻詳細講解 7 9.[程序] 程序輸出的第一行是_____________, 第二行是_____________。 #include<iostream.h> int c; class A { int a; static int b; public: A(){ a=0; c=0; } void seta( ) { a++ ; } void setb( ) { b++ ; } void setc( ) { c++ ; } void display( ) { cout<<a<< ","<<b<< ","<<c<<endl; } }; int A::b=0; void main ( ) { A a1,a2; a1.seta( ); a1.setb( ); a1.setc( ); a1.display( ) ; a2.seta( ) ; a2.setb ( ) ; a2.setc( ) ; a2.display( ) ; } 1,1,1@1,2,2 解析: 因文字解析不如視頻清晰,具體見視頻詳細講解 7 【操作題】 10.完善程序 【題目】以下程序首先利用兩個元素值遞增的數組建立兩條結點值遞增的鏈表A和B,然后將A、B合并成鏈表C,C中的結點值仍然保持遞增。 程序輸出為: 有序鏈表A結點值為: 1 5 8 12 15 18 20 25 30 60 有序鏈表B結點值為: 2 3 8 10 15 28 33 45 90 A、B兩有序鏈表合并后得到的有序鏈表C的結點值為: 1 2 3 5 8 8 10 12 15 15 18 20 25 28 30 33 45 60 90 [程序] #include <iostream.h> typedef struct Node { int data; Node *next; }*LinkList; LinkList create(int *a,int n){ LinkList p1,p2, head; int i=0; head =new Node; head->data = a[i++] ; p2 = head; while ( i<n){ p1 = new Node; p1->data = a[i++] ; p2->next = p1 ; ______(1)______; } p2->next= NULL; return head; } void print( LinkList head) { while(head) { cout.width (4) ; cout<<head->data; ______(2)______; } cout<<endl; } void merge( LinkList A, LinkList B, LinkList &C){ LinkList r; C = NULL; while(A!=NULL && B!=NULL) { if(A->data<=B->data) { if(C==NULL){ C=A; r=A; } else { r->next = A ; r= r->next ; } ______(3)______ ; } else { if( C == NULL){ C=B; r=B; } else { r->next = B ; r = r->next; } B= B->next; } } if(B!=NULL) r->next = B ; else ______(4)______; } void main( ) { int a[ ] = {1,5,8, 12,15,18,20,25,30,60}; int b[ ] = {2,3,8,10,15,28,33,45,90}; LinkList A,B,C; int n = sizeof(a)/sizeof(int) ; A=create( a,n) ; n= sizeof( b)/sizeof( int); B =create(b,n); cout<< "有序鏈表A結點值為:\n "; print(A); cout<< "有序鏈表B結點值為:\n "; print(B); merge(A,B,C); cout<<" A、B兩有序鏈表合并后得到的有序鏈表C的結點值為:\n "; print(C); } 【要求】 (1)打開T盤中的myfa.cpp文件,根據題目要求及程序中語句之間的邏輯關系對程序進行完善; (2)完善后的源程序文件myfa.cpp必須保存在T盤的根目錄下,供閱卷用。 p2=p1@head = head->next@A =A->next@r->next = A (1)p2=p1 (2)head = head->next (3)A =A->next (4)r->next = A 解析: 因文字解析不如視頻清晰,具體見視頻詳細講解 6 11.改錯題 【題目】以下程序的功能是:將數組看成環形結構,將數組中的元素循環移動k位。若k>0,則循環右移;若k<0,則循環左移;例如,對初始數組{2,3,4,5,6,7,8,9},若k=3,則循環右移3位后變為{7,8,9,2,3,4,5,6};對同樣的初始數組,若k=-5,則循環左移5位也能得到相同的結果。 正確程序的輸入/輸出結果如下(下劃線部分為鍵盤輸入): 原數組:1,2,3,4,5,6,7,8,9,10 請輸入一個整數k : 4 原數組循環移動4位后變為:7,8,9,10,l,2,3 ,4,5,6 含有錯誤的源程序如下: #include <iostream.h> void move(int * a,int n) { int p=a[n-1] ; for(int i=n-1; i>=0; i--) a[i]=a[i-1]; a[i]=a[p]; } void rotate(int a[], int n,int k) { int i; if(k<0) k=n-k; k = k/n; for(i= 0; i<k; i++) move( a,n) ; } void output( int *a,int n) { for(int i= 0; i<n-1; i++) cout<<a[i]<<endl; cout<<a[i]<<endl; } void main() { int a[]={1,2,3,4,5,6,7,8,9,10}; cout<<"原數組:"; output(a,10); cout<<"請輸入一個整數k:"; int k; cin>>k ; rotate( a, 10, k); cout<<"原數組循環移動"<<k<<"位后變為:"; output(a,10); } 【要求】 (1)打開T盤中的myfb.cpp文件,根據題目要求及程序中語句之間的邏輯關系對程序中的錯誤進行修改; (2)改錯時,可以修改語句中的一部分內容,增加少量的變量說明、函數原型說明或編譯預處理命令,但不能增加其他語句,也不能刪除整條語句; (3)改正后的源程序文件myfb.cpp必須保存在T盤的根目錄下,供閱卷用。 for(int i=n-1; i>0; i--)@a[i]=p@ k=n+k@k=k%n (1)for(int i=n-1; i>=0; i--) 修改為 for(int i=n-1; i>0; i--) (2)a[i]=a[p]; 修改為a[i]=p; (3)k=n-k; 修改為:k=n+k; (4) k = k/n; 修改為k=k%n; 4分 解析: 因文字解析不如視頻清晰,具體見視頻詳細講解 6 12.編程題 【題目】設數組a派生出數組b的規則為 (1)私有數據成員如下: ·double a[5],b[5]:數組a,派生數組b。 (2)公有成員函數如下: ·Array( double t[],int n):構造函數,用參數t的前n個元素初始化成員數組a。 ·double ave():計算并返回數組a中所有元素的平均值。 ·double dat():計算并返回數組a中全部n個元素的方差。 ·void fun():根據題意派生數組b。注:頭文件math.h中函數double pow( double x, double y)的返回值為x的y次方。 ·void print():輸出成員數組。 (3)定義數組并測試類Array 在主函數中定義一個數組,并使用該數組對類Array進行測試,要求輸出原數組和派生數組。 輸出示例: 原數組a: 6.1 2.6 15.8 4.3 1.72 派生數組b: 0. 078 6135 0.0619398 0.0126703 0.0738 0.0541302 【要求】 打開T盤中的myfc.cpp文件(空文件),編寫后的源程序文件myfc.cpp必須保存在T盤的根目錄下,供閱卷用。 答案 #include <iostream> #include <math.h> using namespace std ; //1分 class Array { double a[5] ,b[5] ; //1分 public: Array(double t[] ,int n) //3分 { for(int i= 0; i<n; i++) a[i]=t[i]; } double ave() //3分 { double t=0; for(int i= 0; i<5; i++) t+=a[i]; return t/5; } double dat( ){ //3分 double d=0,u; u=ave( ); for(int i=0; i<5; i++) d+=(a[i]-u)*(a[i]-u); d = d/5 ; return d; } void fun() //4分 { double pi= 3.1415926,e= 2.71828; double t1 =sqrt(2 * pi * dat()) ,t2; for(int i= 0; i<5; i++) { t2=-(a[i]-ave())*(a[i]-ave())/(2*dat()); b[i] =pow(e,t2)/t1; } } void print( ) //3分 { int i; cout<< "原數組a:\n "; for(i=0; i<5; i++) cout<<a[i]<<'\t'; cout<<endl; cout<<"派生數組b:\n"; for(i=0; i<5; i++) cout<<b[i]<<'\t'; cout<<endl; } }; int main() //4分 { double d[5] ={6.1,2.6,15.8,4.3,1.72}; Array test(d,5) ; test.fun( ) ; test.print( ) ; return 0; } |