第六章实验报告

第六章实验报告

实验项目:函数与宏定义

姓名:王震 实验地点: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;上课时应更加努力听讲,减少开小差的频率。

posted @ 2021-06-03 20:08  王雨辰。  阅读(50)  评论(0编辑  收藏  举报