一、实验目的
一、实验目的
1.掌握函数定义的方法。
2.掌握函数实参及形参的对应关系以及“值传递”方式。 3.熟悉函数的嵌套调用和递归调用的方法。
4.熟悉全局变量和局部变量,动态变量、静态变量的概念和使用方法。
二、实验内容
1.编写函数。通过海伦公式p=(a+b+c)/2),计算三角形面积。
【解题思路】根据海伦公式可以看出,需要提供三角形三条边作为已知数据参与计算,计算结果为三角形面积。自定义函数float area(float a, float b, float c),其中形参a、b、c分别对应三角形的三条边,函数返回值为三角形面积,所以函数类型定义为float类型。注意:在main函数中需要先对自定义函数进行声明才能够调用。 #include float a,b,c,s; float area(float a,float b,float c); //函数声明 p(pa)(pb)(pc)(其中 } printf(\"从键盘输入三角形的三条边长:\"); scanf(\"%f,%f,%f\s=area(a,b,c); //调用函数 printf(\"三角形面积为%.2f\\n\ float area(float a,float b,float c) //自定义函数 { } 2.写一个判别素数的函数,在主函数输入一个整数,输出是否素数的信息。 【解题思路】程序的核心任务由自定义函数int prime(int n)来实现,其中形参n即为需要判定的数。自定义函数中初始设置标记变量flag初值为1(首先假设n是素数),然后在[2,sqrt(n)]这个范围内寻找是否有其他可以整除n的数,如果找到,则将flag赋值为0,循环结束。通过函数的返回值flag来标记变量n是否是素数。 #include //计算p的值 //根据海伦公式计算三角形面积 s=sqrt(p*(p-a)*(p-b)*(p-c)); return s; //返回计算得到的三角形面积 { int n,flag; int prime(int n); //函数声明 printf(\"从键盘输入一个整数:\"); scanf(\"%d\ flag=prime(n); //函数调用 if(flag==1) printf(\"%d是素数\\n\ else printf(\"%d不是素数\\n\ } int prime(int n) //自定义函数 { int i,flag=1; for(i=2;i<=sqrt(n);i++) { //如果在[2,sqrt(n)]这个范围内找到了能够整除n的数,将赋值为0,循环结束 if(n%i==0) { flag=0; break; } } return flag; //通过flag的值判定n是否是素数 } flag3.工厂给工人发工资,当确定实发工资数额后,自动确定发多少张100元、50元、10元、5元、1元的钞票。编写函数输出实发工资总额和所需各种钞票的总数目(要求发的总张数最少)。 【解题思路】在主函数中输入实发工资,自定义函数int sum_total(int a),其中形参a即为实发工资。在自定义函数中定义变量c,i,j,k,l,m(其中c为各面额钞票数量之和,i,j,k,l,m分别代表各面额张数),定义变量b为每次求余后的数,先计算100元面额的数量,再以此类推分别计算其他面额的钞票数,最后将所有数量求和并返回给主函数。 #include int a; //定义a为实际工资 int c; //定义c为各面额钞票数 量之和 } int sum_total(int a); printf(\"输入实发工资数额:\"); scanf(\"%d\ c=sum_total(a); //各种面额钞票数量总和 printf(\"实发工资数额%d\\n钞票总数目%d\\n\ int sum_total(int a) { int b; //定义b为每次求余后的数 int c,i,j,k,l,m; 表各面额张数 i=a/100; b=a%100; j=b/50; 量 b=b%50; k=b/10; b=b%10; l=b/5; b=b%5; m=b; c=i+j+k+l+m; return c; } //定义c为各面额钞票数量之和,i,j,k,l,m分别代 //求100面额钞票数量 //工资除去100面额以后的工资 //除去100面额钞票后工资求50面额的钞票数 //各种面额钞票数量总和 因篇幅问题不能全部显示,请点此查看更多更全内容