第四次实验报告
函数与宏定义实验报告
姓名:石寿南 实验地点:一教522 实验时间:5月27日
一.实验目的与要求
<1>掌握函数的定义方法和调用规则;
<2>掌握在C语言程序中主调函数和被调用函数之间进行数据传递的规则;
<3>了解函数的返回值及其类型,并正确使用它;
<4>了解局部变量和全局变量的作用域及它们与存储分类的关系,理解变量的存在性和可见性的概念;
<5>练习递归函数的使用;
<6>理解宏的概念,掌握定义无参宏和带参宏的方法。了解文件包含的概念,掌握其用法;
<7>理解内部函数和外部函数,了解外部函数的编译和连接方法。
二.实验内容
1.实验6.3
#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; printf("请输入三角形的三边:\n",a,b,c); scanf("%f %f %f",&a,&b,&c); ts=area(a,b,c); if(a+b>c&&b+c>a&&a+c>b) printf("area=%f\n",ts); else printf("Data error!"); }
2.实验6.5
#include<stdio.h> 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("请输入两个整数\n"); scanf("%d%d",&x,&y); fac=gcd(x,y); printf("The great common divisor is%d",fac); }
3.实验6.5
#include<stdio.h> 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("请输入两个整数\n"); scanf("%d%d",&x,&y); fac=gcd(x,y); printf("The great common divisor is%d",fac); }
4.实验6.6
#include<stdio.h> 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;
三、辗转相除法
辗转相除法, 又名欧几里德算法,是求两个正整数之最大公约数的算法。它的具体做法是:用较大数除以较小数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。如果是求两个数的最大公约数,那么最后的除数就是这两个数的最大公约数。 另一种求两数的最大公约数的方法是更相减损法。
四、实验小结
1;在打代码的时候还是不够注意大小写的区分。
2;要好好理解流程图的含义,流程图是打代码很重要的一部分。