9512.net
甜梦文库
当前位置:首页 >> 计算机软件及应用 >>

程序设计基础试卷A(2008)


(首

页)

试题纸(A 卷)
课程名称: 程序设计基础(二) 考生学号: 适用专业年级:2008 级计算机、软件、网络、电本 考 生 姓 名:

?????????????????????????????????????????????

一、 单项选择题(每题1分,共15分)
1、 关于继承和封装说法正确的是( )。 A)封装就是完全封闭,外部只能通过接口实现互连 B)继承是封装的基础 C)封装是继承的基础 D)子类可只继承父类的部分可继承行为和属性,也可全部继承,就像儿子可继承父亲的部分性格一样 2、 关于结构体、共用体及类的说法正确的是( )。 A)结构体、共用体没有什么不同,都是把不同或相同类型的数据组织为一体 B)一般来说,结构体、共用体只有数据成员,没有成员函数 C)结构体、共用体与类相比,都含有数据成员的成员函数,只是前者是专为面向过程的程序设计的,后 者为面向对象的程序设计的 D)类可只含数据成员或成员函数,不影响使用 3、 假设 person 是一个类,p1 是该类的一个对象,p2 是一个指向 p1 的指针,getname()是其中的一个函数, 则下面对象的使用不正确的是( )。 A)person.getname( ) B)p1.getname( ) C)p1.person::getname( ) D)p2->getname( ) 4、 关于构造函数的说法,正确的是( )。 A)构造函数用于代替类中的一个成员函数在创建对象时给对象赋初值(通常是成员变量) ,它是由人工 设计的,因此可以在任何时候、任何地方来调用它 B)构造函数的名字与类名相同,因此同类的不同对象的构造函数是相同的 C)构造函数的参数多少没有定制,它的返回值的类型为 void 型 D)构造函数的名字与类名相同,因此一个类只有一个构造函数,即构造函数不可重载 5、 关于析构函数的说法,正确的是( )。 A)析构函数用来释放构造函数为对象分配的内存空间。它可以被用户调用,也可以被系统调用 B)析构函数没有数据类型,其返回值为隐含型 C)析构函数可以没有参数,也可以有多个参数 D)析构函数与构造函数不一样,它可以有多个,以方便使用 6、 关于成员函数的重载,说法正确的是( )。 A)就是在类中设计多个函数名相同,参数个数及类型也相同的函数 B)析构函数可以重载 C)函数重载,要求函数名相同,但参数个数不同或参数个数相同但其类型不同 D)构造函数不可重载 7、 假设 person 是一个类,p、q 是它的不同对象,有函数 person f(person &x) ,下列过程中没有调用拷贝构 造函数的是( )。 A)person p(q) ; B)person p=q; C)q=f(p) ; D)person p(10) 8、 关于友元函数的说法正确的是( )。 A)友元函数可以是任何类中的一个函数 B)如果函数在被说明为友元函数的类中定义,则它就是该类的成员函数 C)不属于任何类的函数不可以被说明为友元函数 D)使用友元函数的主要目的是提高程序执行效率,因为它可以直接调用该类的私有变量。 9、 关于静态数据成员的说法正确的是( )。
注:1、教师命题时题目之间不留空白; 2、考生不得在试题纸上答题,教师只批阅答题册正面部分。

(附

1

页 )

A)静态数据成员虽然能实现同类的对象共享数据,但破坏了类的封装性 B)静态数据成员是所有同类对象共享的数据,它不能具体地属于哪一个对象 C)静态数据成员只在类中说明一次即可 D)静态数据成员可在类中声明时进行初始化 10、关于继承的目的和作用,说法不正确的是( )。 A)继承是为了重复利用父类的可用代码,避免重复劳动 B)继承可以增加自己的父类不能实现的功能的代码,使子类的功能更完美,提高程序设计效率 C)子类可以继承父类的函数和数据,以便重复使用 D)子类可以继承父类的所有特性,以便重复使用,这才是继承的目的 11、下列 try、catch 语句块说法不正确的是( )。 A)try 语句块出现之前不允许出现 catch 语句块 B)catch 语句块只能跟在 try 语句块之后,它们之间可以有其他语句 C)try 语句块之后可以紧跟多个 catch 语句块 D)catch 必须有参数 12、假定 AB 为一个类, 则执行 “AB a(4) , b[3] , * p[2] ;” 语句时, 自动调用该类构造函数的次数为 ( A)3 B)4 C)6 D)9

)。

13、假定要对类 AB 定义加号操作符重载成员函数,实现两个 AB 类对象的加法,并返回相加结果,则该成员 函数的声明语句为: ( )。 A)AB operator+(AB & a , AB & b) B)AB operator+(AB & a) C)operator+(AB a) D)AB & operator+( ) 14、如果要对 AB 类中的整型静态变量 c 赋初值 0,则书写语句正确的是( )。 A)int c=0; B)static int c=0; C)int AB:: c=0; D)static int AB:: c=0; 15、在进行完任何 C++流的操作后,都可以用 C++流的有关成员函数检测流的状态;其中只能用于检测输入 流状态的操作函数名称是( )。 A)fail B)eof C)bad D)good

二、 判断题(每题1分,共10分)
1. 2. 3. 4. 5. 为了避免派生类 catch 不能捕获异常,基类 catch 总是放在派生类 catch 后。 同一类的不同对象占有不同的内存空间。 当内联函数被调用时,内联函数的代码在调用处被展开。 数据只有在流中才可以被操作。 把流分为输入流和输出流是相对文件流的, 输出流是数据从文件流向流中, 输入流是数据从流中流向内存 变量。 6. 函数的返回值类型在区别重载函数时起着举足轻重的作用。 7. 多重继承往往产生二义性问题,可用成员名限定法来消除。 8. 基类构造函数的调用顺序是按基类被继承时声明的顺序从右至左调用。 9. 已知:double k=10; 可以用 double &p=10; 表示引用。 10. virtual 只用来说明类声明中的函数原型,不能用在函数实现时。

三、 阅读程序,将程序运行结果填写答题册上。 (每小题5分,共20分)
1、 #include <iostream.h> class B0 { public: virtual void display(){cout<<"B0::display()"<<endl;} class B1: public B0 { public: void display() { cout<<"B1::display()"<<endl; } }; class D1: public B1 { public: void display() { cout<<"D1::display()"<<endl; } };
注:1、教师命题时题目之间不留空白; 2、考生不得在试题纸上答题,教师只批阅答题册正面部分。

};

(附

2

页 )

void main() { B0 b0, *p; B1 b1; p=&b0; p->display(); p=&b1; p->display(); p=&d1; p->display(); }

D1 d1;

2、# include <iostream.h> class A { int a; public: A(int aa=0) { a=aa; } ~A() { cout <<"Destructor A!"<<a<<endl; } }; class B:public A { int b; public: B(int aa=0,int bb=0):A(aa) { b=bb; } ~B() { cout <<"Destructor B!"<<b<<endl; } }; void main() { B x(5),y(6,7); } 3、# include <iostream.h> int a=5; void main() { int a=10,b=20; cout <<a<<' '<<b<<endl; { int a=0,b=0; for (int i=1; i<6; i++) { a+=i; b+=a; cout <<a<<' '<<b<<' '<<::a<<endl; } cout <<a<<' '<<b<<endl; }

}

4、#include <iostream.h> class B1 { public: B1(int i) { cout<<"constructing B1 "<<i<<endl; } ~B1() { cout<<"destructing B1 "<<endl; } }; class B2 { public: B2(int j) { cout<<"constructing B2 "<<j<<endl; ~B2() { cout<<"destructing B2 "<<endl; } }; class B3 { public:
注:1、教师命题时题目之间不留空白;

}

2、考生不得在试题纸上答题,教师只批阅答题册正面部分。

(附

3

页 )

B3() { ~B3() {

cout<<"constructing B3 *"<<endl; cout<<"destructing B3 "<<endl;

} }

}; class C: public B2, public B1, public B3 { public: C(int a, int b, int c, int d): B1(a),memberB2(d),memberB1(c),B2(b){} private: B1 memberB1; B2 memberB2; B3 memberB3; }; void main() { C obj(1,2,3,4); } 5、 #include<iostream.h> void main( ) { Try { int a=8; catch( int x ) { catch( double y ) { }

double b=8.8; throw a<b?a:b; } cout<<”the int value “<<x<<”was thrown”<<endl; } cout<<”the double value “<<y<<”was thrown”<<endl; }

四、 程序填空题(根据题意要求,将程序补充完整,每空2分,共20分)
1、下面程序的功能是输出将 1 元人民币换成 1 分、2 分、5 分的所有方案,请填空。 #include<iostream.h> (1) void main( ) { int i,j,k,s=0; for( i=0; i<=20; i++ ) for( j=0; j<=50;j++ ) { (2) ; if(k>=0) { cout<<setw(3)<<i<<setw(3)<<j<<setw(4)<<k<<endl; s++; } } cout<<”共有方案”<<s<<”种”<<endl; } 2、下面为复数类的定义。 class Complex { public: Complex ( (3) ) //默认为纯虚数,即实部和虚部都为 0 { real=x; image=y; } (4) //对运算符+进行重载实现复数加法 { Complex t; t.real= (5) ; t.image= (6) ; return t; } void disp(){ cout<<real<< “+“<<image<< ”i“; private: double real,image ;
注:1、教师命题时题目之间不留空白; 2、考生不得在试题纸上答题,教师只批阅答题册正面部分。

(附

4

页 )

}; 3、请按下面程序的提示信息将程序填充完整。 #include <iostream.h> class Point //Point 类声明 { public: Point(int x,int y) { X=x; Y=y; (7) ;} int GetX() { return X; } //返回 X 的值 int GetY() { return Y; } //返回 Y 的值 static void GetC() {cout<<" Object id="<<countP<<endl;} //输出 countP 的值 private: int X,Y; (8) ; }; int Point::countP=0;//用来统计已生成的 Point 对象的个数 void main() { (9) ; //指向函数的指针 gc 指向类的成员函数 GetC Point A(4,5); //声明对象 A cout<<"Point A,"<<A.GetX()<<","<<A.GetY(); (10) ; //通过函数指针 gc 调用 GetC 函数 }

五、 编程题(第1小题8分,第2小题10分,第3小题12分,共30分)
1、编写一个程序,至少设计一个点类 Point,求两个点之间的距离。 2、下面为单链表的结点类模板,各成员数据以及成员函数的意义在后面进行了描述,请将其 4 个成员函数的 实现代码补充完整。 template <class T> class Node { private: Node<T> *next; //指向后继结点的指针 public: T data; //数据域 Node (const T& item, Node<T>* ptrnext = NULL); // 构造函数 void InsertAfter(Node<T> *p); // 在本结点之后插入一个同类结点 p Node<T> *DeleteAfter(void); // 删除本结点的后继结点,并返回其地址 Node<T> *NextNode(void) const; // 获取后继结点的地址 }; 3、设计一个倒计时的时钟类,该类包括 days,hours,minutes,seconds 四个成员数据,分别表示倒计时的 天数、小时数、分钟数和秒数,成员函数包括构造函数、显示四个成员数据值的函数和后置――运算符的重载 函数,要求倒计时的最短时间为 10 天 9 小时 8 分 7 秒。

注:1、教师命题时题目之间不留空白;

2、考生不得在试题纸上答题,教师只批阅答题册正面部分。

(附

5

页 )

参考答案
一、 单项选择题(每题1分,共15分)
(1)C (6)C (11)B (2)B (7)D (12)C(B) (3)A (8)D (13)B (4)B (9)B (14)D(C) (5)A (10)D (15)B

二、 判断题(每题1分,共10分)
(1)√ (6)× (2)× (7)√ (3)√ (8)× (4)√ (9)× (5)× (10)√

三、 阅读程序,将程序运行结果填写答题册上。 (每小题5分,共25分)
1、 B0::display() B1::display() D1::display() Destructor Destructor Destructor Destructor 10 15 10 20 35 20 B! A! B! A! 7 6 0 5 4、 constructing B2 2 constructing B1 1 constructing B3 * constructing B1 3 constructing B2 4 constructing B3 * destructing B3 destructing B2 destructing B1 destructing B3 destructing B1 destructing B2

2、

3、

5

5、the double value 8 was thrown

四、 程序填空题(每空2分,共20分)
(1)#include<iomanip.h> (3)double x=0, double y=0 (5)real+y.real (7)countP++; (9)void (*gc)()=Point::GetC (2)k=100-5*i-2*j; (4)Complex operator +(Complex &y) (6)image +y.image (8)static int countP; (10)gc()

五、 编程题(第1小题8分,第2小题10分,第3小题12分,共30分)
1、 #include<iostream.h> #include<math.h> class Point { double x,y; public: Point(double i, double j){x=i;y=j;} double getx(){ return x;} double gety(){ return y;} void disp() { cout<<"("<<x<<"'"<<y<<")"; } };
注:1、教师命题时题目之间不留空白; 2、考生不得在试题纸上答题,教师只批阅答题册正面部分。

(附

1

页 )

double distance(point px,point py) { double d,dx,dy; dx=px.getx()-py.getx(); dy=px.gety()-py.gety(); d=sqrt(dx*dx+dy*dy); return d; } void main() { point p1(2,2),p2(5,5); p1.disp(); cout<<"与"; p2.disp(); cout<<"之间距离="<<distance(p1,p2)<<endl; } 2、 template <class T> Node<T>::Node(const T& item, Node<T>* ptrnext) : data(item), next(ptrnext) { } template <class T> // 返回后继结点的指针 Node<T> *Node<T>::NextNode(void) const {

return next;

}

// 在当前结点之后插入一个结点 p template <class T> void Node<T>::InsertAfter(Node<T> *p) { p->next = next; //p 结点指针域指向当前结点的后继结点 next = p; //当前结点的指针域指向 p } // 删除当前结点的后继结点,并返回其地址 template <class T> Node<T> *Node<T>::DeleteAfter(void) { Node<T> *tempPtr = next; //将欲删除的结点地址存储到 tempPtr 中 if (next == NULL) //如果当前结点没有后继结点,则返回 NULL return NULL; next = tempPtr->next; //使当前结点的指针域指向 tempPtr 的后继结点 return tempPtr; //返回被删除的结点的地址 } 3、 class Clock { public: Clock(int d=10,int h=9,int m=8,int s=7); Clock operator ++(int); void disp(); private:
注:1、教师命题时题目之间不留空白; 2、考生不得在试题纸上答题,教师只批阅答题册正面部分。

(附

2

页 )

int days,hours,minutes,seconds ; }; Clock ::Clock(int d,int h,int m,int s) { int t; t=s+100*m+h*10000+d*1000000; if(t<10090807) { cout<<”Error”; exit(1); } days=d; hours=h; minutes=m; seconds=s; } Clock Clock ::operator --(int) { Clock old=*this; if(days==0&&hours==0&&minutes==0&&seconds==0) return old; seconds--; if(seconds<0) { seconds=59; minutes--; if(minutes<0) { minutes=59; hours--; if(hours<0) days--; } } return old; } void Clock ::disp() { cout<<days<<”天”<<hours<<”小时”<<minutes<<”分”<<seconds<<”秒” <<endl; }

注:1、教师命题时题目之间不留空白;

2、考生不得在试题纸上答题,教师只批阅答题册正面部分。



更多相关文章:
程序设计基础试卷A(2008)_图文.doc
程序设计基础试卷A(2008) - (首 页) 试题纸(A 卷) 课程名称: 程
程序设计基础期末试卷A.doc
20142015 学年第 1 学期闽江学院考试试卷 } case ‘N’: printf(“\nThis is No.\n”); } 考试课程: 《程序设计基础(C 语言) 》 试卷类别:A 卷 ?...
文经《程序设计基础08-09(1)A试卷.doc
2008~2009 学年第一学期 程序设计基础(C++)试卷(A) 考试形式:闭
程序设计基础试卷A卷答案.doc
程序设计基础试卷A卷答案 - 四川工商职业技术学院 2012-2013 第 1 学期 《程序设计基础》期末试卷(A) 专业班级: 学号 姓名 题号 得分 评分人 一 二 三 四 ...
《计算机程序设计基础试卷A卷(有答题卷).doc
《计算机程序设计基础试卷A卷(有答题卷)_教育学_高等教育_教育专区。………...08工业工程程序设计基础... 5页 3下载券 2012计算机程序设计基础... 8页 ...
文经《程序设计基础08-09(1)A试卷.doc
文经《程序设计基础08-09(1)A试卷 - c++ 综合设计题目 文经《程序设计基础08-09(1)A试卷 基本控制结构自测题答案.doc 复习与自测_数据类型与表达式答案....
计算机程序设计基础试卷(A).doc
计算机程序设计基础试卷(A) - 仲恺农业工程学院试卷 《计算机程序设计基础》 2013 至 2014 学年度第 1 学期期 末(A)卷 专业班级 题号一得分 评卷人...
程序设计基础07-08试题及答案.pdf
程序设计基础07-08试题及答案_教育学_高等教育_教育专区。(073)上海大学 ...(7)程序 #include <stdio.h> #include <stdlib.h> main() { int *a, ...
C++程序设计基础()试卷A(2009).doc
(首 页) 试题纸(A 卷) 试题纸( 课程名称: 程序设计基础(二) 考生学号: 适用专业年级: 2008 级计算机科学与技术,软件,网络 考生姓名: ……… 单项选择题(...
上海大学程序设计基础(C)07-08试卷及答案.doc
上海大学程序设计基础(C)07-08冬试卷及答案 - (072) 2007 2008 冬季学期试卷 (072)上海大学 2007-2008 年冬季学期试卷 72 2008 2008.3 课程...
高职C程序设计基础1(A)标答.doc
高职C程序设计基础1(A)标答 - 试卷参考答案(A 卷) 课程名称:程序设计基础(一) 适用专业年级:2008 计算机(专) 、电子技术学院(专) ………...
上海大学程序设计基础(C)08-09冬试卷及答案.doc
上海大学程序设计基础(C)08-09冬试卷及答案 - (082)上海大学 2008-2009 年冬季学期试卷 上海大学 冬季学期试卷 2009.3 课程名: 程序设计基础 ) 课程号:008...
上海大学程序设计基础(C)07-08试卷及答案.doc
上海大学程序设计基础(C)07-08秋试卷及答案 - (071) 2007 2008 (071)上海大学 2007-2008 年秋季学期试卷 71 2007 2007.11 课程号:0086...
程序设计基础试卷(A)-2009-2010(1).doc
2009 河南农业大学 20092010 学年第 1 学期 程序设计基础考试试卷(程序设计基础考试试卷(A 卷)………密………线………题号 分数 一二三四五六...
200804VB程序设计基础期中考卷及答案.doc
200804VB程序设计基础期中考卷及答案_管理学_高等教育_教育专区。VB精选
上海大学程序设计基础(C)07-08试题及答案.doc
上海大学程序设计基础(C)07-08春试题及答案 - (07 2007 2008 (073)上海大学 2007-2008 年春季学期试卷 2008 2008.6 课程号:00863006 学...
西安工业大学2008年C程序设计考试(A)试题.doc
西安工业大学2008年C程序设计考试(A)试题 - 西安工业大学试题纸 学年学期 命题教师 使用班级 学生班级 2007~2008 学年第二学期 集体命题 审批 考试时间 学 ...
程序设计基础08-09冬试卷及答案.pdf
程序设计基础08-09冬试卷及答案_IT认证_资格考试/认证_教育专区。(082)上海...main() { int a, i, g, s, b; /*1*/ for( a=100; a<1000; a+...
200804VB程序设计基础期中考卷及答案.txt
200804VB程序设计基础期中考卷及答案 - 浙江大学城市学院 2007 2008 学年第二学期期中考试试卷 《 VB语言程序设计基础 》 开课单位: 计算分院 ;考试形式:闭...
计算机程序设计基础试卷A.doc
计算机程序设计基础试卷A - 试题纸(A) 课程名称:计算机程序设计基础 考试时
更多相关标签:

All rights reserved Powered by 甜梦文库 9512.net

copyright ©right 2010-2021。
甜梦文库内容来自网络,如有侵犯请联系客服。zhit325@126.com|网站地图