桂 林 理 工 大 学
实 验 报 告
实验名称 函数 日期 2019年 1月3日
一、 实验目的:
- 掌握定义函数、声明函数的方法。
- 掌握调用函数时实际参数与形式函数的对应关系,他们之间的“值传递”方式。
- 掌握参数为数组类型的函数。
- 了解全局变量和局部变量的使用。
二、实验环境:
Visual C++
三、实验内容:
(写出主要的内容)
- 写一个函数求两个数的最大公约数。
int gys(int x,int y)
{int k;
if(x<y) {k=x;x=y;y=k;}
for(k=y;y>0;y--)
if(x%k == 0&&y%k == 0)
return k;
}
#include<stdio.h>
int main()
{
int a,b,c;
scanf("%d %d",&a,&b);
int gys(int x,int y);
c=gys(a,b);
printf("最大公约数=%d\n",c);
}
输入 18 6
输出 最大公约数=6
2. 下面函数实现的功能是求整数n的阶乘值,请将函数体补充完整。
float fac(int n)
1) 编写主函数,调用上诉函数,输出1—20的阶乘值,输出格式为:
1!=1
2!=2
3!=6
……
float fac(int n)
{
int sum=1,i;
for(i=n;i>1;i--)
sum=sum*i;
if(n == 1|| n==0) sum=1;
return sum;
}
#include<stdio.h>
int main()
{
int i,x,n;
float fac(int n);
for(i=1;i<=20;i++)
{
x=fac(i);
printf("%d!=%d",i,x);
printf("\n");}
return 0;
}
1!=1
2!=2
3!=6
4!=24
5!=120
6!=720
7!=5040
8!=40320
9!=362880
10!=3628800
11!=39916800
12!=479001600
13!=1932053504
14!=1278945280
15!=2004310016
16!=2004189184
17!=-288522240
18!=-898433024
19!=109641728
20!=-2102132736
2) 另写一个函数,调用求阶乘函数,求组合数值。C(n,m)=p(n,m)/m!=n!/(n-m)!*m!)
3) 编写主函数,调用求组合数值函数,实现以下功能:输入一个正整数,依次输出该整数的各组合数值。如输入6,则输出为:C(6,1)=6 C(6,2)=15
3. 以下函数实现的功能是,判断整数n是否为质数,如果是,则函数值为1,否则函数值为0
1) 请将函数体补充完整。
Int prime(int n)
{……}
2)编写主函数,调用上诉函数,输出300以内所有的质数,输出格式为每行输出10个,并统计质数的个数。
4.编写一个函数实现求n个数的最小值,主函数中有个n阶方程,要求求出该方阵每一列最大值中的最小值。思路,先求出每一列的最大值放到一个一维数组,然后调用函数求n个数的最小值。
#include<stdio.h>
#define N 4
int main()
{
int i,j;
int a[N][N],max[N];
for(i=0;i<N;i++)
{for(j=0;j<N;j++)
{scanf("%d",&a[i][j]);
printf("%4d",a[i][j]);
}
printf("\n");
}
for(j=0;j<N;j++)
max[j]=a[0][j];
for(i=0;i<N;i++)
for(j=0;j<N;j++)
if(max[j]<a[i][j]) max[j]=a[i][j];
for(j=0;j<N;j++)
printf("%d ",max[j]);
return 0;
}
输入1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
输出 1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
13 14 15 16
四、心得体会:
1.通过该次的上机能较好掌握编程的基本方法
2.通过比较不同的程序的不同理解了程序的作用