C语言实验函数

桂 林 理 工 大 学
实 验 报 告
实验名称 函数 日期 2019年 1月3日
一、 实验目的:

  1. 掌握定义函数、声明函数的方法。
  2. 掌握调用函数时实际参数与形式函数的对应关系,他们之间的“值传递”方式。
  3. 掌握参数为数组类型的函数。
  4. 了解全局变量和局部变量的使用。
    二、实验环境:
    Visual C++

三、实验内容:
(写出主要的内容)

  1. 写一个函数求两个数的最大公约数。
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.通过比较不同的程序的不同理解了程序的作用

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值