c语言程序实验————实验报告十
- 实验项目名称: 实验报告10 函数的调用
- 实验项目类型:验证性
- 实验日期:2024 年 5 月 20 日
一、实验目的
1.掌握定义函数的方法
2.掌握函数调用、实参与形参的对应关系、参数的传递方式
3.掌握函数的嵌套调用和递归调用的方法
4.掌握全局变量和局部变量、动态变量和静态变量的概念和使用方法
5.学习多文件程序的编译和运行
二、实验硬、软件环境
Windows计算机、Dev c 6.0
实验内容:
(1)用递归方法求fac(n)=n!
(2)输入长方形的长宽高a,w,h,求体积及3个侧面的面积(用调用自定义函数的方法实现)。
(3)请用自定义函数的形式编程实现求10个同学C语言成绩的平均分,输出平均分及低于平均分的同学成绩。。
(4)请编写两个自定义函数,分别实现求两个整数的最大公约数和最小公倍数,并用主函数调用这两个函数,输出结果(两个整数由键盘输入得到)。
三、实验步骤:
项目一
解题思路
自定义整形函数int fac(int n),if函数定义(n1||n0),return 返回1,else否则返回nfac(n-1);输入主函数int main(),int定义n,m;scanf函数定义n;m=fac(n);其中调用自定义函数fac并将结果赋值给m。printf输出n,m。
核心代码
#include<stdio.h>
int fac(int n)
{
if(n1||n0)
return 1;
else
return nfac(n-1);
}
int main()
{
int n,m;
printf("请输入一个正整数:");
scanf("%d",&n);
m=fac(n);
printf("%d!=%d\n",n,m);
printf("31韩翔-项目1");
}
实验截图
项目二
解题思路
int定义s1, s2, s3; 自定义函数vs (int a, int b, int c) , int定义v,输入表达式v=abc; s1=ab; s2=bc; s3=ac; return返回v;输入主函数int main (),int定义v1, a,w,h; scanf 定义 a,w,h;v1=vs (a,w,h); 其中调用函数vs并将结果赋值给v1, printf 输出体积和三个面面积 v1,s1,s2,s3。
核心代码
#include<stdio.h>
int s1, s2, s3;
int vs (int a, int b, int c)
{
int v;
v=abc;
s1=ab;
s2=bc;
s3=ac;
return v;
}
int main ()
{
int v1, a,w,h;
printf ("请输入长、宽、高:\n");
scanf ("%d%d%d", &a,&w,&h);
v1=vs (a,w,h);
printf ("体积为:%d, s1=%d,s2=%d, s3=%d\n",v1,s1,s2,s3);
printf("31韩翔-项目2");
}
实验截图
项目三
解题思路
自定义函数float avg(float a[10]),int定义i;float定义avg,sum且给sum赋值0;for函数定义(i=0;i<10;i++),输入定义式sum=sum+a[i];avg=sum/10.0;return返回avg;输入主函数int main()float定义score[10],avg1;int i;for函数再次定义(i=0;i<10;i++),scanf调用&score[i];avg1=avg(score);其中调用函数avg并将结果赋值给avg1;printf输出平均成绩,avg1;for函数再定义(i=0;i<10;i++),if函数定义(score[i]<avg1),printf输出低于平均分的成绩score[i]。
核心代码
#include<stdio.h>
float avg(float a[10])
{
int i;
float avg,sum=0;
for(i=0;i<10;i++)
sum=sum+a[i];
avg=sum/10.0;
return avg;
}
int main()
{
float score[10],avg1;
int i;
printf("请输入10个学生的成绩:\n");
for(i=0;i<10;i++)
scanf("%f",&score[i]);
printf("\n");
avg1=avg(score);
printf("平均成绩为:%.2f\n",avg1);
for(i=0;i<10;i++)
{
if(score[i]<avg1)
printf("低于平均分的成绩:%.2f\n",score[i]);
}
printf("31韩翔-项目3");
}
实验截图
项目四
解题思路
自定义函数int x(int a,int b), int定义r,t;if函数定义(b>a)如果b>a那么t=a;a=b;b=t;while函数定义((r=a%b)!=0) 当(r=a%b)!=0,那么a=b; b=r; return返回b; 自定义函数int y(int a,int b) ,int d;输入定义式d=x(a,b);return返回ab/d;输入主函数int main(),int定义a,b,c,d;scanf调用&a,&b;c=x(a,b); d=y(a,b);其中调用函数x,y并将结果分别赋值给c,d; printf输出最大公因数和最小公倍数,c,d。
核心代码
#include<stdio.h>
int x(int a,int b)
{
int r,t;
if(b>a)
{
t=a;
a=b;
b=t;
}
while((r=a%b)!=0)
{
a=b; b=r;
}
return b;
}
int y(int a,int b)
{
int d;
d=x(a,b);
return ab/d;
}
int main()
{
int a,b,c,d;
printf("请输入两个整数a,b: ");
scanf("%d,%d",&a,&b);
c=x(a,b); d=y(a,b);
printf("最大公因数为:%d\n最小公倍数为:%d\n",c,d);
printf("31韩翔-项目4");
}
实验截图
四、实验结果及分析
在项目一中scanf中没加逗号导致代码运行不了,后改正。
在项目三中int定义i后没加分号导致运行不了,后检查出并改正。
在项目四中scanf处少加一个%d,后改正。