2016-08-06 8 views
0

こんにちは、このプログラムは、乱数の配列を生成する関数を作成します。次に、別の機能を使用して、ユーザーが指定した番号がリストに何回あるかを表示します。 16 .Your番号は次のとおりです。出力は常に0時間がa#は配列にあります

10 32 31 5 34 39 10 15 39 25 26 10 27 21 
50 31 3 21 29 16 12 42 29 30 8 28 19 8 39 1 
19 50 34 2 4 18 40 14 34 30 40 12 41 16 32 42 
48 34 12 28 

タイプ、それはあなたのリストに表示される回数を確認するための番号であるので、私は、配列内の数字は現れ回を表示する際にトラブルを抱えています別にstdlib.htime.hやセミコロンを失った固定を追加することから、0回

コード

#include <stdio.h> 

int MakeRand() 
{ 
    srand(time(NULL)); 
} 

void fillArray(int arr[], int high) 
{ 
    int i,N; 
    N = 50; 
    for (i=0;i<N;++i) 
    { 
     arr[i] = rand() % high +1; 
     printf("%d ", arr[i]); 
    } 
} 

int CountNumb(int arr[], int x) 
{ 
    int k,j; 
    j = 0; 
    for (k=0;k<50;++k); 
    { 
     if (arr[k] == x) 
     { 
      j = j++; 
     } 
     return j; 
    } 
} 

int main() 
{ 
    int nums[50]; 
    int b,k,n; 

    MakeRand(); 
    fillArray(nums,50); 
    printf("Type a number to see how many times it appears in your list: "); 
    scanf("%d",&n); 
    b = CountNumb(nums,n); 
    printf("Your number is listed %d times\n",b); 
    return 0; 
} 
+4

'for'ステートメントの最後にセミコロンがあります。 – user3386109

+0

私は ";"何も変わらずに再び走った。数字がリストにあるときは0を表示します。 – jun

+2

これは、このコードの氷山の唯一のヒントです。 'j = j ++;'は未定義の動作を呼び出します。 'srand()'の定義を格納している 'stdlib.h'は決して含まれません。 'time()'宣言を格納する 'time.h'は決して含まれません。あなたはまだあなたの前にたくさんの仕事を持っています。 – WhozCraig

答えて

2

を記載されている、あなたのリターンスタットを配置している必要がありますforループの外側のCountNumb()にあります。

次のようにあなたのCountNumbを変更

int CountNumb(int arr[], int x) 
    { 
    int k,j; 
    j = 0; 
    for (k=0;k<50;++k) 
    { 
    if (arr[k] == x) 
     { 
     j++; 
     } 
    } 
    return j; 
    } 

を全体のコードはここで見つけることができます:あなたのCountNumb機能では3つの問題がありますcodingground

3

  1. が不要なセミコロンがありますあなたのforの後にループが始まります。
  2. j = j++;の代わりにj++を実行する必要があります。あなたはundefined behaviorにつながるので、j = j++;をすることはできません。
  3. forループを完了した後に戻るのではなく、forループの内部に戻ってきます。

int CountNumb(int arr[], int x) 
{ 
    int k,j; 
    j = 0; 
    /* for (k=0;k<50;++k); */ /* Isuee 1 here, trailing semicolon */ 
    for (k=0;k<50;++k) 
    { 
     if (arr[k] == x) { 
      /* j = j++; */ /* Issue 2 here, you just need j++ */ 
      j++;   /* Or j = j + 1;, or j += 1; but NOT j = j++ */ 
     } 
     /* return j; */ /* Issue 3 here, you need to return at end of function */ 
         /* Not inside the for loop */ 
    } 
    return j; 
} 

また、あなたはinclude<stdlib.h>、およびinclude<time.h>する必要があります。

関連する問題