实验报告一

更新时间:2023-12-01 01:17:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

C++程序设计实验报告

实验一 C++基础

开课实验室:数学实验室 指导老师:韩逢庆 时间:2010.3.18

学院:理学院 专业:信息与计算科学 班级:2008级1班 姓名:张雄 学号:08180109

一、 实验目的

1、进一步了解和熟悉 VC++6.0 开发环境,学会在 VC++6.0 环境下调试程序;

2、熟悉 C++ 中简单的标准输入输出函数的实用; 3、理解 const 修饰符的作用,并学会应用 const 修饰符; 4、理解内置(内联)函数的优缺点并学会使用内置函数; 5、理解和使用函数重载以及带默认参数的函数; 6、使用 new 和 delete 进行动态内存管理; 7、理解和使用引用。 二、 实验内容

程序理解、程序设计 三、 实验要求

1、使用函数重载的方法定义两个重名函数,分别求出整形数平面间两点间距离和双精度平面间两点间距离,如果没有输入第二点的坐标则默认为圆点(0,0)。

2、设计一个函数:exchange(float x, float y, float z) ,当调用 exchange(a,b,c) 时,将 a 的内容赋值给 b , b 的内容赋值给 c , c 的内容赋值给 a ,要求采用引用的方式来实现。

3、设计一个程序,测试 const 的三种用法:指向常量的指针,常指

2008 -2009学年 第2学期

C++程序设计实验报告

针,指向常量的常指针。

4、编写一个函数,实现两个字符串变量的交换,要求参数用引用。 5、设计一个程序,比较内联函数和普通函数在时间开销和目标文件大小等方面的区别。

四、 实验过程设计

略。

五、 实验结果分析 (一)、程序理解

1.#include int max_def( int x, int y) {

return (x>y?x:y); }

int max_def( int x, int y, int z) {

int temp = 0;

return (temp=(x>y?x:y))>z?temp:z; }

double max_def( double x, double y) {

return (x>y?x:y);

2008 -2009学年 第2学期

}

int main() {

int x1 = 0; int x2 = 0; double d1 = 0.0; double d2 = 0.0; x1 = max_def(5,6); x2 = max_def(2,3,4); d1 = max_def(2.1,5.6); d2 = max_def(12.3,3.4,7.8); cout<< \ cout<< \ cout<< \ cout<< \}

问题一:上述程序的输出结果是什么?

问题二:哪些情况可以参与函数的重载?

C++程序设计实验报告

2008 -2009学年 第2学期

C++程序设计实验报告

答:同名函数具有相同的功能,而只是参数的个数和参数的类型不同时可以参与函数的重载。 问题三:①处调用的是哪个函数? 答:调用的是

int max_def( int x, int y, int z) {

int temp = 0;

return (temp=(x>y?x:y))>z?temp:z; }

问题四:②处的输出结果为什么是 d2=12 ,而不是 d2=12.3 ? 答:因为该函数的类型为int型,所以返回整型值。 2. #include int main() {

int *p1 = new int ; ----------------------------------------------------- ① int *p2 = new int (0); ----------------------------------------------------- ② char *p3 = new char [64]; ----------------------------------------------------- ③ return 1; }

问题一:①、②、③处动态申请内存分别代表什么不一样的意思? 答:①处*p1指向一个未初始化的int型对象;

②处*p2指向一个表示为0的int型对象; ③处*p3指向64个char型对象。

问题二:该程序存在什么隐患?改正该程序使隐患消除。 #include int main() {

2008 -2009学年 第2学期

C++程序设计实验报告

int *p1 ; p1= new int ; int *p2 ; p2= new int (0); char *p3 ;

p3= new char [64]; return 1; }

在分配操作结束后,返回的地址值为0,内存申请未成功。 { 3. #include void swap( int a, int b) {

int temp = a; a = b; b = temp; }

void swap( int *a, int *b)

int temp = *a; *a = *b; *b = temp; } int main() { int i = 5; int j = 10;

cout<< \ swap(i,j); ----------------------------------------------------- ① cout<< \

2008 -2009学年 第2学期

C++程序设计实验报告

swap(&i,&j); ----------------------------------------------------- ② cout<< \ return 1; }

问题一:上述程序的输出结果是什么?

问题二:①处函数调用后并不能实现两个数的交换,而②处却可以,为什么?

答:①处交换的是i和j的地址值,②处交换的是i和j的值 问题三:②处调用的是哪个重载函数? 答:void swap( int *a, int *b) {

int temp = *a; *a = *b; *b = temp; }

(二)、程序设计 1. #include #include void main() {

int juli(int,int,int,int);

double juli(double,double,double,double);

2008 -2009学年 第2学期

int a,b,c,d,s;

cout<<\cin>>a>>b>>c>>d; s=juli(a,b,c,d);

cout<<\double e,f,g,h,r;

cout<<\cin>>e>>f>>g>>h; r=juli(e,f,g,h);

cout<<\}

int juli(int x,int y,int z,int t) { int m;

m=sqrt((y-x)*(y-x)+(t-z)*(t-z)); return m; }

double juli(double x,double y,double z,double t) { double m;

m=sqrt((y-x)*(y-x)+(t-z)*(t-z)); return m; }

运行结果:

C++程序设计实验报告

2008 -2009学年 第2学期

2.#include main() { float a,b,c;

void exchange(float &, float &, float &); cout<<\ cin>>a>>b>>c; exchange(a,b,c); cout<<\ cout<<\ cout<<\

}

void exchange(float &x, float &y, float &z) { x=y;y=z;z=x; }

运行结果:

C++程序设计实验报告

2008 -2009学年 第2学期

C++程序设计实验报告

3. #include void main() {

int c=4,d=5,m=6; int const *p1=&c; const int *p2=&d; const int *const p3=&m;

p1=&c; // *p1=d;//error

p2=&d; //*p2=d;//error

//p3=&d;//error

//*p3=d;//error

cout<<\

p3<

运行结果:

2008 -2009学年 第2学期

C++程序设计实验报告

4. #include #define N 10

void swap(char &,char &); void main() { }

void swap(char &s1,char &s2) {

2008 -2009学年 第2学期

char s1[N],s2[N]; int i;

cout<<\cin>>s1;

cout<<\cin>>s2; {

for(i=0;i<10;i++) swap(s1[i],s2[i]);

cout<<\}

C++程序设计实验报告

}

char s3; s3=s1; s1=s2; s2=s3;

运行结果:

5. #include #include using namespace std;

inline double CalArea(double r) { }

double mianji(double r) { }

2008 -2009学年 第2学期

return 3.14*r*r;

return 3.14*r*r;

int main() { int i; double r=3.0; double area1,area2; time_t now; time(&now);

printf(\ for(i=0;i<22222*22222;i++) area1=CalArea(r); time(&now);

printf(\ for(i=0;i<22222*22222;i++) area2=mianji(r); time(&now);

printf(\ cout<

return 0;

}

运行结果:

C++程序设计实验报告

2008 -2009学年 第2学期

C++程序设计实验报告

六、 实验体会

通过实验一的练习,对C++基础有了更进一步的认识,并且理解了 const 修饰符的作用,并学会应用 const 修饰符,以及内置(内联)函数的使用,理解和使用函数重载以及带默认参数的函数;理解和使用引用。

七、 附录:(源代码)

2008 -2009学年 第2学期

本文来源:https://www.bwwdw.com/article/49ft.html

Top