当前位置: 动力学知识库 > 问答 > 编程问答 >

c - Sum of two arrays

问题描述:

The exercise says "Make a function with parameters two int arrays and k which is their size. The function should return another array (size k) where every element of it is the sum of the two arrays of the same position. That's what I wrote, but it crashes. Do I have to do it with pointers?

#include <stdio.h>

#include <stdlib.h>

void sumarray(int k,int A[k],int B[k]){

int sum[k],i;

for(i=0;i<k;i++){

sum[i]=A[i]+B[i];

printf("sum[%d]=%d\n",i,sum[i]);}

}

main(){

int i,g,a[g],b[g];

printf("Give size of both arrays: ");

scanf("%d",&g);

for(i=0;i<g;i++){

a[i]=rand();

b[i]=rand();

}

sumarray(g,a,b);

system("pause");

}

Example: If i have A={1,2,3,4} and B={4,3,2,1} the program will return C={5,5,5,5).

网友答案:

This:

int i,g,a[g],b[g];

causes undefined behaviour. The value of g is undefined upon initialisation, so therefore the length of a and b will be undefined.

You probably want something like:

int i, g;
int *a;
int *b;  // Note: recommend declaring on separate lines, to avoid issues
scanf("%d", &g);
a = malloc(sizeof(*a) * g);
b = malloc(sizeof(*b) * g);
...
free(a);
free(b);
网友答案:

Its impossible to first do a[g] when dynamically getting g.

Your first lines in main should be:

int i,g;
int *a,*b;
printf("Give size of both arrays: ");
scanf("%d",&g);
a = (int *)malloc(g*sizeof(int));
b = (int *)malloc(g*sizeof(int));
网友答案:
int sum[k] ;

k is a variable but the size of the array should be a constant.

The function should return another array (size k) ...

But the function you wrote returns void which is clearly wrong.

Do I have to do it with pointers?

Yes.

网友答案:

One issue is that you've attempted to declare dynamically sized arrays on the stack (e.g. a[g]). You need to declare pointers for each array and then dynamically allocate your variable sized array once you've read in the value of g.

网友答案:

change the function summary signature (the definition part of the declaration) to this and try it out:

void sumarray(int k,int* A,int* B){

分享给朋友:
您可能感兴趣的文章:
随机阅读: