2012春江蘇計算機二級VC++筆試考試真題 |
絕密★ 啟用前 2012年春 江蘇省高等學校非計算機專業學生 計算機基礎知識和應用能力等級考試 二級試卷 試卷語種:VC++語言 說 明: 1.本試卷包括計算機基礎知識部分和程序設計部分,考試時間共12 0分鐘; 2.本試卷滿分為60分,分選擇題和填空題,試卷不分A、B類型; 3.計算機基礎知識部分全部是選擇題(20分),程序設計部分分為選擇題(1 0 分)和填空題(30分)兩種; 4.選擇題用答題卡答題。每一項有A、B、C、D四個可供選擇的答案,請選 擇其中一個你認為正確的答案,用HB鉛筆涂寫在答題卡的相應答題號內。 每選對一項得1分,不選或選錯不得分; 5.填空題用答題紙答題。請將答案用藍、黑色鋼筆或圓珠筆填寫在答題紙的 相應答題號內,每個答案只占一行,不得換行。每填對一個答案得1分, 不填或填錯不得分; 6.請認真填寫并仔細核對答題卡和答題紙上的學校名稱、準考證號和姓名是 否填寫正確。 7.考試結束時將試卷、答題卡和答題紙放在桌上,不得帶走。待監考人員收 畢清點后,方可離場。 第一部分 計算機基礎知識 1. 下列有關信息產業、信息化、信息社會等相關的敘述中,錯誤的是___(1)___ 。 A.信息產業是指生產制造信息設備的制造業,不包含信息服務行業 B.信息化是一個推動人類社會從工業社會向信息社會轉變的過程 C.在信息社會中,信息將借助材料和能源的力量產生重要價值而成為社會進步的基本要素 D.目前我國還處于工業化的中期階段,需要大力推進信息化與工業化的融合式發展 2. 下列有關數字技術與微電子技術的敘述中,錯誤的是___(2)___ 。 A.數字技術的處理對象是"比特",它只有兩種狀態(取值) B.在計算機中,經常使用稱為"觸發器"的雙穩態電路來存儲比特,一個觸發器可以存儲1個比特 C.微電子技術以集成電路為核心,現代集成電路所使用的半導體材料主要是硅 D.所有的IC卡均只能存儲數據,不能處理和收發數據 3. 下列有關計算機發展與分類的敘述中,錯誤的是___(3)___ A.人們通常根據計算機采用的主要電子元器件的不同,將計算機的發展劃分為四代 B.由于20世紀90年代計算機網絡的發展,計算機應用進入了"網絡計算模式" C.目前所有的服務器產品均為小型計算機、大型計算機或巨型計算機,PC機不能作 為網絡服務器使用 D.美國的HP、DELL和我國的聯想、方正、同方等均是知名的PC機品牌 4. 下列有關PC機CPU的敘述中,錯誤的是___(4)___。 A.長期以來,多數PC機采用Intel公司生產的CPU芯片 B.Intel Core i7是高端的CPU產品,其中i7表示它采用7個內核的結構 C.目前部分PC機使用AMD公司的CPU芯片,它們與Intel公司的CPU芯片指令 系統基本一致,因此這些PC機相互兼容 D.目前我國也能設計、生產PC機的CPU芯片 。 5. 下列有關PC機主板上CMOS和BIOS的敘述中.錯誤的是___(5)___ 。 A.主板上的CMOS芯片是一種易失性存儲器,它通常使用電池供電 B.BIOS是存儲在主板上閃爍存儲器中的一組程序.每次機器加電時總是首先執行其 中的程序 C.CMOS設置程序存儲在CMOS存儲器中,它與BIOS無關 D.CMOS芯片中存儲了許多配置信息,包括當前的日期與時間、開機密碼等 6. 下列是PC機使用的四種外設接口,其中最新的一種是___(6)___。 A.USB3.0 B.IEEE.1394b C.IDE D.紅外線接口(IrDA) 7. 下列有關掃描儀與數碼相機的敘述中.錯誤的是___(7)___ A.掃描儀分為平板掃描儀、手持掃描儀、滾筒掃描儀等多種類型.相對來說使用平 板掃描儀的較多 B.光學分辨率是掃描儀的主要性能指標,其單位為dpi C.目前數碼相機的成像芯片為CCD或CMOS.它可以將光信號轉換為電信號 D.數碼相機所拍攝的數字圖像以GIF格式存儲在存儲卡中 8. 光盤分為多種不同類型,其容量大小差異較大。對于單面單層、 說.其容量大約為 ___(8)___。 A.670MB B.1.46GB C.4.7GB D.25GB 9. 通用的應用軟件可以分為若干類型,例如文字處理軟件、信息檢索軟件、媒體播放軟 件等。在下列軟件中,不屬于文字處理軟件的是___(9)___ A.WPS B.Adobe Acrobat C.Word D.Access 10.下列有關Windows XP操作系統的敘述中,錯誤的是___(10)___ A.Windows XP分為多種版本.例如家庭版、專業版 B.Windows xP采用并發多任務方式支持多個任務的執行 C.Windows XP一般采用按時間片輪轉的策略調度處理器來執行每個任務 D.虛擬存儲器由主板上的RAM、ROM及顯示卡的顯存聯合組成,它與硬盤無關 11.在下列有關算法的敘述中.錯誤的是___(11)___ A.算法的設計一般采用由細到粗、由具體到抽象的方法 B.算法設計方法有多種,例如枚舉法、迭代法、遞歸法等等 C.算法的表示可以有多種形式,例如文字說明、流程圖表示、偽代碼等 D.一個問題的解決往往可以有多種不同的算法 12.下列有關Microsoft Office 2000(及其后續版本)的敘述中.錯誤的是___(12)___ A.由Word、Excel、PowerPoint創建的文檔,均可以設置打開文件的密碼 B.在Word文檔中,可以插入聲音和視頻對象 C.ExceI工作簿可以包含的工作表數量、工作表的行數與列數均沒有限制,用戶可以 根據需要無限制地增加 D.由PowerPoint創建的演示文稿,用戶可以直接將其保存為HTML文件(即網頁) 13.在下列有關調制解調技術、多路復用技術的敘述中.錯誤的是___(13)___ A.調制與解調技術中使用的"載波"信號,通常是低頻正弦波信號 B.調制技術可以分為幅度調制、頻率調制和相位調制 C.多路復用技術的作用主要是提高傳輸線路的利用率,降低通信成本 D.多路復用技術可以分為時分復用、頻分復用等類型 14.目前IPv4協議只有大約36億個地址.很快就會分配完畢。新的IPv6協議把IP地址 的長度擴展到___(14)___,幾乎可以不受限制地提供IP地址。 A.32位 B.64位 C.128位 D.256位 15.下列與IP地址相關的敘述中.錯誤的是___(15)___ 。 A.IP地址由三個部分組成,從左到右分別代表類型號、網絡號和主機號 B.因特網上的每臺在線主機都必須有IP地址 C.通過ADSL上網時,用戶主機的IP地址通常是由因特網服務提供者動態分配的 D.網絡中的路由器不需要設置IP地址 16。通常所說的TCP/IP協議.是指由100多個協議組成的協議系列(包含下列幾個協議)。 在下列協議中。實現文件傳輸服務主要依賴 ___(16)___ 。 A.NNTP協議 B.FTP協議 C.Telnet協議 D.SMTP協議 17.目前有線電視(CATV)系統已經廣泛采用數字技術傳輸電視節目。下列是有關數字有 線電視的相關敘述.其中錯誤的是___(17)___ 。 A.數字有線電視采用光纖同軸電纜混合網.其主干線部分采用光纖連接到"小區" B.數字有線電視網絡依賴于時分多路復用技術 C.借助數字有線電視網絡接入因特網.需要專用的Cable MODEM或互動式機頂盒 D.借助數字有線電視網絡接入因特網的多個終端用戶共享連接段線路的帶寬 18.下列有關文本與文本處理的敘述中,錯誤的是___(18)___ 。 A.文本信息在計算機中存儲時,漢字均為雙字節編碼,非漢字字符均為單字節編碼 B.文本輸入可以是鍵盤輸入,也可以是聯機手寫輸入、語音輸入等 C.DOC文檔、HTML網頁、PDF文檔均為豐富格式文本,但它們的格式標記方式不同 D.文本中的字符可以使用不同的字體,不同字體的同一個漢字,其機內碼相同 19.在未壓縮的情況下.存儲一幅分辨率為1024×1024的24位彩色數字圖像需要的存儲 空間大約為 ___(19)___ A.24KB B.3MB C.8MB D.24MB 20.文件擴展名通常用于標識文件的類型。下列4個文件擴展名中,屬于數字波形聲音文 件的是___(20)___。 A. .WAV B. .MIDI C. .AVI D. .MPG 第二部分 C++語言程序設計 一、選擇題(用答題卡答題,答案依次填在21--30答題號內) 21.以下C++語句中,不存在語法錯誤的是___(21)___ 。 A.int St=8,this=2;float fH=3; B.int _56=7,a4=1;float FLOAT=2.5; C.int n;cin>>n;int b[n]; D.char st[9]={"a string!"}; 22.以下關于C++虛函數的敘述中,正確的是___(22)___ 。 A.虛函數的類不可作為類的基類 B.可以不定義虛函數的函數體 C.可以定義含有虛函數的類的對象 D.不可定義含有虛函數的類的指針 23.設有變量說明"int a,b;float x,y;",以下C++語句中存在語法錯誤的語句是___(23)___ 。 A.y=x%a; B.y=x+++x; C.y=a+b>x+y?a:b;D.a=x+y; 24.以下有關C++宏定義的說明中,不正確的是___(24)___ 。 A.是以#開頭的行 B.一行中可以存在一條以上的宏定義 C.一條宏定義占一行 D.宏定義可放在函數體內,也可放在函數定義之外 25.以下有關C++析構函數的敘述中,不正確的是___(25)___。 A.析構函數名必須以字符~開頭 B.不可定義析構函數的形式參數 C.析構函數由系統自動調用 D.可以重載析構函數 26.以下有關C++靜態數據成員的描述中,正確的是:___(26)___ 。 A.靜態數據成員不能被成員函數調用 B.靜態數據成員要在構造函數內初始化 C.靜態數據成員必須為公有的 D.靜態數據成員為該類的所有對象所共有的 27.C++中,函數重載是指兩個或兩個以上的函數,其函數名___(27)___ 。 A.不同,但形參的個數或類型相同 B.相同,但返回值類型不同 C.相同,但形參的個數或類型不同 D.相同,但必定是形參的個數相同且其類型不同 28.以下有關繼承的敘述中,正確的是___(28)___ 。 A.派生類繼承基類的所有成員 B.派生類繼承基類的所有非私有成員 C.派生類不繼承基類的析構函數 D.虛基類不能解決多繼承產生的二義性 29.以下有關指針變量的運算中,不正確的是___(29)___ 。 A.一個指針變量可以加減一個整數 B.兩個指針變量在一定條件下可進行關系運算 C.可將NULL賦給任一指針變量 D.兩個指針變量可進行加法運算 30.有關函數調用的描述中,不正確的是___(30)___ 。 A.函數調用語句可實現任何函數的調用 B.一個函數調用可作為另一函數調用的實參 C.函數調用均可出現在表達式中 D.函數之間允許嵌套調用 二、填空題(請將答案填寫在答題紙的相應答題號內,每個答案只占一行) 基本概念題,共5分 1.在C++中,*既是單目運算符,又是雙目運算符。*作為單目運算符時,其功能是___(1)___,* 作為雙目運算符時,其功能是___(2)___ 。 2.在類的派生過程中,將基類說明為虛基類的方法是在基類的類名前加上關鍵字___(3)___ 。 3.C++語言規定,所有函數說明都必須指明返回值類型,沒有返回值的函數應該說明為___(4)___類 型的函數。 4.C++語言提供的基本控制結構分為三種類型;順序結構、選擇結構和___(5)___ 。 閱讀程序題,共13分 5.[程序](2分) #include void main(void) { int x=0,y=0; for(int i=0;i<4;i++){ x++; for(int j=0;j<5;j++){ if(j%2){y++;continue;} x++; } } cout<<"x="< cout<<"y='< } 執行以上程序后,輸出的第一行是___(6)___,第二行是___(7)___。 6.[程序](3分) #include int func(int a,int b) { static int k; int result; k=k+1; if(a%b==0) result=a; else result=func(a+a/k,b); return result; } void main(void) { cout< } 執行以上程序后,輸出的第一行是___(8)___,第二行是___(9)___,第三行是___(10)___。 7.[程序](3分) #include void fun(int *s,int n1,int n2) { while(n1 int t=*(s+n1); *(s+n1)=*(s+n2); *(s+n2)=t; n1++; n2--; } } int f2(int *p,int n) { for(int s=0,i=0;i return s/n; } void main(void) { int a[5]={10,12,14,16,11),b[2]; fun(a,0,3); b[0]=f2(a,4); fun(a,2,4); b[1]=f2(a,5); cout<<"b[0]="< cout<<"b[1]="< cout<<'\n'; } 執行以上程序后,輸出的第一行是___(11)___,第二行是___(12)___,第三行是___(13)___ 8.[程序] (2分) #include int fun(int n,int k) { if(k>1)return fun(n/10,k-1); else return(n); } void main(void) { int x=fun(987,1); int y=fun(45678,3); cout<<"x="< cout<<"y="< } 執行以上程序后,輸出的第一行是___(14)___,第二行是___(15)___。 9.[程序] (3分) #include class Base{ public: Base(int a,int b){x=a;y=b;) void display(); virtual void f1(){cout< virtual void f2(){cout< void f3(){cout< private; int x,y; }; void Base::display() { f1(); f2(); f3(); } class Sclass;public Base{ public: Sclass(int a,int b,int c,int d):Base(a,b) {m=c;n=d;} void f2(){cout< void f3(){cout< private: int m,n; }; void main(void) { Sclass s1(20,10,60,20); Base *p=&s1; p->display(); } 執行以上程序后,輸出的第一行是___(16)___,第二行是___(17)___,第三行是___(18)___ ●完善程序題,共12分 10.以下程序的功能是;輸入一個十進制正整數m,找出所有小于它并與其互質的正整數n,并要求n 不是素數(素數只能被1和n本身除盡)。m和n互質是指這兩個正整數的最大公約數為1。 [程序](4分) #include int prime(int x) { int flag=1; for(int i=2;i<=x/2;i++) if(x%i==0){ ___(19)___ ; break; } return flag; } int gcd(int m,int n) { for(int i=2;i<=n;i++) if(___(20)___) break; if(i<=n) return 0; ___(21)___ ; } void main(void) { int m,i,count=0; cout<<"請輸入一個正整數;"; cin>>m; cout<<"小于"< for(i=M-1;i>=2;i--) if(prime(i)==0) if(___(22)___){ cout<<"("< count++; } cout<<'\n'; cout<<'互質數共有;'< } 11.以下程序的功能是;從鍵盤輸入一行字符串,先求出字符串中ASCII值為最小的字符,記錄該字 符所在字符串中的位置,并將該字符前的所有字符順序后移一個字符位置,然后將最小的字符放在字 符串的開始位置上,輸出最小的字符在原字符串中的位置。例如,輸入字符串"bcdfae",最小字符"a" 在該字符串中的位置是4,移動后輸出"abcdfe"。 [程序](4分) #include int fun(char *str) { char min,*q,*p; int m=0; ___(23)___ ; min=*p; p++; while(*p!='\0'){ if(min>*p){ ___(24)___ ; q=p; m=p-str; } p++; } p=q; while(p>str){ ___(25)___ ; p-- ; } *p=min; ___(26)___ ; } void main(void) { char str[200]; int n; cin.getline(str,190); cout<<'輸入字符串為;'< n=fun(str); cout<<"最小字符在輸入串中的位置為:"< cout<<"處理后的字符串為;"< } 12.以下程序的功能是;利用單向鏈表統計一段英文單詞或數字串中單詞或數字串出現的頻率。假設 每行長度不超過80個字符,單詞、數字串之間由空格、\t或\n分隔,一個單詞或數字串的長度不超 過20個字符。從鍵盤上輸入任意一段英文單詞或數字串,并以單詞stop結束輸入。函數create()依 次讀入一個單詞或數字串后,首先與鏈表各節點上的數據(單詞或數字串)進行比較,若已存在,則 將該數據出現的次數加1;否則,構建一個新的節點,將該數據作為該新節點的數據域,并插入已建 鏈表的尾部。當讀取到stop時,結束鏈表的建立。函數print()輸出鏈表各節點的值,函數dele_list() 依次刪除鏈表上的節點。例如,執行以下程序時,從鍵盤上輸入下面一段英文單詞或數字串; abs 345 happy good yes no 345 it we are yes no 45 stop 程序統計后的輸出為; abs(1)345(2)happy(I)good(1)yes(2)no(2)it(1)we(1)are(1)45(1) [程序](4分) #include #include typedef struct node { int count; char data[20]; struct node *next; }word; word *create(void) { char str[20]; word*h=NULL,*r,*s,*p; //h指向第一個節點,r指向最后一個節點 while(1){ cin>>str; if(strcmp(str,"stop")==0) break; p=h; while(p!=NULL&&strcmp(p->data,str)!=0) p=p->next; if(p!=NULL) ___(27)___; else{ s=new word; s->count=1; strcpy(s->data,str); s->next=NULL; if(h==NULL){ h=s; ___(28)___; } else{ ___(29)___; r=s; } } } return h; } void print(word *p) { if(p==NULL) cout<<"空表"< else while(p=NULL){ cout< p=p->next; } cout< } void dele_list(word *h) { word *p; while(h){ p=h; ___(30)___ ; delete P; } } void main(void) { word *p; cout<<"輸入一段英文單詞或數字串,以空格、Tab或Enter字符分隔,以stop結束輸入;"; p=create(); cout<<"輸出單鏈表;"< print(p); dele_list(p); } 參考答案 一、選擇題 21.B 22.C 23.A 24.B 25.D 26.D 27.C 28.A 29.D 30.C 二、填空題 (1)指針運算,取指針變量所指向的值 (2)乘法運算 (3)virtural (4)void (5)循環結構 (6)x=16或16 (7)y=8或8 (8)9 3 (9)6 3 (10)3 3 (11)b[0]=13或13 (12)b[1]=12或12 (13)16 14 11 10 12 (14)x=7 (15)y=6 (16)30 (17)40 (18)200 (19)flag=0或return 0 (20)m%i==0&&n%i==0 (21)return 1或返回一個非0數 (22)gcd(m,i)==1或gcd(m,i) (23)p=q=str (24)min=*p (25)*p=*(p-1) (26)return m (27)p->count++ (28)r=s (29)r->next=s (30)h=h->next或h=p->next |