C 语言中的众数程序

在统计数学中,众数是出现次数最多的值。

例如 − 假设一组值为 3、5、2、7、3。该值集的众数为 3,因为它出现的次数比任何其他数字都多。

算法

我们可以推导出一个查找众数的算法,如下所示 −

开始
步骤 1 → 取一个包含 n 个值的整数集 A
步骤 2 → 计算 A 中每个整数值的出现次数
步骤 3 → 显示出现次数最多的值
停止

伪代码

我们现在可以使用上述算法推导出伪代码,如下所示 −

procedure mode()
   
   Array A
   FOR EACH value i in A DO
      Set Count to 0
      FOR j FROM 0 to i DO
         IF A[i] = A[j]
            Increment Count
         END IF
      END FOR
      
      IF Count > MaxCount
         MaxCount =  Count
         Value    =  A[i]
      END IF
   END FOR
   DISPLAY Value as Mode
   
end procedure

实现

该算法的实现如下 −

#include <stdio.h>

int mode(int a[],int n) {
   int maxValue = 0, maxCount = 0, i, j;

   for (i = 0; i < n; ++i) {
      int count = 0;
      
      for (j = 0; j < n; ++j) {
         if (a[j] == a[i])
         ++count;
      }
      
      if (count > maxCount) {
         maxCount = count;
         maxValue = a[i];
      }
   }

   return maxValue;
}

int main() {
   int n = 5;
   int a[] = {0,6,7,2,7};

   printf("Mode = %d ", mode(a,n));

   return 0;
}

输出

程序的输出应为 −

Mode = 7

mathematical_programs_in_c.html