07级面向对象程序设计语言A期末考试试题A
07级面向对象程序设计语言A期末考试试题A

07级面向对象程序设计语言A 期末考试试题A北京林业大学2007--2008学年第I学期试卷试卷名称:面向对象程序设计语言A(A卷)课程所在院系:信息学院考试班级学号姓名成绩试卷说明:1.本次考试为闭卷考试。
本试卷共计 4 页,共 4 大部分,请勿漏答;2.考试时间为120分钟,请掌握好答题时间;3.答题之前,请将试卷和答题纸上的考试班级、学号、姓名填写清楚;4.本试卷所有试题答案写在答题纸上;(特殊要求请详细说明)5.答题完毕,请将试卷和答题纸正面向外对叠交回,不得带出考场;6.考试中心提示:请你遵守考场纪律,参与公平竞争!一.单项选择题(每小题2分,共40分)说明:在每小题列出一组答案,分别标识为A~D,在四个选项中,只有一个是符合题目要求的,请将其代码填在表格题号对应的空白内。
错选或未选均无分。
(1)在每个C++程序中都必须包含有这样一个函数,该函数的函数名为()。
(A) main (B) MAIN (C) name (D) Main(2)以下程序段的输出结果是()。
void main(){ int a=1,b=2,m=0,n=0,k;k=(n=b>a)||(m=a<b);cout<<k<<”,”<<m;}(A) 0,0 (B) 0,1 (C) 1,0 (D) 1,1第 2 页共4 页(3)存储以下数据,占用存储字节最多的是()。
(A) 0 (B)‘0’(C)“0”(D) 0.0(4)在C++中,常量‘C’和“C”两者()。
(A) 完全不同(B) 存储长度相同(C) 类型相同(D) 存储值相同(5)设x是一个bool型的逻辑量,y的值为10,则表达式 x && y的值为()。
(A) 1 (B) 0 (C) 与x值相同(D) 与x值相反(6)函数重载是指()。
(A) 两个或两个以上的函数取相同的函数名,但形参的个数或类型不同(B) 两个以上的函数取相同的名字和具有相同的参数个数,但返回值的类型不同(C) 两个以上的函数名字不同,但形参的个数或类型相同(D) 两个以上的函数取相同的函数名,并且函数的返回类型相同(7)以下关于函数模板叙述正确的是()。
(完整版)《面向对象程序设计C++》期末试卷及标准答案(A)

《面向对象程序设计C++》期末考试试卷(A)班级:姓名:学号:分数:试卷说明:本套试题共四个大题,全部题目都答在答题纸上,写在其他地方均无效。
(答题纸在本套试卷的第10页上)一、选择题(每小题2分,共40分)1、C++是()。
A. 面向对象的程序设计语言B. 面向过程的程序设计语言C. 既支持面向对象的程序设计又支持面向过程的程序设计的混合型语言D. 非结构化的程序设计语言2、面向对象程序设计思想的主要特征中不包括()。
A. 封装性B. 多态性C. 继承性D. 功能分解,逐步求精3、若定义:string str; 当语句cin>>str; 执行时,从键盘输入:Microsoft Visual Studio 6.0!所得的结果是str=()。
A. Microsoft Visual Studio 6.0!B. MicrosoftC. Microsoft VisualD. Microsoft Visual Studio 6.04、考虑下面的函数原型声明:void testDefaulParam(int a,int b=7,char z='*');下面函数调用中,不合法的是()。
A. testDefaulParam(5);B. testDefaulParam(5,8);C. testDefaulParam(5,'#');D. testDefaulParam(0,0,'*');5、下列语句中,将函数int sum(int x, int y)正确重载的是()。
A. float sum(int x, int y);B. int sum(int a, int b);C. float sum(float x, float y);D. double sum(int y, int x);6、下列表示引用的方法中,()是正确的。
已知:int a=1000;A. int &x=a;B. char &y;C. int &z=1000;D. float &t=&a;7、在一个函数中,要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用()。
2007级程序设计基础(一)期末考试参考答案A卷

2007级《程序设计基础(一)》期末考试参考答案(A卷)一、单选题:(每题1分,共20分)1. D2. A3. C4. B5. A6. C7. D8. A9. D10. B11. B12. B13. A14. B15. C16. B17.C 18. D19. C 20. C二、程序阅读题:(每题4分,共24分)1.j=82. 2 4 0 8 103.9*7*8*5*3*4.before swap a[0]=5,a[1]=7after swap a[0]=5,a[1]=75.61231116. 0 3 6 91 4 7 102 5 8 113 6 9 12三、改错题:(每题5分,共15分)1.#include <stdio.h> -----------1分void fun(char s[],char c); -----------1分void fun(char s[],char c) -----------1分{int i,j;for(i=j=0;s[i];i++)if(s[i]!= c)s[j++]=s[i]; ----------1分s[j]='\0'; ----------1分}2.#include <stdio.h>int plus(int ,int); ----------0.5分void main(){int x,y,z; ----------1分scanf("%d,%d",&x,&y); ----------1分z=plus(x,y); ----------0.5分printf("The sum is %d",z);}int plus(int a,int b) ----------1分{int c; ----------1分c=a+b;return c;}3.#include <stdio.h>int fun(float x[],int n){int i,c=0; ----------1分float xn=0; ----------1分for(i=0;i<n;i++)xn=xn+x[i]/n; ----------1分printf("average=%.2f\n",xn); ----------1分for(i=0;i<n;i++)if(x[i]>=xn) ----------1分c++;return c;}四、程序填空:(每空2 分,共16分)⑴flag*1.0/k ⑵flag*=-1(或flag=-flag)⑶top<=bottom ⑷(top+bottom)/2 ⑸key>list[mid] ⑹return mid (或index=mid;break;)⑺x ⑻x*(1-px(x,n-1))五、程序设计题:(第1小题5分,第2小题8分,第3小题12分,共25分)1.#include <stdio.h>void main(){int x,max;printf("input a group of integer end of 0:\n");scanf("%d",&x); ----------1分max=x; ----------1分while(x!=0) ----------1分{scanf("%d",&x);if(max<x) ----------1分max=x;}printf("max=%d\n",max); ----------1分}2.#include <stdio.h>void main(){int i,j,k; ----------1分for(i=1;i<100;i++) ----------1分for(j=1;j<10;j++) ----------2分{k=100-i-j; ----------1分if(i*0.4+j*4+k*0.2==40&&k>0) ----------2分printf("苹果%3d,西瓜%3d,梨%3d\n",i,j,k); ----------1分}}3.#include <stdio.h>#define N 10void sort(int [],int); ----------0.5分void insert(int [],int,int); ----------0.5分void main(){int i,key,a[N+1];for(i=0;i<N;i++) ----------1分scanf("%d",&a[i]);sort(a,N); ----------0.5分printf("排序后:\n");for(i=0;i<N;i++)printf("%5d",a[i]);printf("\n请输入要插入的数:");scanf("%d",&key);insert(a,key,N+1); ----------0.5分printf("\n插入后:\n");for(i=0;i<N+1;i++) ----------1分printf("%5d",a[i]);}void sort(int a[],int n){int i,j,temp;for(i=0;i<n-1;i++) ----------1分for(j=0;j<n-1-i;j++) ----------1分if(a[j]>a[j+1]) ----------1分{temp=a[j]; ----------1分a[j]=a[j+1];a[j+1]=temp;}}void insert(int a[],int k,int n){int i,j;for(i=0;i<n-1;i++) ----------1分if(k<a[i]) ----------1分break;for(j=n-1;j>i;j--) ----------1分a[j]=a[j-1];a[i]=k; ----------1分}。
《面向对象程序设计JAVA语言程序设计》期末考试试题及部分答案

《面向对象程序设计JA V A语言程序设计》期末考试试卷及部分答案2一、单选择题(每小题2分,共10分)1、编译Java Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为( B )。
A. .javaB. .classC. .htmlD. .exe2、设x = 1 , y = 2 , z = 3,则表达式y+=z--/++x 的值是( A )。
A. 3B. 3. 5C. 4D. 53、在Java Applet程序用户自定义的Applet子类中,一般需要重载父类的( D )方法来完成一些画图操作。
A. start( )B. stop( )C. init( )D. paint( )4、不允许作为类及类成员的访问控制符的是( C )。
A. publicB. privateC. staticD. protected5、为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式为( A )。
A. static void method( )B. public void method( )C. final void method( )D. abstract void method( )二、填空题(每空格1分,共20分)1、开发与运行Java程序需要经过的三个主要步骤为编辑源程序、编译生成字节码、和解释运行字节码。
2、如果一个Java Applet源程序文件只定义有一个类,该类的类名为MyApplet,则类MyApplet必须是Applet、类的子类并且存储该源程序文件的文件名为MyApplet 。
3、如果一个Java Applet程序文件中定义有3个类,则使用Sun公司的JDK编译器 javac.exe 编译该源程序文件将产生 3 个文件名与类名相同而扩展名为 . class 的字节码文件。
4、在Java的基本数据类型中,char型采用Unicode编码方案,每个Unicode码占用 2 字节内存空间,这样,无论是中文字符还是英文字符,都是占用 2 字节内存空间。
面向对象程序设计期末复习题及答案

C++面向对象程序设计复习试题类型1、单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。
15题,每小题2分,共30分) [主要从作业题目中抽出来]2. 填空题。
(10题,每小题3分,共30分)3、阅读程序,写出程序运行结果。
【也称计算题】(3题,每小题5分,共15分)4、程序编制题【也称综合分析题】。
(第1、2题每题8分,第3题9分,共25分) 重点复习内容打*号是重点,打▲号是编程题出题范围* 基本概念,对象,消息,类。
面向对象系统特性,封装性,继承性,多态性。
*▲C++类的构成,类与对象,构造与析构,动态存储,类嵌套。
静态成员,对象数组,友元。
*函数重载。
运算符重载。
*引用定义与引用参数* 基类与派生类的定义。
* 基类及派生类的访问权(含派生类对基类的访问、通过派生类对象对基类的访问)和初始化。
多继承与虚基类。
*多态性与虚函数。
纯虚函数、抽象类。
*▲函数模板。
*▲使用类来定义对象并在程序中的应用题型样题填空题 1. 假定AB为一个类,则执行“AB a[10];”语句时,系统自动调用该类的构造函数的次数为_________。
答案:102.可以用p.a的形式访问派生类对象P的基类成员a,其中a是_________。
答案:公有继承的公有成员3.能作为重载函数的调用的依据是_________。
答案:参数个数、参数类型4.在进行完任何C++流的操作后,都可以用C++流的有关成员函数检测流的状态;其中只能用于检测输入流是否结束状态的操作函数名称是_________答案:eof5.函数重载是指_________。
答案:两个或两个以上的函数取相同的函数名,但形参的个数或类型不同6.在派生类中重新定义虚函数时必须在_________ 方面与基类保持一致。
答案:参数个数阅读程序例题【计算题】1.分析以下程序的执行结果#include<iostream.h>class Sample{int x,y;public:Sample() {x=y=0;}Sample(int a,int b) {x=a;y=b;}~Sample(){if(x==y)cout<<“x=y”<<endl;elsecout<<“x!=y”<<endl;}void disp(){cout<<“x=”<<x<<“,y”=<<y<<endl;}};void main(){Sample s1,s2(2,3);s1.disp();s2.disp();}解:x=0,y=0x=2,y=3x!=yx=y2.分析以下程序的执行结果#include<iostream.h>int add(int x,int y){return x+y;}int add(int x,int y,int z){return x+y+z;}void main(){int a=4,b=6,c=10;cout<<add(a,b)<<,<<add(a,b,c)<<endl; }解:10,20 3.分析以下程序执行结果#include<iostream.h>int add(int x,int y){return x+y;}double add(double x,double y){return x+y;}void main(){int a=4,b=6;double c=2.6,d=7.4;cout<<add(a,b)<<","<<add(c,d)<<endl; }解:10,104.分析以下程序执行的结果#include<iostream.h>class Sample{int x,y;public:Sample(){x=y=0;}Sample(int a,int b){x=a;y=b;}void disp(){cout<<"x="<<x<<",y="<<y<<endl;}};void main(){Sample s1,s2(1,2),s3(10,20);Sample *pa[3]={&s1,&s2,&s3};for(int i=0;i<3;i++)pa[i]->disp();}解:x=0,y=0x=1,y=2x=10,y=20 5. 分析以下程序的执行结果:#include<iostream.h>class base{int n;public:base(){};base (int a){cout << "constructing base class" << endl; n=a;cout << "n= "<< n << endl;}~base() { cout << "destructing base class" << endl; }};class subs : public base{int m;public:subs(int a, int b) : base(a){cout << "constructing sub class "<< endl; m=b;cout << "m= "<< m << endl;}~subs() { cout << "destructing sub class "<< endl; }};void main (){subs s(1,2);}解:constructing base classn= 1constructing sub classm= 2destructing sub classdestructing base class6.分析以下程序的执行结果:#include <iostream.h>class Sample{protected:int x;public:Sample() { x=0; }Sample(int val) { x=val; }void operator++() { x++; }};class Derived:public Sample{int y;public:Derived():Sample(){ y=0; }Derived(int val1,int val2):Sample(val1){ y=val2; }void operator--(){ x--;y--;}void disp(){cout<<"x="<< x << ",y=" << y << endl; }};void main (){Derived d(3,5);d.disp();d++;d.disp ();d--;d--;d.disp();}解:x=3,y=5x=4,y=5x=2,y=37 分析以下程序执行结果:#include <iostream.h>class A{public:A(char *s) { cout << s << endl; }~A() {}};class B:public A {public:B(char *sl,char *s2) :A(sl){cout << s2 << endl;}};class C:public A{public:C(char *sl,char *s2) :A(sl){cout << s2 << endl;}};class D:public B,public C{public:D(char *sl,char *s2,char *s3,char *s4) :B(sl,s2),C(sl,s3){cout << s4 << endl;}};void main (){D d("class A","class B","class C","class D");}解:class Aclass Bclass Aclass Cclass D 补充例题1.分析以下程序的执行结果#include<iostream.h>template <class T>T max(T x,T y){ return (x>y?x:y); }void main(){ cout<<max(2,5)<<“,”<<max(3.5,2.8)<<endl; }解答:5,3.5 2.分析以下程序的执行结果#include<iostream.h>void main(){int a[]={10,20,30,40},*pa=a;int *&pb=pa;pb++;cout<<*pa<<endl;}解答:输出为:20 3.分析以下程序的执行结果#include<iostream.h>template <class T>T abs(T x){ return (x>0?x:-x); }void main(){ cout<<abs(-3)<<“,”<<abs(-2.6)<<endl; }解答:输出为:3,2.64.分析以下程序的执行结果#include<iostream.h>class Sample{char c1,c2;public:Sample(char a){c2=(c1=a)-32;}void disp(){ cout<<c1<<“转换为”<<c2<<endl; } };void main(){Sample a('a'),b('b');a.disp();b.disp();}解答:a转换为Ab转换为B 5.分析以下程序的执行结果#include<iostream.h>void main(){int a;int &b=a; // 变量引用b=10;cout<<“a=”<<a<<endl;} 解答:输出为:a=10 6.分析以下程序的执行结果#include<iostream.h>class Sample{int x;public:Sample(){};Sample(int a){x=a;}Sample(Sample &a){x=a.x++ +10;}void disp(){cout<<“x=”<<x<<endl; }};void main(){ Sample s1(2),s2(s1);s1.disp();s2.disp();}解答:x=3 // ++运算的结果x=12 // 2+107.分析以下程序的执行结果#include<iostream.h>class Sample{int x;public:Sample(){};Sample(int a){x=a;}Sample(Sample &a){x=a.x+1;}void disp(){cout<<“x=”<<x<<endl; } };void main(){ Sample s1(2),s2(s1);s2.disp();}解答:输出为:x=3。
《面向对象程序设计JAVA语言程序设计》期末考试试题及部分答案

一、单选题1.在下列概念中,Java语言只保留了DA.运算符重载B.结构和联合C.指针D.方法重载2.下列类定义中,不正确的是BA.class x { .... } B.static class x implements y1,y2 { .... }C.public class x extends Applet { .... } D.class x extends y { .... }3.下列语句序列执行后,k 的值是Bint m=3, n=6, k=0;while( (m++) < (- - n) ) ++k;i++先把i的初值赋给表达式(i++),作为表达式(i++)的值,然后i自增1作为i的值。
如i=1,则表达式(i++)的值等于1,而i的值变为2。
++ii先自增1,再把自增后的值赋给表达式(++i)。
如i=1,则表达式(++i)的值等于2,i的值也为2,A.0 B.1 C.2 D.34.设i、j为int型变量名,a为int型数组名,以下选项中,正确的赋值语句是AA.a[0] = 7; B.i = i + 2 C.i++ - --j; D.a(0) = 66;5.Java语言的类间的继承关系是BA.多重的B.单重的C.线程的D.不能继承6.下列语句序列执行后,k 的值是Cint i=10, j=18, k=30;switch( j - i ) {case 8 : k++;case 9 : k+=2;case 10: k+=3;default : k/=j;}A.31 B.3 C.2 D.337.设有定义float x=3.5f, y=4.6f, z=5.7f;则以下的表达式中,值为true的是CA.x > y || x > z B.z > ( y + x ) C.x != y D.x < y & ! ( x < z )8.下列修饰符中,定义类头时能使用的修饰符是CA.private B.static C.abstract D.protected9.设i、j、k为类x中定义的int型变量名,下列类x的构造函数中不正确的是BA.x( int m){ ... } B.void x( int m){ ... }C.x( int m, int n){ ... } D.x( int h,int m,int n){ ... }10.下列对封装性的描述中,错误的是 DA.封装体包含了属性和行为B.封装使得抽象的数据类型提高了可重用性C.被封装的某些信息在封装体外是不可见的D.封装体中的属性和行为的访问权限是相同的11.下列关于包的描述中,错误的是BA.包是若干个类的集合B.包是一种特殊的类型C.包是使用package语句创建的D.包有有名包和无名包两种12.下列关于Applet程序的描述中,错误的是 CA.Applet程序的主类必须是Applet类得子类B.Applet不是完整的独立程序C.Applet程序的主类中应有一个main()方法D.Applet的字节码文件必须嵌套在一个HTML文件中13.下列界面元素中,不是容器的是CA.Dialog B.Frame C.List D.Panel14.下列关于异常处理的描述中,错误的是DA.程序运行时异常由Java虚拟机自动进行处理B.使用try-catch-finally语句捕获异常C.使用throw语句抛出异常D.捕获到的异常只能在当前方法中处理,不能在其他方法中处理15.以下方法不属于迭代器(Iterator)接口所定义的方法的是DA.hasNext()B.next()C.remove()D.nextElement()16.主线程属于(C )A.守护线程B.Thread线程C.用户线程D.Runnable线程二、填空题1.三目运算符的3个操作数中,第一个操作数的类型必须是逻辑型的。
软件工程期末试卷A及解答

信息工程系 07级软件工程课程考试类型:闭卷 A卷答卷时间:90分钟一、判断题(每题1分,共20分)1.测试计划、测试用例和有关的分析报告一般不用长期保存。
()2.软件需求是指用户提出的目标软件系统在功能、性能、行为、设计约束等方面的期望。
()3.软件工程使用的软件支持工具能够自动或半自动地支持软件的开发、管理和文档的生成。
()4.面对日益增长的软件需求,人们显得力不从心。
往往是产生软件危机的原因之一。
()5.软件过程设计不用遵循“自上而下,逐步求精”的原则和单入口单出口的结构化设计思想。
()6.数据流图就是用来刻画数据流动和转换的信息系统建模技术。
()7.PDL经常表现为一种“混杂”形式的语言,它不允许自然语言如英语的词汇与某种结构化程序设计语言(如Pascal、C、Ada等)的语句结构交织在一起。
()8.内聚度标志一个模块内部各成分彼此结合的紧密程度,按其高低程度可分为七级,内聚度越低越好。
()9.质量保证是为了保证产品和服务充分满足消费者要求的质量而进行的有计划,有组织的活动。
()10. 数据字典是数据流图中的数据流动,加工、数据存储、数据的源和终点进行详细定义。
()11. 软件是指用程序设计语言编写的程序,软件开发实际上就是编写程序代码。
()12. 模块化程序设计中,模块越小,模块化的优点越明显。
一般来说,模块的大小都在10行以下。
()13. 集成测试主要由用户来完成。
()14.只有了解用户、了解任务,才能设计出好的用户界面。
()15.开发一个软件项目总存在某些不确定性,即存在风险。
有些风险如果控制得不好,可能导致软件工程第1页(共8页)灾难性的后果。
()16.一个好的开发人员应具备的素质和能力包括善于与周围人员团结协作,建立良好的人际关系,善于听取别人的意见。
()17.快速原型技术适用于软件产品要求大量的用户交互、或产生大量的可视输出、或设计一些复杂的算法等场合。
()18.数据输入的一般准则中包括尽量增加用户输入的动作。
面向对象程序设计(JAVA)期末考试试卷(A卷)

5.import
java.io.* ; public class Reverse { public static void main(String args[ ]) { int i , n =10 ,sum=0; int a[ ] = new int[10]; for ( i = 0 ; i < n ; i ++ ) try { BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); a[i] = Integer.parseInt(br.readLine( )); // 输入一个整数 } catch ( IOException e ) { } ; for ( i = n-1 ; i >= 0 ; i ―― ) sum=sum+I; System.out.print(sum); } } 程序的功能是:
} 程序的输出结果为:__
_
2. abstract class A{
abstract void show(); abstract void show(int i); } Class B extends A{ int x; void show(){ System.out.print("x="+x++); } void show(int i){ x=++i; System.out.println("x="+x++); } } Class AbstractDemo{ public static void main(String[] args) {B b=new B(); b.show(); b.show(10); } } 程序的输出结果是:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
北京林业大学2007--2008学年第I学期试卷试卷名称:面向对象程序设计语言A(A卷)课程所在院系:信息学院考试班级学号姓名成绩试卷说明:1.本次考试为闭卷考试。
本试卷共计 4 页,共 4 大部分,请勿漏答;2.考试时间为120分钟,请掌握好答题时间;3.答题之前,请将试卷和答题纸上的考试班级、学号、姓名填写清楚;4.本试卷所有试题答案写在答题纸上;(特殊要求请详细说明)5.答题完毕,请将试卷和答题纸正面向外对叠交回,不得带出考场;6.考试中心提示:请你遵守考场纪律,参与公平竞争!一.单项选择题(每小题2分,共40分)说明:在每小题列出一组答案,分别标识为A~D,在四个选项中,只有一个是符合题目要求的,请将其代码填在表格题号对应的空白内。
错选或未选均无分。
(1)在每个C++程序中都必须包含有这样一个函数,该函数的函数名为()。
(A) main (B) MAIN (C) name (D) Main(2)以下程序段的输出结果是()。
void main(){ int a=1,b=2,m=0,n=0,k;k=(n=b>a)||(m=a<b);cout<<k<<”,”<<m;}(A) 0,0 (B) 0,1 (C) 1,0 (D) 1,1(3)存储以下数据,占用存储字节最多的是()。
(A) 0 (B)‘0’(C)“0”(D) 0.0(4)在C++中,常量‘C’和“C”两者()。
(A) 完全不同(B) 存储长度相同(C) 类型相同(D) 存储值相同(5)设x是一个bool型的逻辑量,y的值为10,则表达式 x && y的值为()。
(A) 1 (B) 0 (C) 与x值相同(D) 与x值相反(6)函数重载是指()。
(A) 两个或两个以上的函数取相同的函数名,但形参的个数或类型不同(B) 两个以上的函数取相同的名字和具有相同的参数个数,但返回值的类型不同(C) 两个以上的函数名字不同,但形参的个数或类型相同(D) 两个以上的函数取相同的函数名,并且函数的返回类型相同(7)以下关于函数模板叙述正确的是()。
(A) 函数的模板也是一个具体的函数(B) 函数模板的类型参数与函数的参数是同一个概念(C) 通过使用不同的类型参数,函数模板可以生成不同类型的函数(D) 用函数模板定义的函数没有类型(8)函数调用func((exp1,exp2),(exp3,exp4,exp5),(exp6,exp4,exp5))中所含实参的个数为()。
(A) 1 (B) 2 (C) 3 (D) 4(9)有如下程序:#include <iostream.h>class Base{ char c;public:Base(char n):c(n){ }virtual~Base(){cout<<c;}};class Derived:public Base{ c har c;public:Derived(char n):Base(n+1),c(n){ }~Derived(){cout<<c;}};int main(){ Derived d('X');return 0;}执行上面的程序将输出()。
(A) XY (B) YX (C) X (D) Y(10)若int i=10;执行下列语句后,i的值是()。
switch(i){ case 9: i+=1;case 10: i+=1;case 11: i+=1;case 12: i+=1;}(A) 10 (B) 11 (C) 12 (D) 13(11)假定AB为一个类,则执行 "AB x;"语句时将自动调用该类的( )。
(A) 无参构造函数(C) 有参构造函数(B) 拷贝构造函数(D) 赋值重载函数(12)若需要使类中的一个指针成员指向一块动态存储空间,则通常在( )函数中完成。
(A) 析构(B) 构造(C) 任一成员(D) 友元(13)保护继承时,基类的( )在派生类中成为保护成员,不能通过派生类的对象来直接访问该成员。
(A) 任何成员(B)公有成员和保护成员(C) 保护成员和私有成员(D)私有成员(14)声明或定义一个内联函数时,必须在函数开始使用关键字()。
(A) static (B) inline (C) const (D) extern(15)下列对模板的声明中正确的是()。
(A) template<T> (B) template<class T1,class T2>(C) template<class T1,T2> (D) template<C1ass T1,class T2>(16)设x和y均为整型变量,则x||y为假的条件是()。
(A) 它们均为真(B) 其中一个为真(C) 它们均为假(D) 其中一个为假(17)下面的哪个关键字不能作为函数的返回类型?()(A) void (B) int (C) new (D) long(18)假定要对类AB定义加号运算符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为()。
(A) AB operator+(AB & a , AB & b) (B) AB operator+(AB & a)(C) operator+(AB a) (D) AB & operator+( )(19)对于类中定义的成员,其隐含的访问权限为()。
(A) public (B) protected (C) private (D) static(20)程序设计所规定的三种基本控制结构是()。
(A) 输入、处理、输出 (B) 树形、网形、环形(C) 顺序、选择、循环 (D) 主程序、子程序、函数二.判断题(每小题1分,共12分)说明:请判断下列语句是否正确,如果正确请在表格题号对应的空白内用笔打上√;如果错误请在表格题号对应的空白内用笔打上×。
错打或未打均无分。
( )1. 创建派生类对象时,先调用派生类的构造函数,再调用基类的构造函数,当销毁这个对象时顺序正好相反,先调用基类的析构函数,再调用派生类的析构函数。
( )2. 变量分为全局和局部两种,动态局部变量没有赋初值时,其值是不确定的。
( )3. 模板类的成员函数若在类外实现,则必须是模板函数。
( )4. 类的静态成员函数可以不属于整个类。
( )5. 类的友元函数可以访问类的私有成员。
( )6. 常对象必须进行初始化,而且不能被更新。
( )7. 需要基类对象的有些地方不可以使用公有派生类的对象来替代。
( )8. 我们不能用抽象类定义对象,但可以定义抽象类的指针。
( )9. 虚函数的声明只能出现在类定义中的函数实现中。
( )10. 基类中某函数声明为纯虚函数之后,基类中就不能给出函数的实现部分。
( )11. 当一个类的对象离开它的作用域时,系统将自动调用该类的析构函数。
( )12. 关系表达式x+y>5的相反表达式为x+y<=5。
三.读程序写结果(每小题5分,共25分)说明:阅读以下程序,并写出程序运行结果。
1. #include <iostream.h>void main(){ int s=0;for (int i=1; ; i++){ if (s>50) break;if (i%2==0) s+=i;}cout <<"i,s="<<i<<","<<s<<endl;}2.#include <iostream.h>#include <iomanip.h>void LE(int * a,int * b){ int x=*a;*a=*b;*b=x;cout <<*a<<' '<<*b<<endl;}void main(){ int x=10,y=25;LE(&x,&y);cout <<x<<' '<<y<<endl;}3. #include <iostream.h>class Sample{private:int x;static int y;public:Sample(int a){ x=a;x++;y++;}void print(){ cout<<"x="<<x<<",y="<<y<<endl; } };int Sample::y=10;void main(){ Sample s1(20);Sample s2(30);s1.print();s2.print();}4. #include <iostream.h>template <class TT>class FF{ TT a1,a2,a3;public :FF(TT b1,TT b2,TT b3){ a1=b1; a2=b2; a3=b3; }TT Sum() { return a1+a2+a3; } };void main(){ FF <int> x(2,3,4),y(5,7,9);cout <<x.Sum()<<' '<<y.Sum();cout<<endl;}5. #include <iostream.h>class A{ public:A();A(int i,int j);void print();private:int a,b;};A::A(){ a=b=0;cout<<"Default cons called.\n"; }A::A(int i,int j){ a=i;b=j;cout<<"Constructor called.\n"; }void A::print(){ cout<<"a="<<a<<",b="<<b<<endl; } void main(){ A m,n(4,8);m.print();n.print();}四.编程题(共23分)注意:使用规范格式编程,并在适当位置添加注释。
1.(10分)已知6≤a≤30,15≤b≤36,编写程序求出满足方程2a+5b=126的全部整数组解。