第四次实验报告
实验项目:
1.函数的定义和调用
2.模块化程序设计
姓名:袁诚 实验地点: 教学楼514教室 实验时间:4月30日
一、实验目的与要求
1.函数的定义和调用
·调用area()函数求三角形的面积。
·在求面积函数中运用海伦公式。
2.模块化程序设计
·掌握C语言中定义函数的方法。
·掌握通过“值传递”调用函数的方法。
二丶实验内容
6.4.1实验练习
1.问题描述
一:编写程序,从键盘输出三角形的3条边,调用三角形面积函数求出其面积,并输出结果。
二:编写函数,求出从主调函数传来的数值i的阶乘值,然后将其传回主调函数并输出。
三:编写程序,从键盘输入两个整数,调用gcd()函数求它们的最大公约数,并输出结果。
四:输入函数n,输出高度为n的等边三角形。
2.实验代码
![](https://img2018.cnblogs.com/blog/1616360/201905/1616360-20190504211507153-1292638237.png)
#include <stdio.h>
#include <math.h>
float area(float a,float b,float c)
{
float s,p,area;
s=(a+b+c)/2;
p=s*(s-a)*(s-b)*(s-c);
area=sqrt(p);
return (area);
}
main()
{
float x,y,z,ts;
printf("请输入三角形的三条边:");
scanf("%f%f%f",&x,&y,&z);
if(x+y>z||x-y<z)
{
ts=area(x,y,z);
printf("area=%f",ts);
}
else
{
printf("输入数据有误!");
}
}
#include <stdio.h>
long function(int i)
{
static int f=1;
f=f*i;
return (f);
}
main()
{
int i,n,p;
printf("请输入需要计算阶乘的数:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
p=function(i);
printf("%d的阶乘是:%d
",i,p);
}
}
#include<stdio.h>
int gcd(int a,int b)
{
int t,r;
if(a<b)
{
t=b;
b=a;
a=t;
}
r=a%b;
while(r!=0)
{
a=b;
b=r;
r=a%b;
}
return (b);
}
main()
{
int x,y;
int fac;
printf("please input two integers: ");
scanf("%d%d",&x,&y);
fac=gcd(x,y);
printf("The great common divisor is:%d",fac);
}
#include <stdio.h>
void trangle(int n)
{
int i,j,k;
for(i=1;i<=n;i++)
{
for(j=1;j<n+1-i;j++)
{
printf(" ");
}
for(k=1;k<=i*2-1;k++)
{
printf("*");
}
printf("
");
}
}
main()
{
int n;
printf("请输入一个整数:");
scanf("%d",&n);
trangle(n);
}
3.问题分析
问题:实验三中运行不出结果;实验四的函数调用有一点儿问题。
解决方法:实验三中在外部调用函数的while里加上remainder=a%b,即可使运行结果正常。实验四也可以使用其他的算法来实现功能。
6.4.2实验练习
1.问题描述
一:若正整数A的所有因子(包括1但不包括自身,下同)之和为B,而B的因子之和为A,则称A和B为一对亲密数。求500以内的所以亲密数。
2.实验代码
![](https://img2018.cnblogs.com/blog/1616360/201905/1616360-20190504211907711-212509909.png)
#include <stdio.h>
int facsum(int m)
{
int sum=1,f=2;
while(f<=m/2)
{
if(m%f==0)
{
sum=sum+f;
}
f+=1;
}
return sum;
}
main()
{
int m=3,n,k;
while(m<=500)
{
n=facsum(m);
k=facsum(n);
if(m==k&&m<=n)
{
printf("%d,%d
",m,n);
}
m++;
}
}
3.问题分析
本实验没有遇见问题。
三、实验小结
收获:本次实验,我熟悉了函数调用的使用方法,知道了该如何进行函数的调用,如何灵活地用函数调用的功能实现各种功能,对于函数调用可能存在的问题与需要注意的事项有了更深一步的了解,
不足:本次实验,我发现我对于函数调用的使用方法还存在一部分的不了解与不熟悉,对于各种算法的使用还不清楚,而且对于函数的调用中,可能会出现的问题了解的还不够多,以至于写代码时还是会出现许多错误,还需要更多的加强。