};
voidmain()
{Samples1
(2),s2(s1);
s2.disp();
}
解答:
输出为:
x=3。
程序编制题例题【综合分析题】
例1,写出一个梯形类,操作有求面积和周长
分析:
由于要求梯形的面积和周长,那就要为梯形提供上底,下底,高,左边长,右边长等属性。
因此,梯形类描述为:
Classechelon
{
Inttop,bottom,height,llength,rlength;
Public:
Echelon(){。
。
。
}//构造函数
IntArea(){。
。
。
}//求面积
IntPerimeter(){。
。
。
。
}//求周长
}2.设计一个圆类circle和一个桌子类table,另设计一个圆桌类roundtable,它是从前两个类派生的,要求输出一个圆桌的高度、面积和颜色等数据。
解:
circle类包含私有数据成员radius和求圆面积的成员函数getarea();
table类包含私有数据成员height和返回高度的成员函数getheight()。
roundtable类继承所有上述类的数据成员和成员函数,添加了私有数据成员color和相应的成员函数。
本题程序如下:
#include
#include
classcircle
{
doubleradius;
public:
circle(doubler){radius=r;}
doublegetarea(){returnradius*radius*3.14;}
};
classtable
{
doubleheight;
public:
table(doubleh){height=h;}
doublegetheight(){returnheight;}
};
classroundtable:
publictable,publiccircle
{
char*color;
public:
roundtable(doubleh,doubler,charc[]):
circle(r),table(h)
{
color=newchar[strlen(c)+1];
strcpy(color,c);
}
char*getcolor(){returncolor;}
};
voidmain()
{
roundtablert(0.8,1.2,黑色);
cout<<圆桌属性数据:
<cout<<高度:
<cout<<面积:
<cout<<颜色:
<}
3.编写程序,定义一个类test,其成员数据及函数要求如下:
(1)私有数据成员intdata
(2)构造函数两个test()及test(intd),前者将(1)中的数据成员data值设为0;后者将(1)中的数据成员data设定为指定值d
(3)成员函数intsetdate()能在键盘读入一个数值,然后将该数值赋给data4.定义一个抽象类tea代表茶叶,它有1个double类型的保护数据成员cost代表种植成本,它还有一个纯虚函数price用来计算售价:
doubleprice(void)函数返回值为茶叶的售价。
由tea派生出具体类blacktea(红茶),要求如下:
(1)类中定义保护成员数据doubleo_cost,表示红茶的经营成本
(2)定义构造函数blacktea(doublebtc,doublebto_c),将cost和o_cost,数据成员设定为指定值
(3)重载price计算出blacktea的售价。
(假设:
blacktea售价=(cost+o_cost)*1.2)
5.编写一个程序,输入N个学生数据,包括学号、姓名、成绩,要求输出这些学生数据并计算平均分。
分析:
设计一个学生类Stud,除了包括no(学号)、name(姓名)和deg(成绩)数据成员外,有两个静态变量sum和num,分别存放总分和人数,另有两个普通成员函数setdata()和disp(),分别用于给数据成员赋值和输出数据成员的值,另有一个静态成员函数avg(),它用于计算平均分。
在main()函数中定义了一个对象数组用于存储输入的学生数据。
本题程序如下:
#include
#include
#defineN3
classStud
{
intno;
charname[10];
intdeg;
staticintnum;
staticintsum;
public:
voidsetdata(intn,charna[],intd)
{
no=n;deg=d;
strcpy(name,na);
sum+=d;
num++;
}
staticdoubleavg()
{
returnsum/num;
}
voiddisp()
{
printf(%-5d%-8s%3d\n,no,name,deg);
}
};
intStud:
:
sum=0;
intStud:
:
num=0;
voidmain()
{
Studst[N];
inti,n,d;
charna[10];
for(i=0;i{
printf(输入学号姓名成绩:
);
scanf(%d%s%d,&n,na,&d);
st[i].setdata(n,na,d);
}
printf(输出数据\n);
printf(学号姓名成绩\n);
for(i=0;ist[i].disp();
printf(平均分=%g\n\n,Stud:
:
avg());
}
本程序的执行结果如下:
输入学号姓名成绩:
1stud189
输入学号姓名成绩:
2stud278
输入学号姓名成绩:
3stud84
输出数据
学号姓名成绩
1stud189
2stud278
3stud384
平均分=83
6.请编写一个程序,以实现在屏幕上显示如下的乘法表。
1)1
2)24
3)369
4)481216
5)510152025
6)61218243036
7)7142128354249
8)816243240485664
9)918273645546372817.P463-P464函数模板
需要掌握的内容
面向对象程序设计的三大特征
类和对象
类:
C++的一种数据类型,使用类的变量则称为对象。
C++的类是对象的抽象,是进行封装和数据隐藏的工具,包括:
数据成员和成员函数。
一个类可以声明多个对象,对象之间代码共享,数据独立。
C++类的说明
public:
可被本类以外的函数访问,是类与外部的接口;
private:
只能被该类成员函数和友元函数存取和调用;
protected:
可被本类和本类的派生类的成员函数访问,用于类的继承。
成员函数
默认时在类中定义的项都是私有的,类成员函数的外部实现:
使用对象名引用对象的公有成员函数。
方法如下:
对象名.成员函数名(参数列表)
内联函数的概念;定义内联函数的两种格式
1)函数体放在类体内
2)函数体放在类体外,使用inline关键字
构造函数
构造函数的作用是在对象被创建时为对象分配内存空间,对类的数据成员初始化并执行对象的其他内部管理操作。
构造函数与类同名
构造函数可接收参数但不能有返回值,允许重载。
当创建一个类的对象时,系统会自动调用类的构造函数。
若未给类定义构造函数,则编译系统将为该类生成一个默认的构造函数,它没有参数,只简单地把对象中的每个实例变量初始化为0。
析构函数一、C++语言概述
1.了解C++语言的基本符号。
2.了解C++语言的词汇(保留字、标识符、常量、运算符、标点符号等)。
3.掌握C++程序的基本框架(结构程序设计框架、面向对象程序设计框架等)。
4.能够使用VisualC++6.0集成开发环境编辑、编译、运行与调度程序。
二、数据类型、表达式和基本运算
1.掌握C++数据类型(基本类型,指针类型)及其定义方法。
2.了解C++的常量定义(整型常量,字符常量,逻辑常量,实型常量,地址常量,符号常量)。
3.掌握变量的定义与使用方法(变量的定义及初始化,全局变量,局部变量)。
4.掌握C++运算符的种类、运算优先级和结合性。
5.熟练掌握C++表达式类型及求值规则(赋值运算,算术运算符和算术表达式,关系运算符和关系表达式,逻辑运算符和逻辑表达式,条件运算,指针运算,逗号表达式)。
三、C++的基本语句
1.掌握C++的基本语句,例如赋值语句、表达式语句、复合语句、输入、输出语句和空格语句等。
2.用if语句实现分支结构。
3.用switch语句实现多分支选择结构。
4.用for语句实现循环结构。
5.用while语句实现循环结构。
6.用do…while语句实现循环结构。
7.转向语句(goto,continue,break和return)。
8.掌握分支语句和循环语句的各种嵌套使用。
四、数组、指针与引用
1.掌握一维数组的定义、初始化和访问,了解多维数组的定义、初始化和访问。
2.了解字符串与字符数组。
3.熟练掌握常用字符串函数(strlen,strcpy,streat,strcmp,strstr等)。
4.指针与指针变量的概念,指针与地址运算符,指针与数组。
5.引用的基本概念,引用的定义与使用。
注意事项:
搞清楚指针与地址运算符的区别,指针与引用的区别。
五、掌握函数的有关使用
1.函数的定义方法和调用方法。
2.函数的类型和返回值。
3.形式参数与实在参数,参数值的传递。
4.变量的作用域、生存周期和存储类别(自动、静态、寄存器,外部)。
5.递归函数。
6.内联函数。
7.带有缺省参数值的函数。
注意事项:
C++中,函数之间传递参数有传值和传地址两种传递方式。
六、熟练掌握类与对象的相关知识
1.类的定义方式、数据成员、成员函数及访问权限(public,private,protected)。
2.对象和对象指针的定义与使用。
3.构造函数与析构函数。
4.