0
点赞
收藏
分享

微信扫一扫

桂 林 理 工 大 学实 验 报 告 实验名称实验六 函数

木樨点点 2022-01-26 阅读 51
c语言

桂 林 理 工 大 学

实  验  报  告

班级 计算机类2 学号320205 姓名  实验名称实验 函数 日期 2020年 127

一、实验目的:

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

二、实验环境:

    PC + Windows +Visual C++6.0  

三、实验内容:

(主要内容的文字及贴图)

  1. 写一个函数求两个数的最大公约数。

第一种方法:

#include <stdio.h>

int add(int x,int y);

int main()

{

int x,y;

printf("输入任意两个整数:\n");

scanf("%d,%d",&x,&y);

printf("最大公约数=%d",add(x,y));

return 0;

}

int add(int x,int y)

{

int r;

if(x>y)

{

r=x;x=y;y=r;

}

do

{

r=x%y;  

x=y;

y=r;

}

while(r!=0);

        return(x);

}

第二种方法:

#include <stdio.h>

int add(int x,int y);

int main()

{

int x,y;

printf("输入任意两个整数:\n");

scanf("%d %d",&x,&y);

printf("最大公约数=%d",add(x,y));

return 0;

}

int add(int x,int y)

{

int i;

if(x<y)

{

i=x;x=y;y=i;

}

while(y)//y!=0

{

i=x%y;

x=y;

y=i;

}

        return(x);

}

第三种方法:

#include <stdio.h>

int add(int x,int y);

int main()

{

int x,y;

printf("输入任意两个整数:\n");

scanf("%d %d",&x,&y);

printf("最大公约数=%d",add(x,y));

return 0;

}

int add(int x,int y)

{

int i;

if(x<y)

{

i=x;x=y;y=i;

}

for(i=y;i>=1;i--)

if(x%i==0&&y%i==0)break;

        return(i);

}

  1. 1)下面函数实现的功能是求整数n的阶乘值,请将函数体补充完整。

  float  fac(int n)

{

   ……

}

1.编写主函数,调用上述函数,输出1—10的阶乘值,输出格式为:

1!=1

2!=2

3!=6

……

#include <stdio.h>

int main()

{

int fac(int n);

int a;

for(a=1;a<10;a++)

printf("%d!=%d\n",a,fac(a));

}

int fac(int n)

{

int s=1,i;

for(i=1;i<=n;i++)

s=s*i;

return s;

}

2.另写一个函数,调用求阶乘函数,求组合数值。,编写主函数,调用求组合数值函数,实现以下功能:输入一个正整数,依次输出该整数的各组合数值。如输入6,则输出为:

C(6,1)=6

C(6,2)=15

……

#include <stdio.h>

int main()

{

int fac(int n);

int c(int n,int m);

int a,n;

scanf("%d",&n);

for(a=1;a<n;a++)

printf("c(%d,%d)=%d\n",n,a,c(n,a));

}

int fac(int n)

{

int s=1,i;

for(i=1;i<=n;i++)

s=s*i;

return s;

}

int c(int n,int m)

{

int z;

z=fac(n)/(fac(n-m)*fac(m));

return z;

}

以下函数实现的功能是,判断整数n是否为质数,如果是,则函数值为1,否则函数值为0。

1)请将函数体补充完整。

 int prime(int n)

{

  ……

}

#include <stdio.h>

int main()

{

int prime (int n);

int n,c;

scanf("%d",&n);

c=prime(n);

printf("%d",c);

return 0;

}

int prime(int n)

{

int i;

for(i=2;i<=n;i++)

{

if(n%i==0)break;

}

if(i<n)//判断是否为本身

{

n=0;

}

else n=1;

return n;

}

  1. 编写主函数,调用上述函数,输出300之内所有的质数,输出格式为每行输出10个,并统计质数的个数。

#include<stdio.h>

int main()

{

int prime(int n);

int i,k=0;

for(i=2;i<=300;i++)

if(prime(i)==1)

{

k++;

if(k%10==0)

printf("%6d\n",i);

else

printf("%6d",i);

}

return 0;

}

int prime(int n)

{

int i;

for(i=2;i<=n;i++)

{

if(n%i==0)break;

}

if(i<n)//判断是否为本身

{

n=0;//不是质数

}

else n=1;//质数

return n;

}

  1. 编写一个函数实现求n个数的最小值,主函数中有个n阶方阵,要求求出该方阵每一列最大值中的最小值。思路,先求出每一列的最大值放到一个一位数组中,然后调用函数求n个数的最小值

#include <stdio.h>

#define N 4

int main()

{

int i,j,a[N][N],b[N][N];

    int min(int a[],int n);

for(i=0;j<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++)

{

b[j]=a[0][j];

for(i=1;i<N;i++)

if(b[j]<a[i][j])

b[j]=a[i][j];

}

printf("%d",min(b,N));

return 0;

}

int min(int a[],int n)

{

int m,i;

m=a[0];

for(i=1;i<n;i++)

if(a[i]<m)

m=a[i];

return m;

}

5.以下程序输出结果是:g=4,g=3,k=6

7.以下程序输出结果是a=5,b=3

8.下列输出结果是:2 3 5 7

四、心得体会(150字以上)

通过本次实验,熟悉掌握定义函数、声明函数的方法,掌握调用函数时实际参数与形式参数的对应关系,它们之间的“值传递”方式,掌握参数为数组类型的函数,了解全局变量和局部变量的使用。

举报

相关推荐

0 条评论