第六次实验.docx
《第六次实验.docx》由会员分享,可在线阅读,更多相关《第六次实验.docx(12页珍藏版)》请在冰豆网上搜索。
第六次实验
一、实验目的
1.学会函数定义、声明、调用的方法。
2.能够识别形参与实参。
3.学会单步调试进入函数和跳出函数的方法。
4.学会用多文件形式组织程序结构。
二、实验环境
(调试程序所使用的软硬件环境)
软件环境:
VC++6.0
硬件环境:
宏基Intel奔4主频2.8GHz,内存256MB
三、实验内容、结果及分析
1.给定平面任意两点坐标(x1,y1)和(x2,y2),求这两点之间的距离(保留2位小数)。
要求定义和调用函数dist(x1,y1,x2,y2)计算两点间的距离。
源程序清单:
(调试好的源程序代码)
//头文件distance.h
doubledist(double,double,double,double);
//主函main.cpp
#include"stdafx.h"
#include
#include
#include"dist.h"
usingnamespacestd;
intmain()
{
doublex1,x2,y1,y2,b;
cout<<"请输入第一个坐标值"<cin>>x1>>y1;
cout<<"请输入第二个坐标值"<cin>>x2>>y2;
b=dist(x1,y1,x2,y2);
cout.setf(ios:
:
fixed);
cout<<"输入的第一个坐标为("<cout<<"输入的第二个标为("<cout<<"两点之间距离为"<(2)<
return0;
}
//函数distance,两点之间距离
#include"stdafx.h"
#include
doubledist(doublex1,doubley1,doublex2,doubley2)
{
doublea;
a=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
returna;
}
主要标识符说明:
(源程序中主要标识符含义说明)
x1,x2,y1,y2,b均双精度型变量,
其中x1,y1为第一个坐标的值,x2,y2为第二个函数坐标的值,x1,x2,y1,y2在主函数中为实参,在自定义的函数中为形参,b为两点之间的距离;
实验结果:
(程序运行结果)
实验中遇到的问题及解决的方法
注意函数的嵌套调用,sqrt没有定义
应加入#incude
2、题目:
编制程序,求圆锥体和圆柱体的体积和。
基本要求:
①设置全局变量pi,以便两个函数使用。
②分别用函数实现求圆锥体和圆柱体的体积。
③在主函数中输入半径和高,调用两个函数,求得体积之和,并输出之。
④要求使用多文件的方式组织程序结构(包括3个.cpp文件和1个.h文件)
源程序清单:
(调试好的源程序代码)
源程序清单:
(调试好的源程序代码)
//头文件columntaper.h
doublepi=3.14;
doublecolumn(double,double);
doubletaper(double,double);
//主函数main
#include"stdafx.h"
#include
#include"columntaper.h"
usingnamespacestd;
intmain()
{
doublec,t,cr,tr,ch,th;
cout<<"请输入圆柱的半径r和高度h"<cin>>cr>>ch;
cout<<"请输入圆锥的半径r和高度h"<cin>>tr>>th;
c=column(cr,ch);
t=taper(tr,th);
cout<<"圆柱体的体积为"<cout<<"圆锥体的体积为"<cout<<"圆柱与圆锥的体积之和为"<return0;
}
//自定义函数:
column圆柱体的体积
#include"stdafx.h"
doublecolumn(doublecr,doublech)
{
externdoublepi;
returnpi*cr*cr*ch;
}
//自定义函数:
taper圆锥体的体积
#include"stdafx.h"
doubletaper(doubletr,doubleth)
{
externdoublepi;
returnpi*tr*tr*th/3;
}
主要标识符说明:
(源程序中主要标识符含义说明)
c,t,cr,tr,ch,th均为双精度型变量,c,cr,ch为圆柱体的体积值,半径和高,t,tr和th为圆锥体的体积,半径和高
定义全局变量双精度型变量pi为圆周率3.14;
实验结果:
(程序运行结果)
实验中遇到的问题及解决的方法
注意函数头文件在主函数中的书写
改后
3、题目求10名学员英语成绩的最高分并按从高到低的顺序排序。
要求:
分别编写求最高分函数和排序函数,在主函数中输入10名学员英语成绩,调用最高分函数和排序函数,显示结果。
源程序清单:
(调试好的源程序代码)
//头文件fh.h
doublemax(doublea[10]);
voidmaopao(doublea[10]);
//主函数main
#include"stdafx.h"
#include
#include"fh.h"
usingnamespacestd;
intmain()
{
doublea[10];
inti=0;
cout<<"请输入成绩"<for(i=0;i<10;i=i+1)
{
cin>>a[i];
}
cout<<"最高成绩为"<maopao(a);
cout<<"从高到低排序为"<for(i=0;i<10;i=i+1)
{
cout<}
return0;
}
//自定义函数max十个数中最大值
#include"stdafx.h"
doublemax(doublea[10])
{
doublemax;
inti;
max=a[0];
for(i=0;i<10;i++)
if(a[i]>max)
max=a[i];
returnmax;
}
//自定义函数:
排序
#include"stdafx.h"
#include
usingnamespacestd;
voidmaopao(doublea[10])
{
inti,j;
doublet;
for(i=0;i<9;i++)
for(j=0;j<9-i;j++)
{
if(a[j]{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
return;
}
主要标识符说明:
(源程序中主要标识符含义说明)
定义数组a[10]双精度型变量维长为10在自定义函数和主函数中均需定义。
I整型变量循环变量,在主函数与自定的函数中均有定义其为局部变量;
Max双精度型变量为数据中的最大值;
T为双精度型变量目的在于交换俩个数的值
实验结果:
(程序运行结果)
实验中遇到的问题及解决的方法
函数必须有返回值,对于排序,不能返回数组
改后:
用void则不需要返回值。
同样能实现函数功能
四、实验体会(心得、收获)
这次实验课我们学习了如何应用函数解决一些问题。
我们要注意应用函数时的一些小错误。
对于函数可以嵌套调用但不可以嵌套定义。
对于一些只需要运行或者返回值不是一个数时,我们就可以通过void来实现。
Void不需要函数返回值,但我们必须在函数内对函数实现进行实际的操作。
在用到函数就不得不用到多文件结构。
用到多文件结构就得有一个头文件来对一些函数进行生命。
还有就是我们可以涉及到MFC来实现可视化,可以通过一些按钮摆脱黑屏时代