?C++程序設計2009年1月真題試題(04737)
摘要:C++程序設計2009年1月真題試題及答案解析(04737),本試卷總共100分。
C++程序設計2009年1月真題試題及答案解析(04737)
C++程序設計2009年1月真題試題及答案解析(04737),本試卷總共100分。
一、單項選擇題
(本大題共20小題,每小題1分,共20分)在每小題列出的四個備選項中只有一個是符合題目要求的,請將其代碼填寫在題后的括號內(nèi)。錯選、多選或未選均無分。
1.C++源程序文件擴展名為( )
A..cpp
B..h
C..lib
D..obj
2.在C++中使用流進行輸入輸出,其中專用于從鍵盤進行輸入的流是( )
A.cerr
B.cin
C.cout
D.cfile
3.包含自定義頭文件file.h的預處理指令是( )
A.#define
B.#include file.h
C.#define file.h
D.#include "file.h"
4.用于標識十六進制前綴或后綴是( )
A.無
B.后綴L或l
C.前綴零
D.前綴0x
5.設存在整型變量int x,則下列句與其它三項含義不同的是( )
A.int* p=&x;
B.int& p=x;
C.int & p=x;
D.int &p=x;
6.在定義類成員時,為產(chǎn)生封裝性,則需使用哪個關(guān)鍵字( )
A.public
B.publish
C.protected
D.private
7.設函數(shù)void swap(int&, int&)將交換兩形參的值,如兩整型變量int a=10; int b=15;則執(zhí)行swap(a, b)后,a、b值分別為( )
A.10,10
B.10,15
C.15,10
D.15,15
8.函數(shù)默認參數(shù)在函數(shù)原型中說明,默認參數(shù)必須放在參數(shù)序列的( )
A.前部
B.中部
C.后部
D.兩端
9.設存在函數(shù)int min(int, int)返回兩參數(shù)中較小值,若求15,26,47三者中最小值,下列表達式中錯誤的是( )
A.int m=min(min(15, 26), min(15, 47));
B.int m=min(15, 26, 47);
C.int m=min(15, min(47, 26));
D.int m =min(min(47, 26), 16);
10.下列函數(shù)不能和函數(shù)void print(char)構(gòu)成重載的是( )
A.int print(int);
B.void print(char, char);
C.int print(char);
D.void print(int, int);
11.在下列成對的表達式中,運算結(jié)果類型相同的一對是( )
A.7/2和7.0/2.0
B.7/2.0和7/2
C.7.0/2和7/2
D.7.0/2.0和7.0/2
12.內(nèi)聯(lián)函數(shù)的特點是( )
A.減少代碼量,加快訪問速度
B.減少代碼量,減緩訪問速度
C.增加代碼量,減緩訪問速度
D.增加代碼量,加快訪問速度
13.類的私有成員可在何處被訪問( )
A.本類的成員函數(shù)中
B.本類及子類的成員函數(shù)中
C.通過對象名在任何位置
D.不可訪問
14.類的構(gòu)造函數(shù)在以下什么情況下會被自動調(diào)用( )
A.定義成員函數(shù)時
B.定義對象時
C.定義數(shù)據(jù)成員時
D.定義友元函數(shù)時
15.下列關(guān)于析構(gòu)函數(shù)描述正確的是( )
A.可以重載
B.函數(shù)體中必須有delete語句
C.返回類型必須是void類型
D.不能指定返回類型
16.設有函數(shù)T Sum(T x, T y){return x+y;},其中T為模板類型,則下列語句中對該函數(shù)錯誤的使用是( )
A.Sum(1, 2);
B.Sum(3.0, 2.2);
C.Sum("A", "C");
D.Sum("A", "C");
17.下列哪個編譯指令屬于條件編譯指令( )
A.#include
B.#define
C.#else
D.#pragma
18.關(guān)于類的靜態(tài)成員函數(shù)描述錯誤的是( )
A.在創(chuàng)建對象前不存在
B.不能說明為虛函數(shù)
C.不能直接訪問非靜態(tài)函數(shù)
D.不是對象的成員
19.如果類A被聲明成類B的友元,則( )
A.類A的成員即類B的成員
B.類B的成員即類A的成員
C.類A的成員函數(shù)不得訪問類B的成員
D.類B不一定是類A的友元
20.派生類的對象可以訪問以下那種情況繼承的基類成員( )
A.私有繼承的私有成員
B.公有繼承的私有成員
C.私有繼承的保護成員
D.公有繼承的公有成員
二、填空題
(本大題共20小題,每小題1分,共20分)請在每小題的空格中填上正確答案。錯填、不填均無分。
11.若使用標準輸出流把整型變量a的值輸出到屏幕上,實現(xiàn)此操作的C++語句是_________。
12.C++將數(shù)據(jù)從一個對象流向另一個對象的流動抽象為“流”,從流中獲取數(shù)據(jù)的操作稱為_________。
13.執(zhí)行下列代碼int b=100;cout<<"Hex:"<<hex<<b;程序的輸出結(jié)果是_________。
14.靜態(tài)聯(lián)編所支持的多態(tài)性稱為_________的多態(tài)性。
15.C++程序必須有且只有一個主函數(shù),其函數(shù)名為_________。
16.寫出聲明一個復數(shù)對象的語句,并使該對象被初始化為2.2+1.3i,此聲明語句是_________。
17.若有函數(shù)定義為:int add(int m1=0, int m2=2, int m3=4){ return m1+m2+m3; }在主函數(shù)中有int s=add(1)+add(0, 1)+add(0, 1, 2);則執(zhí)行此語句后s的值為_________。
18.C++中使用_________關(guān)鍵字說明函數(shù)為內(nèi)聯(lián)函數(shù)。
19.在源程序中有宏定義:#define PI 3.14,則若不想使該宏定義影響到程序的其它地方,可以使用_________刪除該宏定義。
110.類和其它數(shù)據(jù)類型不同的是,組成這種類型的不僅可以有數(shù)據(jù),還可以有對數(shù)據(jù)進行操作的__________。
111.有下列代碼int a=0; double b=0; cin>>a>>b;當用鍵盤輸入1.25時,b=_________。
112.對于類Point而言,其析構(gòu)函數(shù)的定義原型為_________。
113.對象成員構(gòu)造函數(shù)的調(diào)用順序取決于這些對象在類中說明的順序,與它們在成員初始化列表中給出的順序_________。
114.類的簡單成員函數(shù)是指聲明中不含_________、volatile、static關(guān)鍵字的函數(shù)。
115.與操作對象的數(shù)據(jù)類型相互獨立的算法稱為_________。
116.從一個或多個以前定義的類產(chǎn)生新類的過程稱為_________。
117.在vector類中向向量尾部插入一個對象的方法是_________。
118.C++中用于動態(tài)創(chuàng)建對象,并返回該對象的指針的關(guān)鍵字是_________。
119.C++的流類庫預定義的與標準輸出設備相聯(lián)接的流是_________。
120.執(zhí)行下列代碼cout<<noshowpoint<<123.0;程序輸出結(jié)果是_________。
三、改錯題
(本大題共5小題,每小題2分,共10分)下面的類定義中有一處錯誤,請用下橫線標出錯誤所在行并給出修改意見。
21.#include<iostream.h>class f{private: float x, y;public:f(float a, float b){x=a; y=b;}float max( ){return(x<y)?x:y;};main( ){f a(1.5, 3.8);cout<<a.max()<<endl;}
22.#include<iostream.h>class test{private: int x;public: test(int a){x=a;}void set(int a){x=a;}void get( ){cout<<x<<endl;}}main( ){const test a(3);a.set(5);a.get( );}
23.#include<iostream.h>class point{private: float x, y;public: f1(float a, float b){x=a; y=b;}point( ){x=0; y=0;}void getx( ){cout<<x<<endl;void gety( ){cout<<y<<endl;};void print(point a){cout<<a.x<<endl;}main( ){point a;a.f1(3.0, 5.0);print(a);}
24.#include<iostream.h>class f{private: int x, y;public: fl(int a, int b){x=a;y=b;}void print( ){cout<<x<<y<<endl;};main( ){f a;a.f1(1.5,1.8);a.print( );}
25.#include<iostream.h>main( ){int x=6;const int*p=x;cout<<*p<<endl;}
四、完成程序題
(本大題共5小題,每小題4分,共20分)
31.完成下面程序,使其輸出10,并在退出運行時正確釋放分配給指針的存儲空間。#include <iostream>using namespace std;
32.#include <iostream>using namespace std;
33.下面程序的運行結(jié)果如下:B::display( )C::display( )在下劃線處填上缺少的部分。源程序如下: #include<iostream> using namespace std; class B { public: _________display( ) {cout << "B::display( ) "<<endl;} }; class C: public B { public: __________display( ){cout<<"C::display( )"<<endl;} }; void fun(B*p) { p->display( ); } void main( ) { B b, *pb; C c; pb=&b; fun(pb); pb=&c; fun(pb); }
34.下面程序的運行結(jié)果如下: This is line1 This is line2 This is line3在下劃線處填上缺少的部分。源程序如下: #include <iostream> #include_________ using namespace std; void main( ) { fstream fin, fout; fout.open("my. txt", ios:: out); if(!fout.is_open( )) return; for(int i=0;i<3;i=i+1) fout<<"This is line"<<i+1<<endl; fout.close( ); fin.open("my.txt",ios:: in); if(! fin.is_open( )) return; char str[100]; while(_________) { fin.getline(str,100); cout<<str<<endl; } fin.close( ); }
35.在下劃線處填上缺少的部分。源程序如下:#include <iostream>using namespace std;___________ T fun(T x) { _________y; y=x*x-T(5); return y; } void main( ) { float a=2; cout<<fun(a); }
五、程序分析題
(本大題共4小題,每小題5分,共20分)
41.請寫出myTextl.txt文本文件中的內(nèi)容#include <iostream>#include <string>using namespace std;#include<fstream>void main( ){ofstream myFile1;myFile1.open("myText1.txt");cout<<"Enter the data in Chinese format(e.g.,2008,May 25):"<<endl;string Date("2008,January 1");string Year=Date.substr(0,4);int k=Date.find(",");int i=Date.find(" ");string Month=Date.substr(k+1, i-k-1);string Day=Date.substr(i+1, 2);string NewDate=Day+" "+Month+" "+Year;myFile1<<"original date:"<<Date<<endl;myFile1<<"Converted date:"<<NewDate<<endl;myFile1.close( );}
42.給出下面程序的輸出結(jié)果#include <iostream>using namespace std;class Simple{int x, y;public:Simple( ){x=y=0;}Simple(int i, int j){x=i; y=j;}void copy(Simple&s);void setxy(int i, int j){x=i; y=j;}void print( ){cout<<"x="<<x<<",y="<<y<<endl;}};void Simple:: copy(Simple&s){x=s.x; y=s.y;}void func(Simple s1,Simple&s2){s1.setxy(30, 40);s2.setxy(70, 80);}void main( ){Simple obj1(1, 2), obj2;obj2.copy(obj1);func(obj1,obj2);obj1.print( );obj2.print( );}
43.給出下面程序的輸出結(jié)果 #include"iostream.h" int main( ) { int i=17; while(i>=10) if(--i%4==3)continue; else cout<<"i="<<i--<<endl; }
44.給出下面程序的輸出結(jié)果 #include<iostream> using namespace std; void main( ) { int num=300; int &ref=num; cout<<ref; ref=ref-100; cout<<" "<<num; num=num-50; cout<<" "<<ref<<endl; }
六、程序設計題
(本大題共1小題,共10分)
51.定義堆棧類模板Stack(先進后出),棧的大小由使用者確定。要求該類模板對外提供如下二種基本操作:(1)push入棧(2)pop出棧,用數(shù)組來實現(xiàn)#include<iostream>using namespace std;template<class T,int size>class Stack{ T x[size]; int current; public: Stack( ){current=0;} ....push(....); ....pop(....);};請寫出兩個函數(shù)的過程(如果需要形式參數(shù),請給出形參類型和數(shù)量,以及返回值類型)
延伸閱讀
- 2023年10月自考00257票據(jù)法真題
- 2023年10月自考00249國際私法真題
- 2023年10月自考00246國際經(jīng)濟法概論真題
- 2023年10月自考00245刑法學真題
- 2023年10月自考00186國際商務談判真題
- 2023年10月自考00185商品流通概論真題
自考微信公眾號
掃碼添加
自考備考資料免費領(lǐng)取
去領(lǐng)取