C语言函数与宏定义实验报告
C语言函数与宏定义实验报告
实验报告(四)
姓名:王曼霖 实验时间:2021.5.27 实验地点:一教524教室
实验目的:
1、掌握函数的定义方法和调用规则
2、掌握在C语言程序中主调函数和被调函数之间进行数据传递的规则。
3、了解函数的返回值及其类型,并正确使用。
4、了解局部变量和全局变量的作用域及它们与存储分类的关系,理解变量的存在性和可见性的概念。
5、练习递归函数的使用。
6、理解宏的概念,掌握定义无参宏和带参宏的方法。
7、理解文件的概念,并掌握其用法。
8、理解内部函数和外部函数,掌握外部函数的编译和连接方法。
实验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",x,y);
scanf("%d%d",&x,&y);
fac=gcd(x,y);
printf("The great common discover is %d",fac);
}
运行图
小结:
1、int型变量占两个字节的存储空间,但求的值太大时就存放不下,所以要用长整型整数来存放,long型变量占4个字节的存储空间。 |
实验6_7 求500以内的亲密数对
若正整数A的所有因子(包括1但不包括自身,下同)之和为B,而B的因子之和为A,则A与B为一对亲密数。
#include<stdio.h>
int facsum(int m)
{
int sum=1,f;
for(f=2;f<=m/2;f++)
{
if(m%f==0)
{
sum=sum+f;
}
}
return sum;
}
main()
{
int m=3,n,k;
for(m=3;m<=500;m++)
{
n=facsum(m);
k=facsum(n);
if(m==k&&m<=n)
{
printf("%d,%d\n",m,n);
}
}
}
运行图
小结:
1、在facsum(m)模块中,求出m所有的因子,并将它们的和作为返回值。
2、在主函数中,for循环m=3开始调用facsum(m),再计算m是否有亲密数对。 |
实验6_6
问题描述:
输入n,输出高度为n的正三角形。
#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。\n");
scanf("%d",&n);
printf("\n");
trangle(n);
}
运行图
小结:
1、首先注意头文件的使用,使用数学公式时,头文件应使用<math.h>。 |
辗转相除法
欧几里得算法又称辗转相除法,是指用于计算两个非负整数a,b的最大公约数。
|
实验小结
1、C语言程序实验需要熟悉编码规则,具有一定的逻辑能力。熟悉关键词以及命名规则 2、实验涉及到数学公式是要注意头文件的使用,项目需要外源文件是命名时使用.h属性的文件拓展名保存。 3、当自己想不出问题的代码时,可以参照书本上提示的流程图。 |
个人学习小结
1、计划从头开始熟记关键词及变量、标识符的命名规则;掌握书本上已有的各项定义,利用课余时间熟悉代码,并提升自己的代码速度。
2、将之前做过的实验进行复习总结,再重新打一遍,重新构建逻辑框架。 3、希望老师可以给出我们复习重点,怎样有效的进行复习。重点加强代码部分的练习以及课本重点部分的复习,如宏定义部分以及数组、递归的使用。 |