第四次实验报告
第四次实验报告
实验项目:
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\n",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("\n");
}
}
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\n",m,n);
}
m++;
}
}