如何查找数字出现的频率?
我的代码:
#include <stdio.h>
int main(){
int count,same,n=7,a,max;
max = 0;
printf("Input Number : \n");
for(int i=1; i<=n; i++){
scanf("%d",a);
if(i == 1){
max = a;
}
else if(max < a){
max = a;
}
else if(same < a){
same = a;
count++;
}
}
printf("Max : %d\n",max);
printf("Same : %d line",count);
return0;
}
预期输出为:
1
1
2
3
4
5
6
Max : 6
Same : 2 line
我想计算我输入的数字的最大值,以及如果我输入2行相同的数字1则数字出现的频率
答案 0 :(得分:1)
这里有两个问题。首先是您如何呼叫scanf
:
scanf("%d",a);
%d
格式说明符期望int
的地址,但是您要传递int
。将此更改为:
scanf("%d", &a);
第二,您没有正确跟踪最大数量的计数。您永远不会初始化same
,并且如果最大值发生变化,也不会重置计数器。忽略same
,而是检查当前数字是否为最大值:
if(i == 1){
count = 1;
max = a;
}
else if(max < a){
max = a;
count = 1;
}
else if(max == a){
count++;
}