私の練習は、キーボードとプログラムの終わりから入力リストの整数を0で入力します。次に、配列の合計を出力します。これは私のコードです:私はcのエクササイズを持っています
#include <stdio.h>
#include <stdlib.h>
const int MAX_ITEMS = 50;
void inputIntegerNumber(int* a, int* count);
int sumOfInteger(int* n, int* count);
int main(int argc, char** argv) {
int x[MAX_ITEMS], count;
inputIntegerNumber(&x, &count);
printf("Sum of array is %d", sumOfInteger(&x, &count));
return (EXIT_SUCCESS);
}
void inputIntegerNumber(int* a, int* count){
do{
printf("Please! input numbers: ");
scanf("%d", a);
*count++;
}while((*a != 0) && (*count != MAX_ITEMS));
}
int sumOfInteger(int* n, int* count){
int sum = 0;
for (int i = 0; i < *count; i++)
sum += *n;
return sum;
}
私は何が問題なのでしょうか?
あなたが&x
を通過し、両方の呼び出しで
inputIntegerNumber(&x, &count);
printf("Sum of array is %d", sumOfInteger(&x, &count));
が、x
int
の配列であり、あなたの関数がint *
ない期待する - それは私の考えている...
'* count ++;' - > '(* count)++;' C *演算子の優先順位を参照してください。 –
このような質問をするときは、あなたの入力、予想される出力、実際の出力は何ですか?*非常に明確に定義してください。 – deniss
コンパイラの警告をオンにします。コンパイラは間違っていることのいくつかを教えてくれます。間違っているもう一つのことは、最初の配列要素以外の配列要素に決してアクセスしないことです。 –