2009年春江蘇省二級VC++考試試題與答案 |
絕密★啟用前 2009年春 江蘇省高等學校非計算機專業學生 計算機基礎知識和應用能力等級考試 二級試卷 試卷語種: Visual C++ 說 明: 1.本試卷包括計算機基礎知識部分和程序設計部分,考試時間共120分鐘 2.本試卷滿分為60分,分選擇題和填空題,試卷不分A、B類型; 3.計算機基礎知識部分全部是選擇題(20分),程序設計部分分為選擇題(10分)和填空題(30分)兩種; 4.選擇題用答題卡答題。每一項有A、B、C、D四個可供選擇的答案,請選擇其中一個你認為正確的答案,用HB鉛筆涂寫在答題卡的相應答題號內。每選對一項得1分,不選或選錯不得分; 5.填空題用答題紙答題。請將答案用藍、黑色鋼筆或圓珠筆填寫在答題紙的相應答題號內,每個答案只占一行,不得換行。每填對一個答案得1分,不填或填錯不得分; 6.請認真填寫并仔細核對答題卡和答題紙上的學校名稱、準考證號和姓名是否填寫正確。 7.考試結束時將試卷、答題卡和答題紙放在桌上,不得帶走。待監考人員收點 第一部分計算機基礎知識 1. 在下列有關現代信息技術的一些敘述中,正確的是 1 。 A.集成電路是20世紀90年代初出現的,它的出現直接導致了微型計算機的誕生 B.集成電路的集成度越來越高,目前集成度最高的已包含幾百個電子元件 C.目前所有數字通信均不再需要使用調制解調技術和載波技術 D.光纖主要用于數字通信,它采用波分多路復用技術以增大信道容量‘ . 2. 最大的10位無符號二進制整數轉換成八進制數是 2 .。 A.1023 B.1777 C.1000 D.1024 3. 在下列有關目前PC機CPU的敘述中,錯誤的是 3 。 A.CPU芯片主要是由Intel公司和AMD公司提供的 B."雙核"是指PC機主板上含有兩個獨立的CPU芯片 C.Pentium 4微處理器的指令系統由數百條指令組成 D.Pentium 4微處理器中包含一定容量的Cache存儲器 4. 在下列有關當前PC機主板和內存的敘述中,正確的是 4 。 A.主板上的BIOS芯片是一種只讀存儲器,其內容不可在線改寫 B.絕大多數主板上僅有一個內存插座,因此PC機只能安裝一根內存條 C.內存條上的存儲器芯片屬于SRAM(靜態隨機存取存儲器) D.目前內存的存取時間大多在幾個到十幾個ns(納秒)之間 5. 在下列有關PC機輔助存儲器的敘述中,正確的是 5 。 A.硬盤的內部傳輸速率遠遠大于外部傳輸速率 B.對于光盤刻錄機來說,其刻錄信息的速度一般小于讀取信息的速度 C.使用USB 2.0接口的移動硬盤,其數據傳輸速率大約為每秒數百兆字節 D.CD-ROM的數據傳輸速率一般比USB 2.0還快 6. 在下列PC機I/O接口中,數據傳輸速率最快的是 6 。 A.USB 2.0 B.IEEE-1394 C.IrDA (紅外) D.SATA 7. 計算機軟件可以分為商品軟件、共享軟件和自由軟件等類型。在下列相關敘述中,錯誤的是 7 。 A.通常用戶需要付費才能得到商品軟件的使用權,但這類軟件的升級總是免費的 B.共享軟件通常是一種"買前免費試用"的具有版權的軟件 C.自由軟件的原則是用戶可共享,并允許拷貝和自由傳播 D.軟件許可證是一種法律合同,它確定了用戶對軟件的使用權限 8. 人們通常將計算機軟件劃分為系統軟件和應用軟件。下列軟件中,不屬于應用軟件類型的是 8 A.AutoCAD B.MSN C.Oracle D.Windows Media Player 9. 在下列有關Windows 98/2000/XP操作系統的敘述中,錯誤的是 9 。 A.系統采用并發多任務方式支持多個任務在計算機中同時執行 B.系統總是將一定的硬盤空間作為虛擬內存來使用 C.文件(夾)名的長度可達200多個字符 D.硬盤、光盤、優盤等均使用FAT文件系統 10. 在下列有關算法和數據結構的敘述中,錯誤的是 10 。 A.算法通常是用于解決某一個特定問題,且算法必須有輸入和輸出 B.算法的表示可以有多種形式,流程圖和偽代碼都是常用的算法表示方法 C.常用的數據結構有集合結構、線性結構、樹形結構和網狀結構等 D.數組的存儲結構是一種順序結構 11•因特網的IP地址由三個部分構成,從左到右分別代表 11 。 A.網絡號、主機號和類型號 B.類型號、網絡號和主機號 C.網絡號、類型號和主機號 D.主機號、網絡號和類型號 12•在下列有關ADSL技術及利用該技術接入因特網的敘述中,錯誤的是 12 。 A.從理論上看,其上傳速度與下載速度相同 B.一條電話線上可同時接聽/撥打電話和進行數據傳輸 C.利用ADSL技術進行數據傳輸時,有效傳輸距離可達幾公里 D.目前利用ADSL技術上網的計算機一般需要使用以太網網卡 13.人們往往會用"我用的是 指的是數據通信中的 13 指標。 A.最高數據傳輸速率 B.平均數據傳輸速率 C.每分鐘數據流量 D.每分鐘IP數據包的數目 14•計算機局域網按拓撲結構進行分類,可分為環型、星型和 14 型等。 A.電路交換 B.以太 C.總線 D.對等 15.網絡信息安全主要涉及數據的完整性、可用性、機密性等問題。保證數據的完整性就是 15 。 A.保證傳送的數據信息不被第三方監視和竊取 B.保證發送方的真實身份 C.保證傳送的數據信息不被篡改 D.保證發送方不能抵賴曾經發送過某數據信息 16.某計算機系統中,西文使用標準ASCII碼、漢字采用GB2312編碼。設有一段純文本,其機內碼為CB F5 DO B4 50 43 CA C7 D6 B8,則在這段文本中含有: 16 。 A.2個漢字和1個西文字符 B.4個漢字和2個西文字符 C.8個漢字和2個西文字符 D.4個漢字和1個西文字符 17.以下關于漢字編碼標準的敘述中,錯誤的是 17 。 A.GB 2312標準中所有漢字的機內碼均用雙字節表示 B.我國臺灣地區使用的漢字編碼標準BIG 5收錄的是繁體漢字 C.GB 18030漢字編碼標準收錄的漢字在GB 2312標準中一定能找到 D.GB 18030漢字編碼標準既能與UCS(Unicode)接軌,又能保護已有中文信息資源 18.若波形聲音未進行壓縮時的碼率為64kb/s,已知取樣頻率為8kHz,量化位數為8,那么它的聲道數是 18 。 A.1 B 19.從信息處理的深度來區分信息系統,可分為業務處理系統、信息檢索系統和信息分析系統等。在下列幾種信息系統中,不屬于業務處理系統的是 19 。 A.DSS B.CAI C.CAM D.OA 20.在下列有關信息系統開發、管理及其數據庫設計的敘述中,錯誤的是 20 。 A.常用的信息系統開發方法可分為結構化生命周期方法、原型法、面向對象方法和CASE方法等 B.在系統分析中常常使用結構化分析方法,并用數據流程圖和數據字典來表達數據和處理過程的關系 C.系統設計分為概念結構設計、邏輯結構設計和物理結構設計,通常用E-R模型作為描述邏輯結構的工具 D.從信息系統開發過程來看,程序 21.下列關于"for(e1;e2;e3) s1;"的描述中不正確的是______ A.存在"for(;;) s1;"的情況 B.表達式e1和e3可為空,但e2不能為空 C.表達式e2的值可增可減 D.循環體s1可以為空,但分號(;)必須有 22.下列函數定義中存在語法錯誤的是______ A.void f5();f6(){f5;cout<<200;} void f5(){cout<<100;} B.void f3(){cout<<100;} void f4(){tout<<200;} C.void f7(int a){if(a)f7(--a);cout<””;} D.void f1(){cout<<100;void f2(){tout<<200;}} 23.設有說明語句; int a=7,b=12,e; 以下表達式選項中,e值為2的是_______ A.e=b%=(a-a%5) B.e=b%=(a%=5) C.e=b%=b+1-a%5 D.e=(b%=a)-(a%=5) 24.以下敘述中不正確的是_____ A.一個函數中可以有多個return語句 B.一個函數中可以沒有return語句 C.一個return語句可返回多個值 D.一個return語句可不返回值 25.以下雙目運算符中要求兩個操作數均為整型的運算符是______。 A.|| B.&& C./ D % 26.以下對break語句的描述中,不正確的是______ A.break語句可用在循環語句中,其作用是結束本層循環的執行 B.break語句可用在switch語句中,其作用是結束該switch語句的執行 C.break語句可用在if語句中,其作用是結束該if語句的執行 D.break語句在同一循環體中可以多處使用 27.以下對類的析構函數的敘述中,正確的是______ A.析構函數完成類的初始化 B.析構函數完成對象的初始化 C.析構函數完成撤銷對象的相關處理 D.析構函數和成員函數一樣可以顯式地調用 28.以下有關多態性的敘述中不正確的是________ 。 A.C++語言的多態性分為編譯時的多態性和運行時的多態性 B.編譯時的多態性通過重載函數來實現 C.運行時的多態性通過虛函數來實現 D.函數重載和虛函數均可實現編譯時的多態性和運行時的多態性 29.設已定義了一個類名為MyClass的類: MyClass sl,*s2,**s3,*s4 E2]; 當該語句執行后,調用該類的構造函數的次數是 _______ A.1 B. 30.在公有派生的情況下,派生類中定義的成員函數能訪問其基類的_________。 A.公有成員和保護成員 B.公有成員和私有成員 C.保護成員和私有成員 D.公有成員、保護成員和私有成員 二、填空題(請將答案填寫在答題紙的相應答題號內,每個答案只占一行) ●基本概念題(共5分) 1.以下循環語句的循環體的執行次數為 ( ) 。 for(int s=0,j=1;j<=10;s+=j);j++; 2void類型的指針是其指向變量的數據類型是不固定的,對該類型指針進行操作時,通常應進行________ 3.C++變量的存儲類型有自動類型、靜態類型、 _______和__________。 4.c++函數的參數傳遞方式有三種: (_________) 、指針傳遞和引用傳遞。 ●閱讀程序題(共13分) 5.[程序](2分) #include void fa(int&a,int&b) {int t=a;a=b;b=t;} void fb(int a,int b) { int t=a;a=b;b=t;} void main(void) {int c[2]={100,200},d[2]={300,400}; fa(c[0],c[1]); cout< rb(d[0],d[1]); cout< } 程序輸出的第一行是( ) ,第二行是( )。 6.[程序](2分) #include void main(void) { int n=0,m=0; for(int i=0;i<3;i++) for(int j=0;j<3;j++) if(j>=i)n++;m++; cout< }. 程序輸出的第一行是( ) ,第二行是( ) 。 7.[程序](2分) #include int a=10; void main(void) { int a=20,b=30; { int a=0,b=0; for(int i=1;i<4;i++){ a=a+b;b=::a+b; } cout<程序輸出的第一行是 ( ) ,第二行是( ) 。 8.[程序](3分) #include void f2(int x[],int n); void fl(int x[],int n) { cout< x[n]++; if(n<3){n=n+2;f2(x,n);} } void f2(int x[],int n) {cout< x[n]++; if(n<3){n=n+3;fl(x,n); } } void main(void) {int y[7]={3,4,5,6,7,8,9}; f1(y,0); for(int i=0;i<5;i++)cout< cout< } 程序輸出的第一行是( ) ,第二行是( ) ,第三行是( ) 9.[程序](2分) #include class A{ int n; public: static int s; A(int a){n=a;} void add(){s+=n;} void print(){cout< int get(){return n;} }; int A::s=0; class B:public A{ int y; public: B(int b,int c):A(c){y=b;} void p(){cout< }; void main(void) { A a1(10),a2(20); B b1(5,15),b2(10,15); a1.add();a2.add();b1.add();b2.add(); a1.print();a2.print(); b1.p();b2.p(); } 程序輸出的第一行是( ) ,第三行是( )。 10.[程序](2分) #include class A{ int x; public: A(int a){x=a;} virtual void print(){cout<<"x="< void fun(){print();} }; class B:public A{ int y: public: B(int a,int b):A(a){y=b;} void print(){cout<<"y="< void fun(){print();} }; class C:public B{ int z; public: C(int a,int b,int C):B(a,b){z=c;} void print(){cout<<"z="< void fun(){print();} }; void main(void) { A a1(5),*p1; B bl(10,15); C c1(20,30,40); a1.fun();b1.fun();c1.fun(); pl=&b1; pl->fun();p1=&c1;pl->fun(); } 程序輸出的第四行是() ,第五行是( ) ●完善程序題(共12分) 11.以下程序的功能是:采用插入排序的方法將數組s1中的元素升序排序,并刪除重復的元 素(值相同的元素只保存一個)。函數insert(int p[],int c,int x)將整數x插入到已排序 的數組P中(并仍保持升序),參數c為數組P的元素個數。函數sort(int s[],int n)將數 組s中的數據按升序排序。先將s[0]放到臨時數組tern[0]中,然后,依次從s中取一個 元素,若該元素不在數組tem中,則調用函數insert()將該元素插入到數組tern中。最后 將數組tem拷貝到數組s中。 [程序](4分) #include void insert(int p[],int c,int x) { for(int i=0;i if(p[i]>x)break; if(i==c)_____________; else{for(int J=c;j>i;j--)p[j]=P[j-1];________;} } int sort(int s[],int n) {int tem[200]; int len,j,k; tem[O]=s[O]; len=1: //len記錄數組tern中的元素個數 for(j=1;j for(k=0;k if(s[j]==tem[k])_____________; } if(k>=len){ insert(_________);len=len+1; } } for(j=0;j retum len; //返回數組的大小 } ’ void main(void) {int s1[200]={34,22,11,55,66,30,22,100,66}; int n;n=sort(s1,9); for(int i=0;i cout<<'\n'; } 12.以下程序通過重載運算符+、*實現集合(用數組表示)的并(u),交(n)運算。集 的元素不能相同。兩個集合的并包含了兩個集合的所有元素。兩個集合的交僅包含 集合中共同存在的元素。設sl={1,2,3,4,5,6},s2={3,5,7,9,11}。s1 u s2={1, 4,5,6,7,9,11},s1 n s2={3,5}。 [程序](4分) #include class Set{ float x[20]; int size; public: int In(float e,int n) //元素e已在集合x中,則返回1,否則返回0 { int flag=0; for(int i=o;i return flag; } Set(float a[],int n) ‘ { x[0]=a[0];size=1; for(int i=1;i if(In(a[i],size)==0){ (________) ; size++; } } Set(){size=0;} Set operator +(Set); Set operator *(Set); Set &operator =(Set&); int GetSet(float y[]) { for(int i=0;i return size; } void print() { for(int i=0;i cout<<'\n'<<"size=”< }; } Set Set::operator +(Set a) { Set tem; for(int i=0;i tem.size=size; for(i=0;i if(tem.In(a.x[i]i,tern.size)==0)tem.x[tem.size++]=a.x[i]; return tem; } Set Set::operator *(Set a) { Set tem; tem.size=0; for(int i=0;i if(a.In(x[i],a.size)==1) tem.x[tem.size++]=x[i]; retum tem; } Set &Set::operator =(Set &a) {for(int i=0;i (__________) ; return *this; } void main(void) {float b1[6]={1,2,3,4,5,6}; float b2[6]={3,5,7,9,11},b3[6]; Set a1(b1,6),a2(b2,5),a3,a4,a5; a3=a1+a2;a3.print(); a5=a1*a2;a5.print(); int n=a1.GetSet(b3); for(int i=0;i cout<<'\n'< } 13,以下程序的功能是:先產生一條帶頭結點(鏈表的第一個結點不存儲數據,而是存儲鏈表的 表長,即結點個數)的無序鏈表,每一個結點包含一個整數。然后將該鏈表分成兩條帶頭結 點的鏈表:_條鏈表上的數據均為偶數,另一條鏈表上的數據均為奇數。函數Cleate()創建 了一條帶有頭結點的單鏈表。函數Print()輸出鏈表上各結點的值。函數Split()把鏈表 分割成兩條鏈表,值為奇數的結點保留在原鏈表上,值為偶數的結點移到另一個鏈表中, 并將指向偶數鏈表的頭指針返回。 [程序](4分) #include struct Node{ int data; struct Node *next; }; Node *Create(void) //創建一條帶有頭結點的單向鏈表 { Node *p1,*head; int a; //創建頭結點,頭結點的數據域儲存鏈表的結點個數 head=new Node; head->data=0;head->next=0: cout<<"創建一條無序鏈表,請輸人數據,以-l結束,\n"; cin>>a; while(a!=-1){ p1=new Node; pl->data=a;pl->next=head->next; _________; head->data++; cin>>a: } (___________) ; } void Print(Node *h) { h=h->next; while(h){eout< cout< } Node *Split(Node *&link) //link是-個帶頭結點的單鏈表 {Node *pl=link,*p2=link->next,*head; head=new Node; head->data=0;head->next=0; while(p2){ if(p2->data%2==O){ p1->next=p2->next;link->data--; p2->next=head->next; __________ ; head->data++; p2=p1->next; } else{pl=p2; ___________;} } return(head); } void main(void) { Node *h1,*h2; hl=Create(); cout<<"輸入的鏈表為:"< Print(h1); h2=Split(h1); cout<<"分割后的奇數鏈表為:"< Print(h1); cout<<"分割后的偶數鏈表為:"< Print(h2); }
一、選擇題 |