函数:如何在另一个函数中使用一个函数的元素
Functions: how to use elements of one function in another
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int m,n,i,j,k,imp_sum, par_sum,temp,a[100][100];
void calc_rand()
{
srand(time(NULL));
printf("Number of rows and columns:");
scanf("%d %d", &m, &n);
int a[m][n];
for (i=0; i<m; i++)
{
for(j=0; j<n; j++)
{
a[i][j]=(rand()%25)-5;
printf("%d\t", a[i][j]);
}
printf("\n");
}
}
void calc_num()
{
for (i=0; i<n; i++)
{
par_sum=0;
imp_sum=0;
for(j=0; j<m; j+=2)
{
if (a[j][i]<0)
{
par_sum=par_sum+abs(a[j][i]);
}
}
printf("\nSum of emelents <0 %d on even position: %d",i+1, par_sum);
for(j=1; j<m; j+=2)
{
if(a[j][i]>0)
{
imp_sum=imp_sum+a[j][i];
}
}
printf("\nSum of elements >0 %d on odd position: %d",i+1, imp_sum);
}
}
int main()
{
calc_rand();
calc_num();
return 0;
}
我是函数的新手,遇到了问题。当试图找出上面我需要的元素的总和时(我在名为 calc_num
的第二个函数中这样做)它总是 returns 我 0,我真的不明白为什么会这样。
在 calc_rand
中,您正在本地创建一个名为 a
的 new 数组,它屏蔽了全局变量 a
。这导致更新本地 a
而不是全局 a
.
删除 calc_rand
中的 int a[m][n];
声明,它将更新全局数组。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int m,n,i,j,k,imp_sum, par_sum,temp,a[100][100];
void calc_rand()
{
srand(time(NULL));
printf("Number of rows and columns:");
scanf("%d %d", &m, &n);
int a[m][n];
for (i=0; i<m; i++)
{
for(j=0; j<n; j++)
{
a[i][j]=(rand()%25)-5;
printf("%d\t", a[i][j]);
}
printf("\n");
}
}
void calc_num()
{
for (i=0; i<n; i++)
{
par_sum=0;
imp_sum=0;
for(j=0; j<m; j+=2)
{
if (a[j][i]<0)
{
par_sum=par_sum+abs(a[j][i]);
}
}
printf("\nSum of emelents <0 %d on even position: %d",i+1, par_sum);
for(j=1; j<m; j+=2)
{
if(a[j][i]>0)
{
imp_sum=imp_sum+a[j][i];
}
}
printf("\nSum of elements >0 %d on odd position: %d",i+1, imp_sum);
}
}
int main()
{
calc_rand();
calc_num();
return 0;
}
我是函数的新手,遇到了问题。当试图找出上面我需要的元素的总和时(我在名为 calc_num
的第二个函数中这样做)它总是 returns 我 0,我真的不明白为什么会这样。
在 calc_rand
中,您正在本地创建一个名为 a
的 new 数组,它屏蔽了全局变量 a
。这导致更新本地 a
而不是全局 a
.
删除 calc_rand
中的 int a[m][n];
声明,它将更新全局数组。