计算值在C语言中出现的频率

时间:2018-11-20 14:24:04

标签: c loops numbers

如何查找数字出现的频率?

我的代码:

#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则数字出现的频率

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++;
   }