面向对象程序设计》C实验报告.docx
《面向对象程序设计》C实验报告.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计》C实验报告.docx(67页珍藏版)》请在冰豆网上搜索。
面向对象程序设计》C实验报告
《面向对象程序设计》
实验报告
学院:
专业:
班级学号:
姓名:
学期:
教师:
实验一C++基础练习
院(系):
课程名称:
面向对象程序设计教师签名:
班级
学号
实验室
姓名
实验成绩
所用软件
Word文档、VC++软件
实验目的和要求
1.掌握C++程序的基本格式与规范,学会编写简单的C++程序。
2.理解C++程序结构的特点。
3.熟悉C++程序基本的输入和输出操作。
4.掌握C++数据类型常量和变量以及修饰符的使用方法。
5.掌握函数定义、函数调用和函数说明的方法。
6.熟悉作用域运算符的功能和基本使用方法。
7.掌握C++内存的动态分配与释放方法。
8.理解引用的概念,掌握引用的使用方法。
实验内容和步骤
1.调试如下的代码并回答问题。
#include
voidmain()
{
//Firstc++program
charname[10];
cout<<"pleaseinputyourname:
";
cin>>name;
cout<<"welcome"<}
(1)C++的注释和C有何不同?
答:
C语言的注释有一种,用/*……….*/作为注释分界符号
C++除保留了这种注释方式之外,还提供了一种更有效的注释方式,该注释以“//”开始,到行尾结束。
(2)C++的输入和输出所使用的函数及其相应头文件与C有何不同?
答:
在C中进行输入输出操作时,常使用函数scanf和printf。
C++除了可以照常使用这两个函数进行输入输出外,还增加了标准输入流对象cin和标准输出流对象cout来进行输入和输出。
Iostream是C++系统定义的一个头文件,在这个文件中声明了程序所需要的输入和输出操作的有关信息。
在C语言中头文件中用“.h”作为后缀,如stdio.h、math.h等。
2.单步调试如下的代码并回答问题。
#include
inlineintf(intx)
{return2*x*x+4*x+5;}
inlinedoublef(doublex)
{return2*x*x+4*x+5;}
voidmain()
{intx=5;
doubley=5.2;
cout<cout<}
(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.单步调试如下程序并回答问题。
#include
inta[]={1,2,3,4,5,6,7,8,9,10};
intsum;
voidmain()
{
inti;
intsum=0;
for(i=0;i<10;i++)
{
if(a[i]%2!
=0)sum=sum+a[i];
:
:
sum=:
:
sum+a[i];
}
cout<<"sumofallis:
"<<:
:
sum;
cout<<"sumofoddis:
"<}
(1)什么是局部变量和全局变量,其作用域如何界定?
答:
全局变量:
在函数外定义的变量,可以为本源文件的其他函数所公用,有效范围为从定义变量的位置开始到本源文件结束。
局部变量:
在一个函数内部定义的变量是内部变量,它只在本函数范围内有效。
(2)在局部变量和全局变量作用域重叠区域,默认哪个变量起作用;如果一定要访问全局变量,怎么实现。
答:
默认局部变量起作用。
如果一定要访问全局变量,可以用:
:
对所屏蔽的同名全局变量进行访问。
(3)单步调试,查看并记录程序中循环体的两条语句的sum的变化情况,并说明它们是局部变量和全局变量。
答:
第一个sum为全局变量,第二个:
:
sum为局部变量。
4.调试如下程序并回答问题。
#include
voidmain()
{
double*r;r=newdouble;
cin>>*r;
cout<<"Areais:
"<<3.14*(*r)*(*r);
deleter;
}
(1)C语言的内存申请和释放使用哪个函数
答:
内存申请:
malloc释放:
free
(2)C++的内存申请和释放使用哪个函数?
简单比较。
答:
内存申请:
new释放:
delete
使用malloc函数时必须使用sizeof函数来计算所需要的字节数,而new可以根据数据类型自动计算所要分配内存的大小,这就减小了发生错误的可能性。
new能够自动返回正确的指针类型,而不必像malloc函数那样,必须在程序中进行强制类型转换,才能使其返回正确的指针类型。
实验二C++简单程序设计练习
院(系):
课程名称:
面向对象程序设计教师签名:
班级
学号
实验室
姓名
实验成绩
所用软件
Word文档、VC++软件
实验目的和要求
1.掌握if语句的用法。
2.掌握switch语句的用法。
3.掌握循环和多重循环的用法。
4.掌握函数的定义和调用。
5.掌握数组的定义和基本操作。
实验内容和步骤
1.根据输入的百分制按五分制的成绩输出,记录和分析实验结果(后续每个实验都有此要求,不再一一注明)。
百分制与五分制之间的关系见下表。
分别使用if分支结构和switch结构编写程序。
百分制
五分制
90~100
5
80~89
4
70~79
3
60~69
2
0~59
1
#include
intmain()
{
inta;
cout<<"从键盘输入百分制:
"<cin>>a;
if(a>0&&a<60)cout<<"五分制为:
1"<1
else
if(a<70)cout<<"五分制为:
2"<else
if(a<80)cout<<"五分制为:
3"<else
if(a<90)cout<<"五分制为:
4"<else
if(a<=100)cout<<"五分制为:
5"<}
使用if嵌套语句实现某一范围内的输出
具体看注释
#include
voidmain()
{
inta,b;
cout<<"从键盘输入百分制:
"<cin>>a;
b=a/10;//对a求商并赋值给b
switch(b)//确定b的值为什么值
{
case10:
case9:
cout<<"五分制为:
5"<5
case8:
cout<<"五分制为:
4"<case7:
cout<<"五分制为:
3"<case6:
cout<<"五分制为:
2"<default:
cout<<"五分制为:
1"<}
}
用switch语句实现
分析如上的注释
2.编程求3~100之间的所有素数,要求编写一个素数判断的函数,然后在主程序中调用。
#include
#include
intmain()
{inti;//定义变量i
intfun(int);//函数的声明
for(i=3;i<=100;i++)
if(fun(i))cout<
}
intfun(intn)//函数的定义
{
inti,t;//定义两个整型变量
t=sqrt(n);
for(i=2;i<=t;i++)//当有能被整除的数则返回0,后则返回1
if(n%i==0)
return0;
return1;
}
3.编写程序列出斐波那契(Fibonacci)数列的前20项。
(Fibonacci数列是指前两项为1,后面的每一项都为前两项之和。
要求用数组存储数列)。
#include
voidmain()
{
inta[20]={1,1};//初始化数组a,a[0]=a[1]=1
inti;
for(i=2;i<20;i++)
{
a[i]=a[i-1]+a[i-2];//后面每一项都为前两项之和
}
for(i=0;i<20;i++)//输出前20个斐波那契数列
{
cout<}
}
4.编程实现输入10个整数,从小到大排列输出。
#include
intmain()
{
inta[10];//定义一个整型数组
inti,j,t;//定义三个整型变量i,j,t
cout<<"从键盘输入十个整数:
"<for(i=0;i<10;i++)
{
cin>>a[i];//输入数据
}
for(i=0;i<10;i++)//采用冒泡排序法外部循环
{
for(j=0;j<10;j++)//内部循环
{
if(a[j]>a[j+1])//如果不是从小到大排列则交换位置关系
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
for(i=0;i<10;i++)//输出整理好后的数组
{
cout<}
}
实验三类与对象
(一)
院(系):
课程名称:
面向对象程序设计教师签名:
班级
学号
实验室
姓名
实验成绩
所用软件
Word文档、VC++软件
实验目的和要求
1.掌握类、类的数据成员、类的成员函数的定