第六章实验报告
第六章实验报告
实验项目:函数与宏定义
姓名:王震 实验地点:1教524 实验时间:2021.5.27
实验目的与要求
⑴熟练地掌握函数的定义方法和调用规则。
⑵掌握再C语言程序种主调函数和被条用函数之间进行数据传递的规则。
⑶了解函数的返回值及其类型,并正确使用它。
⑷了解局部变量和全局变量的作用域及它们与存储分类的关系,理解变量的存在性和可见性的概念。
⑸练习递归函数的使用。
实验内容
6.3.1-1
问题的简单描述:编写程序,从键盘输入三边调用三角函数求面积。
实验代码
#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 a,b,c,ts;
scanf("%f,%f,%f",&a,&b,&c);
ts=area(a,b,c);
if(a<b+c&&b<a+c&&c<a+b)
printf("area=%f\n",ts);
else printf("Data error!");
}
问题分析
1要注意前面要包含数学的头文件。
6.3.1-2
问题的简单描述:求阶乘并传回主程序并输出
实验代码
#include<stdio.h>
#define N 5
long function(int i)
{
static long f=1;
f=f*i;
return f;
}
main()
{
long product;
int i;
for(i=1;i<=N;i++)
{
product=function(i);
printf("%d的阶乘是%d\n",i,product);
}
}
6.3.1-3
简单的代码描述:调用gcd()函数求公约数,并输出结果
实验代码
#include<stdio.h>
int gcd(int a,int b)
{
int temp;
int remainder;
if(a<b)
{
int t=a;
a=b;
b=t;
}
remainder=a%b;
while(remainder!=0)
{
remainder=a%b;
a=b;
b=remainder;
}
return a;
}
main()
{
int x,y;
int fac;
printf("Please input two integers:\n");
scanf("%d,%d",&x,&y);
fac=gcd(x,y);
printf("The great common divisor is%d",fac);
}
问题分析:一定要注意大小写的区分。
要使用辗转相除法求公约数。
6.3.2-2
头文件
#include<stdio.h>
double f(double x);
double sab(double a,double b,int n)
{
double h,result,x1,x2,x3=0,t;
int k;
h=(b-a)/n;
x1=f(a);
x2=f(b);
for(k=1;k<=n-1;k++)
{
t=a+k*h;
x3=x3+f(t);
}
result=h*(x1+x2)/2+h*x3;
return result;
}
1/(1+25x^2)
#include<stdio.h>
#include"sab.h"
double f(double x)
{
double result;
result=1/(25+x*x);
return result;
}
void main()
{
double a,b,result;
int n;
printf("Please put a,b,n:");
scanf("%lf,%lf,%d",&a,&b,&n);
result=sab(a,b,n);
printf("result=%lf",result);
}
(x2)*(ex)
#include<stdio.h>
#include<math.h>
#include"sab2.h"
double f(double x)
{
double result;
result=x*x*exp(x);
return result;
}
void main()
{
double a,b,result;
int n;
printf("Please put a,b,n:");
scanf("%lf,%lf,%d",&a,&b,&n);
result=sab(a,b,n);
printf("result=%lf",result);
}
问题分析:要好好思考流程图给的提示。
注意编好函数sab,并用于主函数中
辗转相除法
以除数和余数反复做除法运算,当余数为 0 时,取当前算式除数为最大公约数。
实验小结
1;在打代码的时候还是不够注意大小写的区分,导致出很多麻烦,还应继续注意。
2;要好好理解流程图的含义,流程图是打代码很重要的一部分,下次编写代码时可以先写一流程图出来,这样可方便接下来工作。
3;上课时要多注意听讲。
近期个人学习小结
1;打代码能力有提高,在手速上有提高。
2;有时还是没能注意中文字符和英文字符导致出一些小差错,还应继续努力。
3;上课时应更加努力听讲,减少开小差的频率。