lzc复习题及答案2

更新时间:2023-11-25 03:41:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

一、选择题

1.对于面向对象的程序设计(OOP)和过程性(SP)的程序设计,那些说法是

正确的 。

A.面向对象的程序设计和过程性程序设计是两个独立的程序设计范型。

B.面向对象的程序设计和过程性程序设计不是两个独立的程序设计范型,前者

包含后者。将两者分开并列是不妥的。 C.面向对象是编程的总体框架,而过程性是编写解决具体问题的程序段的工具。 D.面向对象只是一种语法现象,而过程性程序设计才是编程的工具。

2.下面有关函数调用的说法哪一个是错误的 。 A.实参与形参的数目要求必须是相同的。

B.实参与形参的对应关系取决于位置而不是名字。

C.实参与对应的形参应类型匹配,即实参的类型可以转化为形参类型。 D.C++有两种调用方式:传值与引用。

3.C++中表示字符A的正确方法是 。 A.’\\65’ B.”A” C.65 D.’A’

4.有关函数重载的要求哪一个是正确的 。 A.必须保证参数类型和返回值类型均不同。 B.必须保证返回值类型不同。 C.必须保证参数的数量不同。 D.必须保证参数类型或数量不同。

5.下列有关枚举类型的说明哪些是错误的?

A.枚举常量(或称枚举成员)是以标识符形式表示的整型量。 B.默认状态下,这个整数就是所列举元素的序号,序号从0开始。

C.类型定义时可以为部分或全部枚举常量指定整数值,其余的枚举常量仍按默

认方式取值。

D.各枚举常量的值可以重复,但各枚举常量标识符必须不同。

6.下列关于动态资源分配的说法中错误的是 。 A.动态分配的资源不仅包括内存,还包括文件。

B.动态内存分配的优点在于可以随时给数组分配所需的内存而不会失败。 C.动态分配的资源通常要求在析构函数中释放。

D.对含有动态分配的数据成员的类对象应该采用深复制。

7.关于多态,下面那些说法是正确的 。 A.多态分静态的(编译时)和动态的(运行时)。 B.运行时的多态与类的层次结构有关。

C.在基类定义了虚函数后,在派生类中重新定义时可以不加关键字virtual。 D.仅使用虚函数并不能实现运行时的多态性,还必须采用指针或引用来调用才

能真正实现运行时的多态性。

1

二、简答题

2.下面4个类定义中,是否有错?如有错请说明错在哪里。 (1) class Square{ private:

int upper_left_x, upper_left_y; int side_length; public: void Square(int x=0,int y=0,int len=2); ~Square();

int draw(); };

构造函数无函数返回类型说明。 (2) class Circle{

private:

register int atom_x,atom_y; auto int radius; public:

Circle(int x=0,int y=0,int radius=3); ~ Circle(); int darw(); };

定义类时成员数据不分配内存,不可加存储类型说明。 (3) class Figure{ public: Figure();

~ Figure(bool have_drawn);

};

析构函数是无参函数。

(4) class Line{ private: int start_x=0,start_y=0; int end_x=0,end_y=0; public: int draw(); int is_on_line(int x,int y);

};

定义类时成员数据不分配内存,不可赋初值。

三、阅读程序段

1.以下是运输公司对所运货物计费的程序。

设每公里每吨的基本运费为p,货物重量为w,总运输里程在某段中的里程为Δs,

2

折扣为d,则该段运费为:p*w*Δs*(1-d)。总费用为各段费用之和,采用不加break的switch语句。 int main(){ int c,s;

double p,w,d,f;

cout<<\输入运输单价p,重量w和里程s:\ cin>>p>>w>>s; f=0; c=s/250; switch(c){ default:d=0.15;f+=p*w*(s-3000)*(1-d);s=3000; case 8: case 9: case 10: case 11: d=0.1;f+=p*w*(s-2000)*(1-d);s=2000; case 4: case 5: case 6: case 7: d=0.08;f+=p*w*(s-1000)*(1-d);s=1000; case 2: case 3: d=0.05;f+=p*w*(s-500)*(1-d);s=500; case 1: d=0.02;f+=p*w*(s-250)*(1-d);s=250; case 0: d=0;f+=p*w*s*(1-d); }

cout<<\运输单价:\重量:\里程:\ cout<<\折扣后运费:\ return 0; }

设输入运输单价、重量和里程为0.5 40 4300,输出结果是什么?

运输单价:0.5 重量:40 里程:4300 折扣后运费:77900

2.下面的程序演示静态局部变量的应用。请写出程序运行的输出结果。 void tripe_it(int); void main(){ int i;

for (i=1;i<=4;i++) tripe_it(i); return; }

void tripe_it(int i){

static int total = 0; // local and static

int ans; // local and automatic ans=i*3; total+=ans;

cout<<\ return; }

Sum of 1*3 to 1*3 is 3 Sum of 1*3 to 2*3 is 9

3

Sum of 1*3 to 3*3 is 18 Sum of 1*3 to 4*3 is 30

3.给出输出的结果。 void swap(int &,int &); int main(){ int i=3,j=5; swap(i,j);

cout<<\ return 0; }

void swap(int &a,int &b){ int temp; temp=a; a=b; b=temp; }

i=5 j=3

4.写出下面的程序输出的数据,这是什么图形? int main(){

int a[10][11]={0,1},i,j; for(i=1;i<10;i++) for(j=1;j<=i+1;j++) a[i][j]=a[i-1][j-1]+a[i-1][j]; for(i=0;i<10;i++){ for(j=1;j<=i+1;j++) cout<

return 0; } 1

1 1

1 2 1

1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1

1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1

1 9 36 84 126 126 84 36 9 1 这是杨辉三角形。

5.写出下列程序的输出结果,并做简单的说明。 class Student{

string coursename; //课程名

4

int classhour; //学时 int credit; //学分 public:

Student(){coursename=\ virtual void Calculate(){credit=classhour/16;} void SetCourse(string str,int hour){ coursename=str; classhour=hour; }

void SetCredit(int x) { credit=x; }

int GetHour(){return classhour;}

void Print(){cout<

<<\学分\

};

class GradeStudent:public Student{ public:

GradeStudent(){};

void Calculate(){SetCredit(GetHour()/20);} };

int main(){

Student s,*ps; GradeStudent g;

s.SetCourse(\英语\ g.SetCourse(\英语\ ps=&s;

ps->Calculate(); ps->Print(); ps=&g;

ps->Calculate(); ps->Print(); return 0; }

英语80学时5学分 英语80学时4学分

这是使用虚函数实现运行时的多态。第一行是本科生,第二行是研究生。

四、填空,完善程序

1.猴子吃桃问题:猴子摘下若干个桃子,第一天吃了桃子的一半多一个,以后每天吃了前一天剩下的一半多一个,到第十天吃以前发现只剩下一个桃子,问猴子共摘了几个桃子。

5

本文来源:https://www.bwwdw.com/article/sg0t.html

Top