《面向对象程序设计》C++实验报告Word下载.docx
- 文档编号:19753440
- 上传时间:2023-01-09
- 格式:DOCX
- 页数:60
- 大小:188.42KB
《面向对象程序设计》C++实验报告Word下载.docx
《《面向对象程序设计》C++实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《《面向对象程序设计》C++实验报告Word下载.docx(60页珍藏版)》请在冰豆网上搜索。
name;
welcome"
name<
endl;
}
(1)C++的注释和C有何不同,
答:
C语言的注释有一种,用/*……….*/作为注释分界符号
C++除保留了这种注释方式之外,还提供了一种更有效的注释方式,该注释以“//”
开始,到行尾结束。
(2)C++的输入和输出所使用的函数及其相应头文件与C有何不同,答:
在C中进行输入输出操作时,常使用函数scanf和printf。
C++除了可以照常使用这两个函数进行输入输出外,还增加了标准输入流对象cin和标准输出流对象cout来进行输入和输出。
Iostream是C++系统定义的一个头文件,在这个文件中声明了程序所需要的输入和输出操作的有关信息。
在C语言中头文件中用“.h”作为后缀,如stdio.h、math.h等。
2.单步调试如下的代码并回答问题。
inlineintf(intx)
{return2*x*x+4*x+5;
}inlinedoublef(doublex){return2*x*x+4*x+5;
}voidmain()
{intx=5;
doubley=5.2;
f(x)<
f(y)<
}
(1)inline的含义和作用是什么,
含义:
在函数说明前冠以关键字“inline”,该函数就被声明为内联函数,每当程序中出现对该函数的调用时C++编译器使用函数体中的代码插入到调用该函数的语句处,同时用实参取代形参。
作用:
主要是为了消除函数调用时的系统开销,以提高运行速度。
(2)C允许两个函数同名(函数重载)么,函数重载的作用是什么,
不允许,作用:
方便使用函数,只要函数参数的类型不同,或者参数的个数不同,或者二者兼而有之,两个或者两个以上的函数可以使用相同的函数名。
实现函数编译的多态性。
(3)单步调试(F10、F11),记录f(x)和f(y)会分别调用哪段代码,为什么,答:
f(x)会调用intf(int5)f(y)会调用doublef(double5.2)因为虽然两个函数名是一样的,形参类型和返回值类型不同,根据所给的实参类型如int型就调用intf(int5)。
3.单步调试如下程序并回答问题。
inta[]={1,2,3,4,5,6,7,8,9,10};
intsum;
inti;
intsum=0;
for(i=0;
i<
10;
i++)
if(a[i]%2!
=0)sum=sum+a[i];
:
sum=:
sum+a[i];
sumofallis:
"
sum;
sumofoddis:
(1)什么是局部变量和全局变量,其作用域如何界定,
全局变量:
在函数外定义的变量,可以为本源文件的其他函数所公用,有效范围为从定义变量的位置开始到本源文件结束。
局部变量:
在一个函数内部定义的变量是内部变量,它只在本函数范围内有效。
(2)在局部变量和全局变量作用域重叠区域,默认哪个变量起作用;
如果一定要访问全局变量,怎么实现。
默认局部变量起作用。
如果一定要访问全局变量,可以用:
对所屏蔽的同名全局变量进行访问。
(3)单步调试,查看并记录程序中循环体的两条语句的sum的变化情况,并说明它们是局部变量和全局变量。
第一个sum为全局变量,第二个:
sum为局部变量。
4.调试如下程序并回答问题。
double*r;
r=newdouble;
*r;
Areais:
3.14*(*r)*(*r);
deleter;
(1)C语言的内存申请和释放使用哪个函数
内存申请:
malloc释放:
free
(2)C++的内存申请和释放使用哪个函数,简单比较。
new释放:
delete
使用malloc函数时必须使用sizeof函数来计算所需要的字节数,而new可以根据数据类型自动计算所要分配内存的大小,这就减小了发生错误的可能性。
new能够自动返回正确的指针类型,而不必像malloc函数那样,必须在程序中进行强制类型转换,才能使其返回正确的指针类型。
实验二C++简单程序设计练习
1.掌握if语句的用法。
2.掌握switch语句的用法。
3.掌握循环和多重循环的用法。
4.掌握函数的定义和调用。
5.掌握数组的定义和基本操作。
1.根据输入的百分制按五分制的成绩输出,记录和分析实验结果(后续每个实验都有此要求,不再一一注明)。
百分制与五分制之间的关系见下表。
分别使用if分支结构和switch结构编写程序。
百分制五分制
590,100
480,89
370,79
260,69
10,59
intmain()
inta;
从键盘输入百分制:
//输入一个百分制的数
a;
if(a>
0&
&
a<
60)cout<
五分制为:
1"
//如果0<
60,输出是五分制为:
1
else
if(a<
70)cout<
2"
//同上以此类推2
80)cout<
3"
//3
90)cout<
4"
//4
=100)cout<
5"
//5
使用if嵌套语句实现某一范围内的输出
具体看注释
inta,b;
b=a/10;
//对a求商并赋值给b
switch(b)//确定b的值为什么值
case10:
case9:
cout<
break;
//为10或9执行此语句输出是五分制为:
5
case8:
//同上
case7:
case6:
default:
//不为以上的值就执行此语句
用switch语句实现
分析如上的注释
2.编程求3,100之间的所有素数,要求编写一个素数判断的函数,然后在主程序中调用。
#include<
math.h>
intmain()
{inti;
//定义变量i
intfun(int);
//函数的声明
for(i=3;
=100;
if(fun(i))cout<
//根据fun(i)的真值,为1时表示为素数则输出
intfun(intn)//函数的定义
inti,t;
//定义两个整型变量
t=sqrt(n);
for(i=2;
=t;
i++)//当有能被整除的数则返回0,后则返回1
if(n%i==0)
return0;
return1;
3.编写程序列出斐波那契(Fibonacci)数列的前20项。
(Fibonacci数列是指前两项为1,后面
的每一项都为前两项之和。
要求用数组存储数列)。
inta[20]={1,1};
//初始化数组a,a[0]=a[1]=1
20;
a[i]=a[i-1]+a[i-2];
//后面每一项都为前两项之和
i++)//输出前20个斐波那契数列
a[i]<
4.编程实现输入10个整数,从小到大排列输出。
inta[10];
//定义一个整型数组
inti,j,t;
//定义三个整型变量i,j,t
从键盘输入十个整数:
//提示性语句从键盘输入十个整数
a[i];
//输入数据
i++)//采用冒泡排序法外部循环
for(j=0;
j<
j++)//内部循环
if(a[j]>
a[j+1])//如果不是从小到大排列则交换位置关系
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
i++)//输出整理好后的数组
实验三类与对象
(一)
1.掌握类、类的数据成员、类的成员函数的定义方式。
2.理解类成员的访问控制方式。
3.掌握对象的定义和操作对象的方法。
4.理解构造函数和析构函数的定义与执行过程。
5.掌握重载构造函数的方式。
6.了解拷贝构造函数的方法。
实验内容
1.声明一个时间类,时间类中有3个私有数据成员(Hour,Minute,Second)和两个公有成员函数(SetTime和PrintTime)。
SetTime根据传递的3个参数为对象设置时间;
PrintTime
负责将对象表示的时间显示输出。
在主函数中,建立一个时间类的对象,设置时间为9点20分30秒并显示时间。
#include<
classtime{//声明的一个时间类time
public:
//公共函数成员
voidSetTime(inti,intj,intk)
Hour=i;
Minute=j;
Second=k;
voidPrintTime()
Hour<
点"
Minute<
分"
Second<
秒"
private:
//三个私有成员
intHour;
intMinute;
intSecond;
};
times;
//定义一个对象s
s.SetTime(9,20,30);
//调用对象s的成员函数SetTime,给s的数据成员赋值
s.PrintTime();
//输出显示出来
2.使用构造函数代替上面的SetTime成员函数,并在主函数中使用构造函数设置时间为10
点40分50秒,并显示该时间。
说明构造函数和SetTime成员函数在使用时的区别。
classtime{
time(inti,intj,intk)//定义构造函数,其名与类名相同
//在构造函数中,对私有数据赋值
times(10,40,50);
//定义类的对象时调用构造函数time
//分别给数据成员Hour、Minute和Second赋初值10、40
和50
说明:
构造函数的作用主要是用来对对象进行初始化,定义对象时被系统自动调用。
而SetTime成员函数赋初值既不方便也容易忘记,甚至可能出错。
3.重载时间类的构造函数(不带参数)使小时、分、秒均为0。
time();
voidPrintTime();
};
time:
time(){
Hour=0;
Minute=0;
Second=0;
inlinevoidtime:
PrintTime()
times1;
s1output:
s1.PrintTime();
4.在时间类的析构函数中输出“Goodbye~”。
说明析构函数的特点和调用时机。
classtime{
time(inti,intj,intk);
//构造函数的声明
~time();
//析构函数的声明
time(inti,intj,intk)//构造函数的定义{
构造函数被调用"
//显示构造函数被调用的信息
~time()//定义析构函数{
goodbye"
voidtime:
PrintTime(){
析构函数的特点:
析构函数名与类名相同,但它前面必须加一个波浪号(~),不返回任何值
是不能说明它的类型的,析构函数没有参数,撤销对象时,编译系统会自动地调用析构函数。
主函数中的语句执行完后,对象的生命周期结束,在撤销时就要调用析构函数,释放分配给
对象的存储空间对显示信息goodbye
5.定义拷贝构造函数并调用。
说明拷贝构造函数的作用特点。
time(inti,intj,intk)
time(consttime&
p)//拷贝构造函数
Hour=p.Hour+1;
Minute=p.Minute-20;
Second=p.Second-40;
times1(10,40,50);
//定义对象s1,调用了普通的构造函数
times2(s1);
//调用拷贝构造函数,用对象s1初始化对象s2
s2.PrintTime();
拷贝构造函数的作用特点:
用于按照需要初始化新对象。
在建立一个新对象时,使用一个已经存在的对象去初始化这个新对象。
实验四类与对象
(二)
实验成绩
所用软件Word文档、VC++软件
1.掌握对象数组的定义与使用方法。
2.理解对象指针的概念,学会用指针引用对象。
3.了解this指针的工作方式。
4.掌握静态数据成员和静态成员函数的基本使用方法。
5.理解友元与友元函数的作用,掌握其使用方法。
实验内容
1定义一个学生(student)类,包含数据成员:
学号(sno)、姓名(name)、年龄(age)、
分数(score),以及成员函数:
输入(input)和显示(print)。
然后定义一个具有10个学生
的数组,实现对这些学生信息的输入和显示。
iostream>
usingnamespacestd;
classMyArray
{public:
MyArray(intleng)
length=leng;
alist=newint[length];
~MyArray()
{deletealist;
voidinput()
length;
alist[i];
voiddisplay()
intj;
j++)
alist[j]<
protected:
int*alist;
intlength;
{intleng;
leng;
MyArrayA(leng);
A.input();
A.display();
return(0);
2.修改上一个程序中的main函数:
定义一个student类的指针p,使其指向上述数组的第0
个元素,并通过该指针实现对10个学生信息的输入和显示。
最后简要说明对象数组、对象
指针和普通数组和指针有何区别和联系。
string>
usingnamespacestd;
classstudent
{private:
intsno;
stringname;
intage;
intscore;
sno>
name>
age>
score;
voidprint()
学号"
sno<
姓名"
年龄"
age<
分数"
score<
studentk[10];
student*p;
=9;
{p=&
k[i];
p->
input();
print();
对象数组的元素是对象,不仅具有数据成员,而且还有函数成员,对象指针就是用于存放对
象地址的变量,对象指针不仅能引用单个对象,也能访问对象数组。
普通数组是存放类型一
样的数据,指针可以通过访问首地址一一访问存放的数值。
3.通过单步调试第一个程序,查看并记录每个元素的地址及其this指针的值,通过对比说明
this指针的作用。
this="
this<
k[i].input();
k[i].print();
sno-858993460age-858993460name{ox00000000’’’’}
score-858993460this指针指向的是对象的初始地址
4.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向对象程序设计 面向 对象 程序设计 C+ 实验 报告