数组的值的频率

时间:2013-04-09 14:21:36

标签: c arrays

我正在尝试创建一个程序,它将计算我将选择的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();
 }

2 个答案:

答案 0 :(得分:1)

该行

if(A[i]==j)

看起来不对 - i是前一个循环的计数器,现在是10(超出了数组的范围)。你的意思是

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

代替?

更改此选项会使程序运行。我不认为它做你想要的。 break语句会导致执行在第一次找到匹配时暂停。

希望这是足够的提示,让您可以调查如何计算数字的频率,然后自己打印出来。

答案 1 :(得分: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个数,因此您可以根据需要输出