编写一个函数int caluculate_sum(int * a,int size),用于计算数组中所有元素的总和

时间:2009-12-03 06:26:20

标签: c arrays

这就是我从一开始就给予的。

     int main(){
      int a[5] = {0,1,2,3,4};
      printf("Sum of elements of a: %d\n", calculate_sum(a,5));
      return 0;          
     }

这就是我所拥有的,我不知道为什么它不起作用,请帮助我。

#include <stdio.h>

int main()
{
      int a[5] = {0,1,2,3,4};
      int b;
      int calculate_sum(int, int);
      b = *a;

      printf("Sum of elements of a: %d\n", calculate_sum(b,5));
      return 0;          

}

int caluculate_sum(int *a, int size) 
{
    int i;
    int sum = 0;
    for(i = 0; i < size; i = i + 1)
        sum = sum + a[i];
    return sum;
}

3 个答案:

答案 0 :(得分:2)

你的功能看起来很好。使用提供给您的原始main()而不做任何更改。你的函数原型

int calculate_sum(int*, int);

应该高于你的主要和功能。如果你在一个文件中写这个,那么原型的一个好地方就在你的#include语句之下。

答案 1 :(得分:1)

你的问题是你的功能声明,

int calculate_sum(int, int);

与您的函数定义不匹配,

int caluculate_sum(int *a, int size) 

(请注意,名称在定义中拼写错误,第一个参数的类型不同 - 它必须是声明中的指针。)

通常,as MahlerFive points out,最好在定义它们之前声明所有函数,而不是将函数声明放在其他函数中。

答案 2 :(得分:0)

没有测试过它..但我想这会起作用

#include <stdio.h>

int calculate_sum(int, int);
int main(){ 
int a[5] = {0,1,2,3,4};      
//int b;         
//b = *a;      
//printf("Sum of elements of a: %d\n", calculate_sum(b,5));
printf("Sum of elements of a: %d\n", calculate_sum(a,5)); // you can directly pass an array     
return 0;          
}

//int caluculate_sum(int *a, int size) {
int caluculate_sum(int a, int size) {    
int i;    int sum = 0;    
for(i = 0; i < size; i = i + 1)        
sum = sum + a[i];    
return sum;}