OOP技术:面向对象技术1-10章习题.doc
文本预览下载声明
OOP技术:习题
第1章 习 题
1. 什么是面向对象技术?
2. 面向对象与面向过程程序设计有什么不同?
3. 面向对象技术有哪些优点?
4. 面向对象技术中的封装性有何优缺点?如何克服这些缺点?
5. 为什么要应用继承机制?
6. C++对多态性的支持体现在哪些方面?
7. 目前常用的面向对象程序设计语言有何异同?
8. 什么是.NET?
第2章 习 题
1. 写出下面程序的运行结果。
#include iostream.h
void main()
{
int* a;
int* p=a;
int b=10;
p=b;
cout*aendl;
cout*pendl;
}
2. 写出下面程序的运行结果。
#include iostream.h
void main()
{
int iarray[10]={0,2,4,6,8,10,12,14,16,18};
int sum=0;
int* iptr=iarray;
for(int i=0;i10;i++)
{
sum+=*iptr;
iptr++;
}
coutsum issumendl;
}
3. 写出下面程序的运行结果。
#include iostream.h
int m=8;
int add3(int x,int y=7,int z=m)
{ return x+y+z; }
void main()
{
int a=1,b=2,c=3;
coutadd3(a,b)endl;
coutadd3(10)endl;
}
4. 编程求所有的水仙花数。如果一个三位数的个位数、十位数和百位数的立方和等于该数本身,则称该数为水仙花数。
5. 编程求1000以内所有素数。
6. 编写一个可以打印任何一年日历的程序。
7. 在10000以内验证哥德巴赫猜想之“1+1”命题:任意大的偶数,都可以表示为两个素数之和。
8. 编写一个函数,用冒泡法对输入的十个整数从小到大排序。
9. 编写一个函数,输入一个十六进制数,输出相应的十进制数。
10. 将给定的一个二维数组(3×3)转置,即行列互换。
11. 用非递归的函数调用方式求fibonaci数列第n项。fibonaci数列形如:
0,1,1,2,3,5,8,13,┄
其通项为:F0=0;F1=1;┄;Fn=Fn-1+Fn-2。
12. 编写重载函数max,分别返回字符数组、int数组、long数组、float数组、double数组和字符串数组的最大元素。
第3章 习 题
1. 类定义由哪些部分组成?在定义和使用时要注意什么问题?
2. 说明一个类的公有成员、保护成员和私有成员的区别。
3. 何时执行类构造函数及析构函数?若该对象作为类的成员,何时执行其构造函数和析构函数?
4. 创建一个Employee类,该类中有字符数组,表示姓名、街道地址、市、省和邮政编码。其功能有修改姓名、显示数据信息。要求其功能函数的原型放在类定义中,构造函数初始化每个成员,显示信息函数要求把对象中的完整信息打印出来。其中数据成员为保护的,函数为公有的。
5. 修改第4题中的类,将姓名构成Name类,其名和姓在该类中为保护数据成员,其构造函数为接受一个指向完整姓名字符串的指针。该类可显示姓名。然后将Employee类中的姓名成员(字符数组)修改为Name类对象。
6. 改正下列程序中的错误,并说明理由。
程序1:
include iostrea.h;
class Student
{
public
void Student()
void display()
{
cinnumber:numberendl
coutname:nameendl;
coutscore:scoreendl;
private:
int number,char* name,float score;
}
程序2:
include iostream.h;
class example()
{
private:
int date;
static int count
public;
void example(int y=10)(date=y;)
(
coutdate=date;
return count;
)
}
7. 写出下面程序的运行结果。注意:构造函数和析构函数的执行次序、构造函数的初始化表#include iostream.h
class Ex
{
public:
Ex(int x,char c=c);
~Ex()
{
coutBendl;
}
void o
显示全部