试卷代号:1008 座位号■ 中央广播电视大学2006一2007学年度第一学期“开放本科”期末考试 计算机专业面向对象程序设计 试题 2007年1月 题 号 二 三 四 五 总 分 分 数 得 分 评卷人 一、单项选择题(每小题2分,共20分) 1.由C+十源程序文件编译而成的目标文件的默认扩展名为()。 A.cpp B.exe C.obj D.lik 2.设x和y均为bool量,则x&&.y为真的条件是( )。 A.它们均为真 B.其中一个为真 C.它们均为假 D.其中一个为假 3.在下面的二维数组定义中,正确的语句是()。 A.int a[5]]; B.int a]5]; C.inta[][3]={1,3,5},{2}; D.int a[](10); 4.在文件包含命令中,被包含文件的扩展名()。 A.必须是.h B.不能是.h C.可以是.h或.cpp D.必须是,cpp 5.要使语句“p=new int[10][20];”正确,p应事先定义为( )。 A.int¥p; B.int**p; C.int¥p[20]; D.int(*p)[20]; 6.在关键字public后面定义的成员为该类的( )成员。 A.私有 B.公用 C.保护 D.任何 7.假定AA为一个类,a为该类私有的数据成员,若要在该类的一个成员函数中访问它, 则书写格式最好为()。 A.a B.AA::a C.a() D.AA::a() 62
试卷代号:1008 座位号口口 中央广播电视大学2006-2007学年度第一学期“开放本科”期末考试 计算机专业 面向对象程序设计 试题 200 年 1月 题 号 四 五 总 分 分 数 得 分 评卷人 一、单项选择题 (每小题 2分 ,共 20分 ) 1.由 C+十源程序文件编译而成的目标文件的默认扩展名为( )。 A. cpp B. exe C. obj U. lik 2.设x和Y均为bool量,则x乙乙Y为真的条件是( )。 A.它们均为真 B.其中一个为真 C.它们均为假 D.其中一个为假 3.在下面的二维数组定义中,正确的语句是( ) A, int a仁5][]; B. int a[]仁5]; C. int a[][3]={{1,3,5},{2}}; U. int a[](Io); 4.在文件包含命令中,被包含文件的扩展名( )。 A.必须是.h B.不能是.h C.可以是.h或.cpp D.必须是.cpp 5.要使语句“p=new int[10]巨20];”正确,P应事先定义为( )。 A. int x p; I3. int } } p; C. int -} p仁20口; D. intC -} p)三20]; 6.在关键字 public后面定义的成员为该类的( )成员。 A.私有 B.公用 C.保护 D.任何 7.假定 AA为一个类,a为该类私有的数据成员,若要在该类的一个成员函数中访问它, 则书写格式最好为( )。 A. a ‘ B. A A::a C. a() D. AA::a()
8.队列具有( )的操作特性。 A.先进先出 B.先进后出 C进出无序 D.仅进不出 9.假定AB为一个类,则执行“ABa,b(3),p:”语句时共调用该类构造函数的次数为 ()次。 A.5 B.4 C.3 D.2 10.在重载一个运算符时,其参数表中没有任何参数,这表明该运算符是()。 A.作为友元函数重载的1元运算符 B.作为成员函数重载的1元运算符 C.作为友元函数重载的2元运算符 D.作为成员函数重载的2元运算符 得 分 评卷人 二、填空题(每题2分,共20分) 1.当执行cout语句输出endl数据项时,将使C++显示输出屏幕上的光标从当前位置 移动到 的开始位置。 2.假定x和y为整型,其值分别为16和5,则x/y和double(x)/y的值分别为 和 3.strlen(“apple'")的值为 4.C+十程序运行时的内存空间可以分成全局数据区,堆区,栈区和 区。 5.假定a是一个一维指针数组,则a十i所指对象的地址比a大 字节。 6.如果一个派生类只有一个唯一的基类,则这样的继承关系称为 7.假定AA是一个类,“AA¥abc()const;”是该类中一个成员函数的原型,在该函数体中 向this或其成员赋值。 8.假定用户没有给一个名为AB的类定义构造函数,则系统为其定义的构造函数为 9.假定用户为类AB定义了一个构造函数“AB(int aa){a=aa;}”,该构造函数实现对数 据成员 的初始化。 ]0.作为类的成员函数重载一个运算符时,参数表中只有一个参数,说明该运算符有 个操作数。 63
8.队列具有( )的操作特性。 A.先进先 出 B.先进后 出 C.进出无序 D.仅进不出 9.假定 AI3为一个类,则执行“AB a, b(3), } p;”语句时共调用该类构造函数的次数为 )次。 A.} B. 4 C.3 D.2 10.在重载一个运算符时,其参数表中没有任何参数 ,这表明该运算符是( )。 A.作为友元函数重载的 1元运算符 B.作为成员函数重载的 1元运算符 C.作为友元函数重载的 2元运算符 U.作为成员函数重载的 2元运算符 得 分 评卷人 二、填空题(每题 2分,共 20分) 1.当执行 。u,语句输出 endl数据项时,将使 C -E-十显示输出屏幕上的光标从当前位置 移动到 的开始 位置 。 假定 、}1i y为整型.其值分别为 16和 5,则 x/y和 double<x)/y的值分别为 和 :}. strlen(`'apple")的值为___。 i. C-f--}-程序运行时的内存空间可以分成全局数据区,堆区,栈区和_____区。 J.假定 。是一个一维指针数组,则 a十i所指对象的地址比 a大 字节。 6.如果一个派生类只有一个唯一的基类,则这样的继承关系称为_ _ 。 7.假定 AA是一个类,"AA } abc( ) const;”是该类中一个成员函数的原型,在该函数体中 向 ‘this或其成员赋值。 8.假定用户没 有给一 个名 为 A13的类定 义 构造 函数 ,则 系统 为其 定义 的 构造 函数为 9.假定用户为类 AI3定义了一个构造函数“ABGnt aa) { a=aa; }",该构造函数实现对数 据成员 的初始化 。 10.作为类的成员函数重载一个运算符时,参数表中只有一个参数,说明该运算符有 个操作数
得 分 评卷人 三、程序填充题(对程序、函数或类中划有横线的位置,根据题意按标 号把合适的内容填写到程序下面相应标号的后面。每小题6分, 共24分】 1.打印出2至99之间的所有素数(即不能被任何数整除的数) #includetemp)cout<<n<<’’: cout<<'n'; (1) (2) 2.下面是对按从小到大排列的有序数组a[]中进行二分查找x的算法,若查找成功返 回该元紫下标,否则返回一1。 int BinarySearch(int a],int n,int x) int low=0,high=n一l;/定义并初始化区间下界和上界变量 int mid; /定义保存中点元素下标的变量 while(low<=high)( mid=(low++high)/2; if(x==a[mid]) (1) else if(x<a mid])high=mid-1; else (2) 3 return -1; (1) (2) 64
得 分 评卷人 三、程序填充题(对程序、函数或类中划有横线的位置,根据题意按标 号把合适的 内容填写到程序下面相应标号的后面。每小题 6分。 共 24分 ) 1.打印出2至 99之间的所有素数(即不能被任何数整除的数)。 井include 共includetemp) cout<<',n+ S 〔out<< ’\n’; (1) 2,下面是对按从小到大排列的有序数组 (2) a[n〕中进行二分查找 x的算法 ,若查 找成功返 回该元素下标 ,否则返回一to int BinarySearchGnt a仁」,int m int x) { int low=0, high=n-1;//定义并初始化区间下界和上界变量 int mid; //定义保存中点元素下标的变量 while( low<=high){ mid= ( low-F-high) /2; if(x==a[mid〕) (1) ; else if(x<a[mid]) high=mid一1; else (2) ; } return一1; (1) (2)
3.请补充完整如下的类定义: class A char a; public: a(){a=0;}/定义无参构造函数,使a的值为空 A(char aa){ a= (1) ;/进行动态存储分配 strcpy(a,aa);/用aa所指字符串初始化a所指向的动态存储空间 (2) //定义析构函数,剔除a所指向的动态存储空间 〉: (1) (2) 4.…种类定义如下: class Goods private: char gd_name[20]; /商品名称 int weight; //商品重量 static int totalweight; /同类商品总重量 public: Goods (char str,int w)( /1构造函数 strepy(gd_name,str); weight-w; totalweight+=weight; } ~Goods ()(totalweight -weight; char¥GetN()f (1) ;} /返回商品名称 int Get W(){return weight;) static int Get Total_Weight()( //定义静态成员函数返回总重量 (2) } (1) (2) 65
3.请补充完整如下的类定义 : class A{ char二a; public: a( ){a=0;}//定义无参构造函数,使 a的值为空 A(char*aa){ a= (1) ;//进行动态存储分配 strcpy(a,aa);//用 as所指字符串初始化 a所指向的动态存储空间 } (2) //定义析构函数 ,删除 a所指 向的动态存储空间 、 . 声 、j 了 ; , 上 g J 、 、 月 了 、 了百、 4.一种类定义如下 : class Goods .rt 刀 private: char gd_name[20]; int weight; static int totalweiglzt; public: Goods (char } str,int w){ strcpy( gd_name,str); weight=w; totalweight-f-=weight; 商品名称 /商品重 量 //同类商品总重量 i/构造函数 } 一('roods(){totalweight一= weight; char* GetN(){ (1) ;} int GetW<){return weight;} static int GeiTotal_Weight(){ 刀返回商品名称 //定义静态成员函数返回总重量 (2) 65
得分 评卷人 四、理解问答题(写出前两小题的程序运行结果和指出后两小题的程 序(或函数)所能实现的功能。每小题6分,共24分) 1.includeb?a:b);} public: int c; void SetValue(int xl,int x2,int x3){ a=x1;b=x2;c=x3; } int GetMax(); }; int CE:GetMax() int d=getmax(); return (d>c?d:c); 66
得 分 评卷人 四、理解问答题(写出前两小题的程序运行结果和指出后两小题的程 序(或函数)所能实现的功能。每小题 6分,共 24分) 1.井includeGiostream. h} const int T = 8 void main() Int I,S=0; for(i= 1 s+ = 1< = i关 t; T ; i-}=2){ cout< < s+ ' ' cout+ endl 运 行结果 : 2. #include<iostream. h} class CE{ pnvate: int a, b; int getmax(){return (alb? a:b);} public; m t c; void SetV alue(int x1,int x2,int x3){ a=xl;b= x2;c = x3; int GetMax(); int CE::GetMax< ) int d=getmax(); return (d} c? d:c) 66
} void main() intx=5,y=12,z=8; CE ex; ex.Set Value(x,y,z); cout> if(x+y==z)return 1;else return 0; 函数功能: 4.char*f(char¥s){ int n=strlen(s); char r=new char[n+1] for(int i=0;i='a’&&s[i]<='z')r[i]=s[i]-’a'+'A'; else r[i]=sCi]; r[n]=\0; return r; 函数功能: 67
void main() int x=5,y= 12,z=8; e X SetValue(x,y,z); cout+ ex. GetMax()+ endl 运行结果 : 3. int ff(int x,int y){ m t z cout+ x+ ’+’+ y+ ’=’; cin; z; if(x+-y==z) return 1;else return 0; 函数功 能 : 4. char二f(char } s){ int n=strlen(s) char*r=new char[n-}-1] for<nt i=0;i< n if (s[i]} else r[i] ;i-1-+) ,&. &. s仁i]<='z') r[i]=s仁i]一’a’-{-’A =s[i]; r[n]='\0'; return r } 函数功能 : 67
得分 评卷人 五、编程题(每小题6分,共12分) 1.按照下面函数原型语句编写·个递归函数求出并返回数组中n个元素的平方和。 int f(int a],int n); 2.根据下面类中Su1函数成员的原型和注释写出它的类外定义, class AA int a; int n; int MS; public: void InitAA(int aa[,int nn,int ms)( if(nn>ms)(cout<<"Error!"<<endl;exit(1);) MS=ms; n=nn; a=new int[MS]; for(int i=0;i<<n;i++)a[i]=aa[i]; int Sum();//求出并返回数组a中前n个元素之和 }; 68
得 分 评卷人 {一二_ 「 一— 一 -一-一 一 五、编程题 (每小题 6分。共 ]7.2分) l.按照下 一 面函数原型语句编写一个递归函数求出并返回数组 a中n个元素的平方和。 根据 下面类中 Sum 函数成员的原型和注释写出它的类外定义。 class八A { uYt 关 a m t n; int M S public: void InitAA(int as厂〕,int nn, int ms){ if ( nr,二)}ms){coot< < "Error!”+ endl;exit( 1);} MS=m5 T1二二nn a= new tnt for(int i=0 MS]; ;i<n; i+十)a仁i]“as[i}; int Sum( ) ;//求出并返回数组 a中前 n个元素之和
试卷代号:1008 中央广播电视大学2006一2007学年度第一学期“开放本科”期未考试 计算机专业 面向对象程序设计 试题答案及评分标准 (供参考) 2007年1月 一、单项选择题(每小题2分,共20分) 1.C 2.A 3.C 4.C 5.D 6.B 7.A 8.A 9.D 10.B 二、填空题(每题2分,共20分) 1.下一行 2.3 3.2 3.5 4.代码 5.4*i 6.单继承 7.不允许 8.AB()( 9.a 10.2 三、程序填充题(对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程 序下面相应标号的后面。每小题6分,共24分) 每小题评分标准:对一空给3分,全对给6分。 1.(1)i<=temp (2)break 2.(1)return mid (2)low=mid+1 3.(1)new char[strlen(aa)+1] (2)~A()(delete [Ja;) 69
试卷代号:1008 中央广播电视大学2006-2001学年度第一学期“开放本科”期末考试 计算机专业 面向对象程序设计 试题答案及评分标准 (供参考) 2007年 t月 一、单项选择题(每小题 2分,共 20分) l. C 2. A 3. C 4. C :i. U 6. B 7. A 8. A 9. D 10. B 二、填空题(每题 2分,共 20分) 1.下一行 2. 3 3. 2 3. 5 4.于弋码 5. 4关i 6.单继承 7.不允许 8. A}3(){} 9. a 10. 2 三、程序填充题 (对程序、函数或类中划有横线的位置 ,根据题意按标号把合适的内容填写到程 序下面相应标号的后面。每小题 6分,共 24分) 每小题评分标准:对一空给 3分,全对给 6分 。 1.(1)i-}二=temr.} (2) break 2.(1)ret urn mid (2) low=mid十1 3.(1)new char[strlen(aa)-i-1] (2)一A(){delete []a;} 69
4.(1)return gd_name (2)return totalweight 四、理解问答题(写出前两小题的程序运行结果和指出后两小题的程序(或函数)所能实现的功 能。每小题6分,共24分) 评分标准:第3、4小题根据叙述的完整程度酌情给分。 1.1103584 /每个数据1分,全对6分 2.12 /16分 3.根据参数x和y,由用户通过键盘输入计算出x十y的值,若正确返回1,否则返回0。 4.根据参数s所指向的字符串,生成一个由r所指向的新字符串并返回,该字符串使s字 符串中的小写字母均变为大写。 五、编程题(每小题6分,共12分】 评分标准:根据编程完整程度酌情给分。 1.int f(int an],int n) if(n==0)return 0; /或者if(n==1)retun a[0]*a[0]; else return a[n-1]*a[n-1]+f(a,n-1); 2.int AA:Sum() int s=0; for(int i=1;i<n;i++)s+=ali]; return s; } 70
4.(1)return gd_name (2)return totalweight 四、理解问答题(写出前两小题的程序运行结果和指出后两小题的程序(或函数)所能实现的功 能。每小题 6分,共 24分) 评分标准:第 3,4小题根据叙述的完整程度酌情给分。 l. 1 10 35 84 //每个数据 1分 ,全对 6分 2. 12 //6分 3.根据参数 x和 Y,由用户通过键盘输人计算出 x }- Y的值 ,若正确返 回 1,否则返回 Oo 4.根据参数 s所指向的字符串,生成一个由r所指向的新字符串并返回,该字符串使 :字 符串中的小写字母均变为大写 。 五、编程题(每小题 6分 ,共 12分) 评分标准:根据编程完整程度酌情给分。 1. int flint a仁〕,int n) if(n= =0) return 0; //或者 if(n==1)retun a[0] } a[0] else return a[n一1]*a[n一1]}f<a,n一1); 2. int AA::Sum() int s= 0 for(int i二1;inn; i-{-+)s-1-=a仁i]; return s