c语言中计算一个值出现的频率

标签 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,该数字出现的频率

最佳答案

这里有两个问题。首先是如何调用 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++;
   }

关于c语言中计算一个值出现的频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53395109/

相关文章:

c++ - 使用数组创建数字模式

javascript - jquery 两个数字输入,如果另一个输入发生更改,则自动重新计算每个输入

c - char 数组的 SizeOf 函数的工作

c++ - 关于无限循环(C++)

php - 多维数组有条件删除重复键值

php - 为什么这个 foreach 循环提前结束?

php - 在数字字符串的特定位置添加空格

c - 在c中查找数组中的重复值

c - 我是否在 c 中的堆实现的 add 函数中正确实例化了指针

c - 简单的单字符数组加密需要一个人为的长数组才能工作吗?