室友畅的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;
}