C 数组值的频率
我正在尝试创建一个程序,它将计算我将选择的10个数字的频率,但当我尝试运行它时,它甚至不会运行printf并关闭。有什么想法吗?谢谢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) {
#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;iA[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中提供给我的她和他告诉我只要运行它。我打赌他是错的…再一次。你能用每一个数字组合运行它吗?因为我不能