c语言数组函数运用 c语言数组 函数

C语言 数组 调用函数对于有数组参数的函数,编译程序要为其开辟相应的内存空间,而程序中两个函数
都有数组参数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]);
并按此修改程序文件中所有关于这两个函数的申明和调用即可
C语言编程,关于数组的应用第(1)题:
#include stdio.h
void main(){
int i,a[18];
for(i=17;i9;i--)
a[i]=i+1;
for(i=0;i10;i++)
scanf("%d",a[i]);
for(i=17;i=0;i--)
{
printf("%-3d",a[i]);
if((18-i)%5==0)
printf("\n");
}
}
第(2)题:
#include stdio.h
void arrayadd(int a[]){
int i;
for(i=0;i20;i++)
a[i]+=5;
}
void main(){
int i,a[20];
for(i=0;i20;i++)
{
a[i]=i+1;
printf("%-3d",a[i]);
}
printf("\n");
arrayadd(a);
for(i=0;i20;i++)
printf("%-3d",a[i]);
}
c语言数组函数调用程序是什么功能,有什么错误,请说明 。追问:编写程序求两个整数的所有质公约数、最大公约数、最小公倍数和两个数之差的绝对值 。要求分别编写五个函数分别实现求两个整数的最小质公约数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 i; int zgys(int x,int y); for(i=0;i100;i++) { a[i]=zgys(x,y); if(a[i]==1)break; x=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=1; for(i=0;ij;i++)t=t*a[i]; return t; } }回答:哪些函数是对应的功能 。还有,不是要5个函数吗,怎么只有三个的 。追问:void zgyssz(int a[100],int x,int y) { int i; int zgys(int x,int y); for(i=0;i100;i++) { a[i]=zgys(x,y); if(a[i]==1)break; x=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=1; for(i=0;ij;i++)t=t*a[i]; return t; } } 那三个是 int zgys(int x,int y) { int f=1,i,min; min=xy?x:y; for(i=2;i=min;i++) {/*判断i是否是x与y的公约数*/ if(x%i==0y%i==0) f=i; break; } return f; } int gbs(int x,int y) { return x*y/gys(x,y); } int fun(int x,int y) { if(xy)return y-x; else return x-y; } 这三个我做出来了 。回答:直接说,哪个函数是什么功能的就行了 。还有就是,哪个函数有问题 。追问:最小公倍数 int gbs(int x,int y){ return x*y/gys(x,y);} 两个数之差的绝对值 int fun(int x,int y){ if(xy)return y-x; else return x-y;} 求两个整数的最小质公约数 int zgys(int x,int y){ int f=1,i,min; min=xy?x:y; for(i=2;i=min;i++) {/*判断i是否是x与y的公约数*/ if(x%i==0y%i==0) f=i; break; } return f;} 求两个整数的所有质公约数 void zgyssz(int a[100],int x,int y) { int i; int zgys(int x,int y); for(i=0;i100;i++) { a[i]=zgys(x,y); if(a[i]==1)break; x=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=1; for(i=0;ij;i++)t=t*a[i]; return t; }} 后两个有问题,弄不出来回答:#includestdio.h int n; void main() { int zgys(int x,int y); void zgyssz(int a[ ],int x,int y); int gys(int x,int y); int a,b,c; printf("请输入两个数:"); scanf("%d%d",a,b); c=gys(a,b); printf("%d\n",c); } void zgyssz(int a[ ],int x,int y) { int i; int zgys(int x,int y); for(i=0;i100;i++) { a[i]=zgys(x,y); if(a[i]==1)break; x=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=1; for(i=0;in;i++)t=t*a[i];//这里的个数应该是a[i]的个数n 。定为全局变量 return t; } } int zgys(int x,int y) { int f=1,i,min; min=xy?x:y; for(i=2;i=min;i++) { if(x%i==0y%i==0) { f=i; break; //break要放里面 。} } return f; }

推荐阅读