当前位置:
文档之家› C++面向对象程序设计实验报告
C++面向对象程序设计实验报告
程序代码: #include<iostream.h>
int fn(int n) {
int s=1; for(int i=1;i<=n;i++) {
s=s*i; } cout<<"n!="<<s<<endl; return s; }
int Cnr(int n,int r) {
cout<<"Please input two numbers:"<<endl; for(;;) { cin>>n>>r; if(n==0&&r==0) {
[实验步骤] 1. 用数组实现程序要求
说明:用一个长度为10的数组存放待排序的数据,数组的定义为 int iArray[10]; 数组排序函数的原型为:
void sort(int num, int iArray[]); 其中num表示数组元素的个数,iArray是数组。
2. 用动态申请空间的方式实现程序要求。 说明:使用指针来实现前面数组的功能 int *piArray; piArray = new int(num);
double area(double x) {
return X=3.14*x*x; } friend double circumference(double x); private: double X; };
double circumference(double x) { double Y; return Y=2*3.14*x; }
int main() {
Cnr(0,0); return 0; } 程序输出: (1)
(2) (3)
2、
1、add、dec 的函数体定义在类的内部
3、GetNum 的函数体定义在类的外部内联函数的使用:定义一个 TestInline
类,该类拥有两个私有整型变量 i,j,为该类添加 3 个内联函数 int add()返回两数之
程序输出: 300 450 500 600 700 [实现要求]:
1. 用一个数组存放各个整数; 2. 在主函数main()中实现数据的输入和输出操作,并用一个函数实现对数组元
素的排序操作。 3. 排序函数调用另一个函数swap()实现两个数组元素的交换。可以使用指针、引用两种方 式实现函数参数的传递:
实验四 复杂数据类型 实验目的 学习数组的定义、初始化、赋值和使用的方法 学习给函数传递数组的方法 学习指针和引用的定义和使用方法 学习字符串的使用方法 学习用指针和引用给函数传递参数 实验内容
1. 数组排序
从键盘读入若干整数,将它们按由低到高排序输出。 [测试数据]: 程序先输出: Please input array number: 用户输入: 5 程序再输出: Please input all the integer: 用户输入: 300 700 600 450 500
Student() {
number=0; name[10]='\0'; age=0; }
Student(int x,char *y,int z); ~Student();
private: int number; char name[10]; int age;
};
Student::Student(int x,char *y,int z) {
实验三 类的定义和使用
一、实验目的 掌握类的概念、类的定义格式、类与结构的关系、类的成员属性和类的封装性; 掌握类对象的定义; 理解类的成员的访问控制的含义,公有、私有和保护成员的区别; 掌握构造函数和析构函数的含义与作用、定义方式和实现,能够根据要求正确定义和重载构 造函数。能够根据给定的要求定义类并实现类的成员函数; 掌握友元函数的含义,友元函数和成员函数的区别。 二、实验内容 1、定义一个圆类,计算圆的面积和周长。 要求:分别用成员函数和友元函数来求圆的面积和周长。 2、定义一个学生类,其中有 3 个数据成员有学号、姓名、年龄,以及若干成员函数。同时 编写主函数使用这个类,实现对学生数据的赋值和输出。 要求: 1、使用成员函数实现对输出的输入、输出; 2、使用构造函数和析构函数实现对数据的输入、输出。 3、定义日期类型 Date。要求有以下面成员: 可以设置日期; 日期加一天操作;
程序二: 定义一个学生类,其中有 3 个数据成员有学号、姓名、年龄,以及若干成员函数。 同时编写主函数使用这个类,实现对学生数据的赋值和输出。 程序代码: #include<iostream.h> #include<string.h>
class Student { public:
input1(int xuehao,char xingming[10],int nianling) {
把它和倒数第二个元素交换为止。 如要按选择排序法对数组30 50 21 39 20排序,则各趟排序后的结果如下所示(带下划线的 数表示参加交换的数): 开始: 30 50 21 39 20 第一趟排序:U20U 50 21 39 U30U 第二趟排序:20 U21U U50U 39 30 第三趟排序:20 21 U30U 39 U50U 第四趟排序:20 21 30 39 50
输入函数,输入格式为“XXXX 年 XX 月 XX 日”。 三、实验要求 写出程序,并调试程序,经验和体会。 完成实验日志和上交程序。
程序一:定义一个圆类,计算圆的面积和周长。 程序代码: #include<iostream.h>
class circle { public:
其中数组的大小num需要由用户预先输入。 [思考问题]
1. 上面两种实现方式对程序的改动大吗? 2. 尝试用不同的方式访问数组中的元素 iArray[i], *(iArray+i), piArray[i], *(piArray+i), 3. iArray和piArray有何共同点?
程序代码: #include<iostream.h> void swap(int *a,int *b) {int c; c=*a; *a=*b; *b=c; } void paixu(int *a,int n) {int i,j; for(j=0;j<n-1;j++)
number=x; strcpy(name,y); age=z; }
Student::~Student() {
cout<<"Number:"<<number<<endl; cout<<"Name:"<<name<<endl; cout<<"Age:"<<age<<endl; }
void main() {
程序输出:
2. 字符排序
修改上面的程序,将数组的操作改为对字符串操作,即从键盘输入一串字符,将它们存放在 字符数组中(形成一个字符串),然后对字符数组中的各个字符排序。 [测试数据]: 输入内容:kapdobc 输出内容:abcdkop [实现要求]:
1. 用字符数组代替上一个实验的整数数组; 2. 不要先输入字符串的长度,在程序中自动计算出字符串的长度。
return i+j; } int dec() {
return i-j; } int GetNum(); private: int i; int j; };
inline int TestInline::GetNum() {
return j; }
#include<iostream.h> int main() {
int a,b; cout<<"Please input two numbers:"<<endl; cin>>a>>b; TestInline T(a,b); cout<<"ADD="<<T.add()<<endl; cout<<"DEC="<<T.dec()<<endl; cout<<"j="<<T.GetNum()<<endl; return 0; } 程序输出:
int x; char y[10]; int z; Student T; T.input1(x,y,z); T.output1(); cout<<"Please input student's number, name and age."<<endl; cin>>x; cin>>y; cin>>z; Student(x,y,z); } 程序输出:
int main() {
double r; double a; double c; cout<<"Please input r."<<endl; cin>>r; circle T; a=T.area(r); cout<<"area="<<a<<endl; c=circumference(r); cout<<"circumference="<<c<<endl; return 0; } 程序输出:
for(i=j;i<n-1;i++) {if(*(a+j) > *(a+i+1)) swap(a+j,a+i+1); }}
void main() {int i,n; cout<<"请输入需排序的整数个数:"; cin>>n; cout<<endl; int *a; a=new int(n); cout<<"请依次输入这些数:"<<endl; for(i=0;i<n;i++) {cin>> *(a+i);} paixu(a,n); cout<<"排序后的顺序为:"; for(i=0;i<n;i++) {cout<<*(a+i)<<" ";} }