试卷代号:1008 座位号■■ 中央广播电视大学2007一2008学年度第一学期“开放本科”期末考试 计算机专业面向对象程序设计 试题 2008年1月 题 号 二 三 四 五 总 分 分 数 得 分 评卷人 一、单项选择题(每小题2分,共20分) 1.设x和y均为bool量,则xI|y为假的条件是( A.它们均为真 B.其中一个为真 C.它们均为假 D.其中一个为假 2.假定一个二维数组的定义语句为“inta[3][4]={3,4},{2,8,6};”,则元素a[1][2] 的值为( )。 A.2 B.4 C.6 D.8 3.假定p是具有it类型的指针变量,则给p赋值的正确语句为()。 A.p=new int B.p=new int米 C.p=new int¥¥ D.p=new int[10] 4.软件产品在需求发生变化、运行环境发生变化或发现软件产品本身的错误或不足时进 行相应的软件更新的难易程度叫做软件的( A.可维护性 B.可复用性 C.兼容性 I).正确性 58
试卷代号:1008 座位号巨一口 中央广播电视大学2007-2008学年度第一学期“开放本科”期末考试 计算机专业 面向对象程序设计 试题 2008年 1月 题 号 四 五 总 分 分 数 得 分 评卷人 一、单项选择题(每小题 2分 ,共 20分) 1.设 X和 Y均为 boot量,则 x}}Y为假的条件是( A.它们均为真 B.其中一个为真 ,C.它们均为假 D.其中一个为假 2.假定一个二维数组的定义语句为“inta[3][4] _ {{3,4},{2,8,6}};",则元素 a[1][2] 的值为( A. 2 B. 4 C. 6 D. 8 3.假定 P是具有 int 、类型的指针变量,则给 P赋值的正确语句为( A. p=new int in t 关 关 B.p=r}ew int } C. p=new D. p=new int[10] 4.软件产品在需求发生变化、运行环境发生变化或发现软件产品本身的错误或不足时进 行相应的软件更新的难易程度叫做软件的( A.可维护性 B.可复用性 C.兼容性 D.正确性
5.若需要把一个类外定义的成员函数指明为内联函数,则必须把关键字( )放在函数 原型或函数头的前面。 A.in B.inline C.inLine D.InLiner 6.在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为fist,队列长度 为length,则队尾的后一个位置为()。 A.length+1 B.first+length C.(first+length-1)%MS D.(first+length)%MS 7.假定一个类的构造函数为“A(int aa,int bb){a=aa;b=aa*bb;}”,则执行“Ax(4, 5);”语句后,×.a和x.b的值分别为( )。 A.4和5 B.5和4 C.4和20 D.20和5 8.假定AB为一个类,则执行“AB*p=new AB(1,2);”语句时共调用该类构造函数的 次数为()。 A.0 B.1 C.2 D.3 9.一个类的成员函数也可以成为另一个类的友元函数,这时的友元声明( )类域的限 定。 A.需加上 B.不需加上 C.可加可不加 D.取消 10.队列具有( )的操作特性。 A.先进先出 B。先进后出 C,进出无序 D.仅进不出 59
5.若需要把一个类外定义的成员函数指明为内联函数,则必须把关键字( )放在函数 原型或函数头的前面。 A. in B. inline C. inline D. InLiner 6.在一个用数组实现的队列类中,假定数组长度为 MS,队首元素位置为 first,队列长度 为 length,则队尾的后一个位置为( A. length+1 B. first}-length G (first-f-length一I)0oMS D. (first-f-length) 0 o MS 7.假定一个类的构造函数为 “A(int aa, int bb) {a=aa; b=aa * bb; }",则执行 “A x(4, });”语句后 ,x. a和 x. b的值分别为( )。 A. 4和 5 B. 5和 4 C. 4和 20 D. 20和 5 8.假定 AB为一个类 ,则执行“AB * p=new AB(1,2);”语句时共调用该类构造函数 的 次数为( A. 0 C.2 B. 1 D. 3 9.一个类的成员函数也可以成为另一个类的友元函数,这时的友元声明( )类域的限 A.需加上 B.不需加上 C.可加可不加 D.取消 10.队列具有( )的操作特性。 A.先进先出 13.先进后出 C.进出无序 D.仅进不出
得分 评卷人 二、填空题(每小题2分,共20分) 1.多行注释的开始标记符为 2.假定x=5,y=6,则表达式x十十*十+y的值为 3.假定x是一个逻辑量,则x&&true的值与x的值 4.含随机函数的表达式rand()%20的值在0至 的整数区间内。 5.程序的编译是以 为单位进行的。 6.一个数组的 实际上是指向该数组的第一个元素的指针,并且在任何 时候都不允许修改它。 7.指针变量pv和pc定义为“void pv=”Hello,word!”;char'pc;”,要将pv值赋给 pC,则正确的赋值语句是pc=( )pv。 8.一个类的 函数通常用于实现释放该类对象中指针成员所指向的动态 存储空间的任务。 9.假定用户为类AB定义了一个构造函数“AB(int aa):a(aa),{)”,则 是该类的数据成员。 l0.在多文件结构的程序中,通常把含有main()函数的文件称为该程序的 得分 评卷人 三、程序填充题,根据题意在横线上填写合适的内容。(每小题6分, 共24分) 1.采用辗转相除法求出两个整数的最大公约数。 #include<iostream.h void main() int a,b; cout<<"请输人两个正整数:”; 60
得 分 评卷人 二、填空题(每小题 2分 ,共 20分 ) 多行注释的开始标记符为 假定 x=5,y=6,则表达式 x-{- + * }- -} Y的值为 3.假定 x是一个逻辑量,则 xa乙 true的值与 x的值 4.含随机函数的表达式 rand() %20的值在 。至 的整数区间内。 5.程序的编译是以 为单位进行的。 6.一个数组的 实际上是指向该数组的第一个元素的指针,并且在任何 时候都不允许修改它。 7.指针变量pv和pc定义为“void }- pv ="Hello, word!"; char } pc;",要将pv值赋给 pc,则正确的赋值语句是 pc=( )Pvo 8一 个类的 函数通常用于实现释放该类对象中指针成员所指向的动态 存储空间的任务。 9.假定用户为类 AB定义了一个构造函数“AB(int aa);a(aa),{}",则 是该类的数据成员。 10.在 多 文 件 结 构 的 程 序 中,通 常 把 含 有 main )函 数 的 文 件 称 为该 程 序 的 得 分 评卷 人 三、程序填充题 。根据题意在横线上填写合适的内容。(每小题 6分 , 共 24分 ) 1.采用辗转相除法求出两个整数的最大公约数 。 #include void main() IIlt 8,h cout+ }}请输人两个正整数:’‘;
cin>>a>>b while(a>a>>b;} while(b){ int r; r=a%b; ;/分别修改a和b的值 cout=0;j--) if(strcmp(p,table[j]<0)table[j1]= else break; table[j+1]= A的定义 class A( char a; public: 61
cin; a; b while(a>a>>b while(b) int r r=a%b ;//分别修改 a和 b的值 cout+ a+ endl,//输出最大公约数 2.用插入排序方法对 table指针数组中 size个指针所指向的字符串进行按升序排序 的算 法 。 void sort(char*table仁〕,int size){ for(int i=1;i=0;j一一) if(strcmp(p,table[j])1
A(){a=NULL;}/定义无参构造函数,使a为空指针 A(char aa){ a= char[strlen(aa)+1]; strcpy(a,aa);/用aa所指字符串初始化a所指向的动态存储空间 /定义析构函数,删除a所指向的动态存储空间 4.类Goods的定义 class private: char Name[20];/商品名称 int Weight;/商品重量 static int totalWeight;/同类商品总重量 public: Goods(char*str,intw){/构造函数 strcpy(Name,str); Weight=w; totalWeight+=Weight; Goods ()(totalWeight-=Weight;) char¥GetN(){ //返回商品名称 int GetW()return weight;) static int GetTotalWeight(){/定义静态成员函数返回,总重量 62
A(){a =NULL; A(char,aa){ //定义无参构造 函数 ,使 a为空指针 a 二二 char[strlen(aa)+1] strcpy(a,aa); 刀用 as所指字符串初始化 a所指向的动态存储空间 //定义析构函数,删除 a所指向的动态存储空间 4.类 Goods的定义 class pnvate: char Name[20]; //商品名称 int Weight; //商品重量 static int totalWeight;//同类商品总重量 public: Goods <char } str,int w) { //构造 函数 strcpyC Name,str); Weight=w; total Weight十“Weight 一Goods(){totalWeight一=Weight; char二 GetN(){ //返回商品名称 int GetW ){return weight;} static int GetTotalWeight(){//定义静态成员函数返回总重量 62
得分 评卷人 四、理解问答题,分别写出前2小题的程序运行结果和指出后2小题 的程序或函数功能。(每小题6分,共24分) 1.#include class CE private: int a,b; int getmax()(return (a>b?a:h);) public: int c; void Set Value(int xl,int x2,int x3){ a=x1:b=x2;c=x3; int GetMax(); }; int CE:GetMax()( int d=getmax(); 63
得 分 评卷人 四、理解问答题 ,分别写出前 2小题的程序运行结果和指 出后 2小题 的程序或函数功能。(每小题 6分,共 24分) 1.#include const intT= 6 void main() int i,j,k=0; for(i=1;i C1aSS C"E private int a,b int getmax(){return (a>b? a:1} ); public in t c void SetValue(int xl,int x2,int x3){ a=x1;h= x2;c= x3 int GetMax(); int CE::(=etMax(){ int d=getmax() 63
return (d>>c?d:c); } void main() intx=5,y=12,z=8; CE ex; ex.SetValue(x,y,z); cout>N; for(i=1;i<=N;i+)p*=i; cout<<"N!=”<<p<<endl; } 程序功能: 4.int f(char *s) { int i=0; while(*s++)i+; return i; }; 函数功能: 64
return (d} c? d:c) void main() int x = 5,y= 12,z=8; CE ex; ex. SetValue(x,y,z); coutG void main( ) int t,p= 1; int N; cout+ “输人一个正整数:”; cin>> N; for(i气l;i<=N;i十+)A*=i; cout+ "N!="+ p+ endl 程序功能 : 4. intf(char、S) lnl 1= } while( } s十一1-- ) i+ 十 return 函数功能 : (;4
得分 评卷人 五、编程题(每小题6分,共12分)】 1.编写一个函数,分别求出由指针a所指向的字符串中包含的每种十进制数字出现的次 数,把统计结果保存在数组b的相应元素中,该函数的原型声明如下: void fun(char a,int b]): 2.根据下面类中CompareBig函数成员的原型和注释写出它的类外定义。 class AA int关ai 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++)ati]=aati]; } int CompareBig(AA&b); /比较this与b的大小,从前向后按两数组 //中的对应元素比较,若*ths中元素值大则返回1,若b中 /元素值大则返回一1,若相等则继续比较下一个元素,直到 /一个数组中无元素比较,此时若两者的n值相同则返回0, /否则若*this中的n值大则返回1,若b中的n值大则返回-1。 65
得 分 评卷人 五 、编程题(每小题 6分 ,共 12分 ) 1.编写一个函数,分别求出由指针 a所指向的字符串中包含的每种十进制数字出现的次 数 ,把统计结果保存在数组 b的相应元素中,该函数的原型声明如下 : void fun(char x a,1Tlt b[]); 2.根据下面类中 Comparel3ig函数成员的原型和注释写出它的类外定义。 class AA{ tnt * a; rnt n; int MS; public: void InitAA(int as[],int nn,int ms){ if(nn, ms){cout中的 n值大则返回一1
试卷代号:1008 中央广播电视大学2007一2008学年度第一学期“开放本科”期末考试 计算机专业 面向对象程序设计 试题答案及评分标准 (供参考) 2008年1月 一、单项选择题(每小题2分,共20分) 1.C 2.C 3.B 4.A 5.B 6.D 7.C 8.B 9.A 10.A 二、填空题(每小题2分,共20分】 1./ 2.35 3.相同 4.19 5.文件 6.数组名 7.char 8.析构 9.a 10.主文件 三、程序填充题,根据题意在横线上填写合适的内容。(每小题6分,共24分) 评分标准:每空3分 1.a=b b=r 2.tablefj] p 3.new A()(delete [Ja;) 4.return Name return total Weight 66
试卷代号:1008 中央广播电视大学2007--2008学年度第一学期“开放本科”期末考试 计算机专业 面向对象程序设计 试题答案及评分标准 (供参考) 2008年 i月 一、单项选择题 (每小题 2分 ,共 20分) 1.C 2.C 3. )3 4.A 5.13 6. D 7. C 8. B 9. A 10. A 二、填空题(每小题 2分 ,共 20分) 1./* 2_35 3,相 同 19 文件 E.数组名 char 8.析构 9_ a 10.主文件 三、程序填充题 .根据题意在横线上填写合适的内容。(每小题 6分 ,共 24分) 评分标准:每空 3分 1. a二 b h= r 2.、able.[J] p 3. new 一}C){delete []a; 4.return Name return total Weight
四、理解问答题,分别写出前2小题的程序运行结果和指出后2小题的程序或函数功能。(每 小题6分,共24分】 1.k=9 2.12 3.计算并输出N阶乘的值,其中N值由键盘输入。 4.求出并返回字符指针参数s所指向的字符串长度。 五、编程题(每小题6分,共12分) 评分标准:按编程完整程度酌情给分。 1.void fun(char a,int b[]) int i; for(i=0;i=0&&.jb.n)k=b.n;else k=n; /1分 for(int i=0;ib.a[i])return 1; else if(a[i]<b.aLi])return -1; /13分 if(k==n &&k==b.n)return 0; 114分 else if(k<n)return 1; else return -1; //6分 67
四、理解问答题 ,分别写出前 2小题的程序运行结果和指出后 2小题 的程序或 函数功能。(每 小题 6分 ,共 24分) 1. k=9 2. 12 3.计算并输出 N阶乘的值 ,其中 N值 由键盘输人 。 4.求出并返回字符指针参数 s所指向的字符串长度。 五、编程题 (每小题 6分 ,共 12分) 评分标准:按编程完整程度酌情给分。 1. void fun(char*a,int b[]) m t for(i=0;i=0 &.}. jh. n) k=b. n; else k=n; for(int i=0;ib. a[i]) return 1; else if(a仁i]<b. a[i])return一1 if(k==n&& k==b. n) return 0; else if(k<n) return 1; else return一 1; 刀1分 ; //3分 //4分 //6分 67