函数与宏定义

函数与宏定义实验报告

姓名:陈英卉   实验地点:一教522   实验时间:5月27日

一、实验目的与要求:

1.掌握函数的定义方法和调用规则。
2.掌握C语言程序中主调函数和被调函数之间进行数据传递的规则。
3.了解函数的返回值及其类型,并正确使用。
4.了解局部变量和全局变量的作用域及存储分类关系理解变量存在性和可见性的概念。
5.练习递归函数的使用。
6.理解宏的概念,掌握定义无参宏和带参宏的方法。
7.理解文件的概念并掌握其用法。
8.理解内部函数和外部函数,掌握外部函数的编译。

二、实验内容:

实验练习一:6.3

#include<stdio.h>
float area(float a,float b,float c)
{
	float s,p,area;
	s=(a+b+c)/2;
	p=s*(s-a)*(s-c)*(s-b);
	area=sqrt(p);
	return(area);
}
main()
{
	float a,b,c,ts;
	printf("请输入三角形三边长:");
	scanf("%f%f%f",&a,&b,&c);
	ts=area(a,b,c);
	if((a+b)>c&&(a+c)>b&&(b+c)>a)
	printf("面积=%f\n",ts);
	else 
	printf("请重新输入!");
}

实验练习二:6.4

int 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\n",i,product);	
	}
}

实验练习三:6.5

int gcd(int a,int b)
{
	int temp;
	int remainder;
	if(a<b)
	{
	temp=a;a=b;b=temp;	
	}
	remainder=a%b;
	while(remainder!=0)
	{
		a=b;b=remainder;remainder=a%b;
	}
	return b;
}
main()
{
	int x,y;
	int fac;
	printf("请输入两个整数:");
	scanf("%d%d",&x,&y);
	fac=gcd(x,y);
	printf("The great common divisor is%d",fac);
}

实验练习四:6.6

void trangle(int n)
{
	int i,j;
	for(i=0;i<n;i++)
	{
		for(j=0;j<=n-i;j++)
		printf(" ");
		for(j=0;j<=2*i;j++)
		printf("*");
		putchar('\n');
	}
}
main()
{
	int n;
	printf("请输入一个数:n=");
	scanf("%d",&n);
	printf("\n");
	trangle(n);
	return 0;
}

辗转相除法

欧几里得算法是用来求两个正整数最大公约数的算法。古希腊数学家欧几里得在其著作《The Elements》中最早描述了这种算法,所以被命名为欧几里得算法。
扩展欧几里得算法可用于RSA加密等领域。

1997 / 615 = 3 (余 152)
615 / 152 = 4(余7)
152 / 7 = 21(余5)
7 / 5 = 1 (余2)
5 / 2 = 2 (余1)
2 / 1 = 2 (余0)
至此,最大公约数为1
以除数和余数反复做除法运算,当余数为 0 时,取当前算式除数为最大公约数,所以就得出了 1997 和 615 的最大公约数 1。

心得体会

了解函数的返回值及其类型,并正确使用。
了解局部变量和全局变量的作用域及存储分类关系理解变量存在性和可见性的概念。
练习递归函数的使用。
理解宏的概念,掌握定义无参宏和带参宏的方法。
理解文件的概念并掌握其用法。
理解内部函数和外部函数,掌握外部函数的编译。
posted @ 2021-06-07 20:38  MeYiYan  阅读(107)  评论(0编辑  收藏  举报