Ⅰ 关于c语言中数组作为函数参数的函数之间调用问题

1、新建一个数组作为参数项目,如图所示:

Ⅱ C语言一维数组函数间的调用

1)首先删除函数就有问题,你传入的参数i在哪里发挥作用了?只是把数组顺序版前移了,应权该把k=0改为k=i
2)你在n=getData(a);后面,打印一下a数组的内容,可能这里就不对,这个地方数组是传不出来的,你可以看看。
3)你查一下数据在函数参数中的用法,在子函数内对数组的修改应该传不出来,你把a数组作为全局变量使用才有可能得到结果。

Ⅲ 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语言中调用一个函数并加入一个数组要有循环

#include<stdio.h>

intfun(inta[5],intn)//求数组前n个元素的内和容
{
intsum=0,i;
for(i=0;i<n;++i){
sum+=a[i];
}
returnsum;
}

intmain()
{
inta[5]={1,2,3,4,5};
printf("%d ",fun(a,5));
}

Ⅳ c语言中调用函数的返回值,如果是数组,主函数要输出这个数组怎么实现啊

用指针,另外保存数据的变量退出函数时不得消失。

例如:

#include<stdio.h>

int * fun(int n)

{

int i;

static int a[100]; // 这里用static

for (i=0;i<n;i++) a[i]=i;

return &a[0];

}

void main()

{

int i,n=5;

int *p; // 声明指针

p = fun(n); // 返回指针

for (i=0;i<n;i++) printf("%d ",p[i]); // 把 p 看成数版组来输出权

}

得 0 1 2 3 4

(5)c语言数组函数调用函数扩展阅读:

注意事项

1、数组的维度必须是一个常量表达式

int main(void)

{

constexpr int i = 20;

int j = 5;//不是常量表达式

int arr1[i];//正确

int arr2[j];//错误

system("pause");

return 0;

}

2、默认情况下,数组的元素被默认初始化。

而且需要注意的是,和内置类型的变量一样,如果在函数内部定义了某种内置类型的数组,那么默认初始化会令数组有未定义的值。

Ⅵ c语言数组函数调用问题

最后倒数第二行:
scanf("%d",a[3]);
改为
scanf("%d",&a[i]);

scanf("%d",&a);同理。

其他的没问题吧,我有个建议,多注意格式,养成好习惯,找错误也方便!
修改如下:

#include<stdio.h>

void SS(int a[3])
{
int i;

for(i=0;i<=2;i++)
a[i]=a[i]+1;

for(i=0;i<=2;i++)
printf("%d",a[i]);
}

void main()
{
int i,a[3];

for(i=0;i<=2;i++)
scanf("%d",&a[i]);
SS(a);
}

Ⅶ c语言 数组、函数调用问题。

这问题说明你对指针的运用还是不熟练的,既然是数组,作为函数参数传递的是数组首地址.
#include <stdio.h>
#include <stdlib.h>
void func1(int *array, int size) {
int i,temp;
for (i=0;i<size;i++) {
scanf("%d",&temp); //利用scanf输入赋值
array[i]=temp;
}
}
//数组array_b根据数组array_a的元素乘以项数获得元素值
void func2(int *array_a,int *array_b, int size) {
int i;
for (i=0;i<size;i++)
array_b[i]=array_a[i] * i;
}
//输出数组元素
void print(int *array, int size) {
int i;
for (i=0;i<size;i++)
printf("%d ",array[i]);
printf("\n");
}

int main(void) {
int size; //数组大小
int i;
int *array_a, *array_b; //声明数组array_a,array_b
scanf("%d", &size);
array_a=malloc(sizeof(int) * size);
array_b=malloc(sizeof(int) * size);
func1(array_a, size);
func2(array_a, array_b, size);
print(array_a,size);
print(array_b,size);
return 0;
}

Ⅷ c语言里 子函数如何调用主函数数组 ,如下面这个如何修改

#include <stdio.h>//望点赞!!
int main(void)
{
void aaa(int *);//声明函来数自aaa
int x1[3][3];

aaa(x1);
printf("%d\n",x1[1][1]);//{{1,2,3},{4,5,6},{7,8,9}};输出元素[1][1],很明显是5

}

void aaa(int *x1[3][3])
{

// x1[3][3]={{10,10,10},{12,12,12},{12,13,13}};//X 不能用初始化数组的方法给已声明的数组变量赋值

int i,j,tmp=1;
//正确赋值方法
for (i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
x1[i][j]=tmp++;
}
}
//以上代码相当于x1[3][3]={{1,2,3},{4,5,6},{7,8,9}};
}

Ⅸ c语言其他函数怎么调用主函数的一个数组

可以定义在主函数外,即定义成全局变量.
也可以以参数形式传入被调函数中.
比如 定义的是A[M][N]形式的
参数就用int A[M][N]
或者用数组指针int (*p)[N]

Ⅹ 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;i<100;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;i<j;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;i<100;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;i<j;i++)t=t*a[i]; return t; } } 那三个是 int zgys(int x,int y) { int f=1,i,min; min=x<y?x:y; for(i=2;i<=min;i++) {/*判断i是否是x与y的公约数*/ if(x%i==0&&y%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(x<y)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(x<y)return y-x; else return x-y;} 求两个整数的最小质公约数 int zgys(int x,int y){ int f=1,i,min; min=x<y?x:y; for(i=2;i<=min;i++) {/*判断i是否是x与y的公约数*/ if(x%i==0&&y%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;i<100;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;i<j;i++)t=t*a[i]; return t; }} 后两个有问题,弄不出来 回答: #include<stdio.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;i<100;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;i<n;i++)t=t*a[i];//这里的个数应该是a[i]的个数n。定为全局变量 return t; } } int zgys(int x,int y) { int f=1,i,min; min=x<y?x:y; for(i=2;i<=min;i++) { if(x%i==0&&y%i==0) { f=i; break; //break要放里面。 } } return f; }

希望点赞