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 数组将包含用户输入的每个数字的计数。egC[5]将包含找到的 5 的数量,因此您可以根据需要输出它

于 2013-04-09T14:29:31.987 回答