2009-12-03 80 views
0

這就是我首先給出的。編寫一個函數int caluculate_sum(int * a,int size),用於計算數組中所有元素的總和

 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; 
} 
+0

'calculate_sum',不'caluculate_sum' – 2009-12-03 06:37:27

+0

感謝,該funtion原型didnt匹配標定,thNKS,我知道這是一些MALL。 – henry 2009-12-03 07:12:41

回答

2

你的功能看起來不錯。使用沒有任何更改的原始main()。你的函數原型

int calculate_sum(int*, int); 

應該在你的main和functions之上。如果您將這一切全部寫入一個文件中,原型的好地方就在#include語句的下面。

1

你的問題是,你的函數聲明,

int calculate_sum(int, int); 

你的函數定義不匹配,

int caluculate_sum(int *a, int size) 

(注意,該名稱在第一個參數的定義和類型是拼寫錯誤不同 - 它需要是聲明中的指針)。

通常,as MahlerFive points out,在定義它們之前聲明所有函數並且不要在其他函數中放置函數聲明是一種很好的做法。

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;} 
+0

如果你想在函數中傳遞指向數組的指針,那麼你可能想要改變函數體。你寫的函數是爲了獲取數組。 – Richie 2009-12-03 06:42:36

相關問題