0

選択する10個の数字の頻度をカウントするプログラムを作成しようとしていますが、実行しようとすると、printfも実行されずに閉じます.何かアイデアはありますか? ありがとう

#include <stdio.h>

int main()
{ 
  int i,j,A[10]={0},C[10]={0};
  for(i=0;i<10;i++)
  {
     scanf("%d /n",&A[i]);
  }
  for(j=0;j<10;j++)
  {
     if(A[i]==j)
     {
        C[j]=C[j]+1;
        printf(" %d ",C[j]);
        break;
     }
   }
   getch();
 }
4

2 に答える 2

1

この線

if(A[i]==j)

間違っているように見えます-i以前のループのカウンターであり、現在は10です(配列の境界を超えています)。もしかして

if(A[j]==j)
//   ^

代わりは?

これを変更すると、プログラムが実行されます。私はそれがあなたが望むことをまだしていないと思います。このbreakステートメントにより、最初に一致が見つかったときに実行が停止します。

数値の頻度を数えて、それらをすべて自分で出力する方法を調査できるようにするための十分なヒントになることを願っています。

于 2013-04-09T14:24:10.517 に答える
0

各要素の値を確認するには、A 配列を再度ループする必要があります。

for(i=0;i<10;i++)
{
    for(j=0;j<10;j++)
    {
         if(A[i]==j)
         {
             C[j]=C[j]+1;
             printf(" %d ",C[j]);
             break;
         }
     }
}

A の値が 0 ~ 9 の範囲になることがわかっている場合は、内側のループを完全に削除して、C[A[i]]++;

この後、C 配列には、ユーザーが入力した各数値のカウントが含まれます。たとえばC[5]、見つかった 5 の数が含まれているので、これを適切に出力できます。

于 2013-04-09T14:29:31.987 に答える