C 数组值的频率

C 数组值的频率,c,arrays,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) {

我正在尝试创建一个程序,它将计算我将选择的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();
 }
#包括
int main()
{ 
int i,j,A[10]={0},C[10]={0};
对于(i=0;i

if(A[i]==j)
看起来不对-
i
是上一个循环的计数器,现在是10(因此超出了数组的界限)。你是说

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

更改此选项会使程序为我运行。我认为它还不能满足您的要求。第一次找到匹配项时,
break
语句会导致执行停止


希望这些提示足以让您研究如何计算数字的频率,然后自己打印出来。

您需要再次循环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;
         }
     }
}

for(i=0;i
A[i]==j
是A[10]==j你是什么意思,只是关闭了!?你试过打印循环之外的东西吗?而且,它是
\n
,而不是
/n
C[j]=C[j]+1
可以写为
C[j]+
,这很短,很容易阅读和理解。
f(“%d/n”&A[i])
我想你不是想在每个数字后面键入一个
'/'
和一个
'n'
。你可能想在这里键入
\n
,但是
%d
转换跳过了前导空格,所以它应该是
scanf(“%d”,&a[I]);
格式字符串中没有空格。我用j替换了I,但它似乎只打印频率最高的值。我希望有这样的输出:例如,如果我输入值{3 3 2}要得到8,2,请参阅我回答中关于删除
break
语句的段落。你应该分离循环来计算值的频率,然后报告频率。这真是奇怪的事情。有时,即使我尝试运行程序,但仅用j替换i,它也不会运行……该代码是从我的teac中提供给我的她和他告诉我只要运行它。我打赌他是错的…再一次。你能用每一个数字组合运行它吗?因为我不能