《面向对象程序设计》
实验报告
实验一 C++基础练习
院(系):课程名称:面向对象程序设计教师签名:
实验目的和要求
1.掌握C++程序的基本格式与规范,学会编写简单的C++程序。
2.理解C++程序结构的特点。
3.熟悉C++程序基本的输入和输出操作。
4.掌握C++数据类型常量和变量以及修饰符的使用方法。
5.掌握函数定义、函数调用和函数说明的方法。
6.熟悉作用域运算符的功能和基本使用方法。
7.掌握C++内存的动态分配与释放方法。
8.理解引用的概念,掌握引用的使用方法。
实验内容和步骤
1. 调试如下的代码并回答问题。
#include
void main()
{
//First c++ program
char name[10];
cout<<"please input your name:";
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 inline int f(int x) { return 2*x*x+4*x+5; } inline double f(double x) { return 2*x*x+4*x+5; } void main() { int x=5; double y=5.2; cout< cout< } (1)inline的含义和作用是什么? 答:含义:在函数说明前冠以关键字“inline”,该函数就被声明为内联函数,每当程序中出现对该函数的调用时C++编译器使用函数体中的代码插入到调用该函数的语句处,同时用实参取代形参。作用:主要是为了消除函数调用时的系统开销,以提高运行速度。 (2)C允许两个函数同名(函数重载)么,函数重载的作用是什么? 答:不允许,作用:方便使用函数,只要函数参数的类型不同,或者参数的个数不同,或者二者兼而有之,两个或者两个以上的函数可以使用相同的函数名。实现函数编译的多态性。(3)单步调试(F10、F11),记录f(x)和f(y)会分别调用哪段代码,为什么? 答:f(x)会调用int f(int 5) f(y)会调用double f(double 5.2) 因为虽然两个函数名是一样的,形参类型和返回值类型不同,根据所给的实参类型如int型就调用int f(int 5)。 3. 单步调试如下程序并回答问题。 #include int a[]={1,2,3,4,5,6,7,8,9,10}; int sum; void main() { int i; int sum=0; for(i=0;i<10;i++) { if(a[i]%2!=0) sum=sum+a[i]; ::sum=::sum+a[i]; } cout<<" sum of all is : "<<::sum; cout<<" sum of odd is: "< } (1)什么是局部变量和全局变量,其作用域如何界定? 答:全局变量:在函数外定义的变量,可以为本源文件的其他函数所公用,有效范围为从定义变量的位置开始到本源文件结束。局部变量:在一个函数内部定义的变量是内部变量,它只在本函数范围内有效。 (2)在局部变量和全局变量作用域重叠区域,默认哪个变量起作用;如果一定要访问全局变量,怎么实现。 答:默认局部变量起作用。如果一定要访问全局变量,可以用::对所屏蔽的同名全局变量进行访问。 (3)单步调试,查看并记录程序中循环体的两条语句的sum的变化情况,并说明它们是局部变量和全局变量。 答:第一个sum为全局变量,第二个::sum为局部变量。 4.调试如下程序并回答问题。 #include void main() { double *r; r = new double; cin>>*r; cout<<"Area is:"<<3.14*(*r)*(*r); delete r; } (1)C语言的内存申请和释放使用哪个函数 答:内存申请:malloc释放:free (2)C++的内存申请和释放使用哪个函数?简单比较。 答:内存申请:new 释放:delete 使用malloc函数时必须使用sizeof函数来计算所需要的字节数,而new可以根据数据类型自动计算所要分配内存的大小,这就减小了发生错误的可能性。new能够自动返回正确的指针类型,而不必像malloc函数那样,必须在程序中进行强制类型转换,才能使其返回正确的指针类型。 实验二 C++简单程序设计练习 院(系):课程名称:面向对象程序设计教师签名: 实验目的和要求 1.掌握if语句的用法。 2.掌握switch语句的用法。 3.掌握循环和多重循环的用法。 4.掌握函数的定义和调用。 5.掌握数组的定义和基本操作。 实验内容和步骤 1. 根据输入的百分制按五分制的成绩输出,记录和分析实验结果(后续每个实验都有此要求,不再一一注明)。百分制与五分制之间的关系见下表。分别使用if分支结构和switch结 #include int main () { int a; cout<<"从键盘输入百分制:"< cin>>a; if(a>0&&a<60) cout<<"五分制为:1"< 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 void main() { int a,b; cout<<"从键盘输入百分制:"< cin>>a; b=a/10; //对a求商并赋值给b switch(b) //确定b的值为什么值 { case 10 : case 9: cout<<"五分制为:5"< case 8: cout<<"五分制为:4"< case 7: cout<<"五分制为:3"< case 6: cout<<"五分制为:2"< default : cout<<"五分制为:1"< } } 用switch语句实现 分析如上的注释 2. 编程求3~100之间的所有素数,要求编写一个素数判断的函数,然后在主程序中调用。 #include #include int main() { int i; //定义变量i int fun(int); //函数的声明 for(i=3;i<=100;i++) if(fun(i)) cout< } int fun(int n) //函数的定义 { int i,t; //定义两个整型变量 t=sqrt(n); for(i=2;i<=t;i++) //当有能被整除的数则返回0,后则返回1 if(n%i==0) return 0; return 1; } 3. 编写程序列出斐波那契(Fibonacci)数列的前20项。(Fibonacci数列是指前两项为1,后面的每一项都为前两项之和。要求用数组存储数列)。 #include void main() { int a[20]={1,1}; //初始化数组a,a[0]=a[1]=1 int i; 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 int main() { int a[10]; //定义一个整型数组 int i,j,t; //定义三个整型变量i,j,t