C語言 尋找資料中的眾數
室友暢的c語言作業。
基本思路:a[]用來存放資料,b[]用來存放a[]中每個資料的出現次數,注意當一個數據出現多次時,只有第一次出現時對應的b[]是次數,剩下的都是1。這樣減少判斷次數。NUM記錄眾數的出現次數,FLAG記錄眾數的出現位置。考慮到多個眾數的情況,引入c[],記錄與眾數出現次數相同的次數的資料。
原始碼如下:
#include<stdio.h>
#define N 8
int a[N+1],b[N+1],c[N+1];
int i,j;
int NUM,FLAG;
int main()
{
for (i = 0; i < N; i++)
b[i] = 0 ;
printf("Please input a array.\n");
for (i = 0; i < N; i++)
scanf_s("%d",&a[i]);
for (i = 0; i < N; i++)
{
for (j = i; j < N; j++)
if (a[i] == a[j])
b[i]++;
}
NUM = b[0];
for (i = 0; i < N; i++)
{
if (NUM <= b[i])
{
NUM = b[i];
FLAG = i;
}
}
for (i = 0; i < N; i++)
c[i] = 0;
c[FLAG] = a[FLAG];
for (i = 0; i < N; i++)
{
if (NUM == b[i])
c[i] = a[i];
}
printf("Mode is:");
for (i = 0; i < N; i++)
if (c[i]!=0)
printf("%d&",c[i]);
printf("\b \n");
return 0;
}