我正在尝试创建一个程序,它将计算我将选择的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();
}
答案 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个数,因此您可以根据需要输出