C语言 数组 调用函数

Python013

C语言 数组 调用函数,第1张

对于有数组参数的函数,编译程序要为其开辟相应的内存空间,而程序中两个函数

都有数组参数a[n][m],由于n,m是变量,编译程序并不知道n,m的具体值,所以不能

通过编译。

修改:

1.在#include<>下面添加以下伪指令:

#define n 5

#define m 5

2.将函数的参数形式改为:

int sum(int a[n][m])

void pl(int a[n][m])

并按此修改程序文件中所有关于这两个函数的申明和调用即可

程序是什么功能,有什么错误 ,请说明。 追问: 编写程序求两个整数的所有质公约数、最大公约数、最小公倍数和两个数之差的绝对值。要求分别编写五个函数分别实现求两个整数的最小质公约数int zgys(int x,int y)、所有质公约数void zgyssz(int a[100],int x,int y)、最大公约数int gys(int x,int y)、最小公倍数int gbs(int x,int y)和两个数之差的绝对值int fun(int x,int y)。 void zgyssz(int a[100],int x,int y) { int iint zgys(int x,int y)for(i=0i<100i++) { a[i]=zgys(x,y)if(a[i]==1)breakx=x/a[i]y=y/a[i]} } int gys(int x,int y) { int i,j=0,a[100]void zgyssz(int a[100],int,int)zgyssz(a[100],x,y){ int t=1for(i=0i<ji++)t=t*a[i]return t} } 回答: 哪些函数是对应的功能。还有,不是要5个函数吗,怎么只有三个的。 追问: void zgyssz(int a[100],int x,int y) { int iint zgys(int x,int y)for(i=0i<100i++) { a[i]=zgys(x,y)if(a[i]==1)breakx=x/a[i]y=y/a[i]} } int gys(int x,int y) { int i,j=0,a[100]void zgyssz(int a[100],int,int)zgyssz(a[100],x,y){ int t=1for(i=0i<ji++)t=t*a[i]return t} } 那三个是 int zgys(int x,int y) { int f=1,i,minmin=x<y?x:yfor(i=2i<=mini++) {/*判断i是否是x与y的公约数*/ if(x%i==0&&y%i==0) f=ibreak} return f} int gbs(int x,int y) { return x*y/gys(x,y)} int fun(int x,int y) { if(x<y)return y-xelse return x-y} 这三个我做出来了。 回答: 直接说,哪个函数是什么功能的就行了。还有就是,哪个函数有问题。 追问: 最小公倍数 int gbs(int x,int y){ return x*y/gys(x,y)} 两个数之差的绝对值 int fun(int x,int y){ if(x<y)return y-xelse return x-y} 求两个整数的最小质公约数 int zgys(int x,int y){ int f=1,i,minmin=x<y?x:yfor(i=2i<=mini++) {/*判断i是否是x与y的公约数*/ if(x%i==0&&y%i==0) f=ibreak} return f} 求两个整数的所有质公约数 void zgyssz(int a[100],int x,int y) { int iint zgys(int x,int y)for(i=0i<100i++) { a[i]=zgys(x,y)if(a[i]==1)breakx=x/a[i]y=y/a[i]}} 求两个整数的最大公约数 int gys(int x,int y){ int i,j=0,a[100]void zgyssz(int a[100],int,int)zgyssz(a[100],x,y){ int t=1for(i=0i<ji++)t=t*a[i]return t}} 后两个有问题,弄不出来 回答: #include<stdio.h>int nvoid main() { int zgys(int x,int y)void zgyssz(int a[ ],int x,int y)int gys(int x,int y)int a,b,cprintf("请输入两个数:")scanf("%d%d",&a,&b)c=gys(a,b)printf("%d\n",c)} void zgyssz(int a[ ],int x,int y) { int iint zgys(int x,int y)for(i=0i<100i++) { a[i]=zgys(x,y)if(a[i]==1)breakx=x/a[i]y=y/a[i]} n=i+1} int gys(int x,int y) { int i,j=0,a[100]void zgyssz(int a[100],int,int)zgyssz(a,x,y){ int t=1for(i=0i<ni++)t=t*a[i]//这里的个数应该是a[i]的个数n。定为全局变量 return t} } int zgys(int x,int y) { int f=1,i,minmin=x<y?x:yfor(i=2i<=mini++) { if(x%i==0&&y%i==0) { f=ibreak//break要放里面。 } } return f}

希望采纳