C语言求众数的问题
#include <stdio.h>
#define N 40
#define M 10
int Sum(int Grade[]);
void DataSort(int Grade[]);
void main ()
{
int Grade[N],Count[M],i,a,b,s,j,k;
for(i=0;i<=39;i++)
{
printf("Please input your grade:");
scanf("%d",&Grade[i]);
}
for (a=0;a<10;a++)
{
Count[a]=0;
}
for (i=0;i<=39;i++)
{
for (b=0;b<=9;b++)
{
if (Grade[i]==b+1)
Count[b]++;
}
}
printf(" Grade Count Histogram\n");
for (i=0;i<=9;i++)
{
printf(" %d %d ",i+1,Count[i]);
for (b=1;b<=Count[i];b++)
{
printf("*");
}
printf("\n");
}
s=Sum(Grade);
printf("平均值是%d\n",s/40);
DataSort(Grade);
printf("中位数是%f\n",((float)Grade[19]+Grade[20])/2);
for (i=0;i<9;i++)
{
k=i;
for(j=i+1;j<10;j++)
{
if (Count[j] >Count[k])
{
k=j;
}
}
}
printf("众数是%d\n",k+1);
}
int Sum(int Grade[])
{
int i,s=0;
for(i=0;i<=39;i++)
{
s=s+Grade[i];
}
return s;
}
void DataSort(int Grade[])
{
int i,j,k,temp1;
for (i=0;i<39;i++)
{
k=i;
for(j=i+1;j<40;j++)
{
if (Grade[j] > Grade [k])
{
k=j;
}
}
if (k!=i)
{
temp1 =Grade[k];
Grade[k]=Grade[i];
Grade[i]=temp1;
}
}
}
为什么我每次输出的众数都是9呢,求指教。。。谢谢。。。
答案:for (i=0;i<9;i++)
{
k=i;
for(j=i+1;j<10;j++)
{
if (Count[j] >Count[k])
{
k=j;
}
}
}
printf("众数是%d\n",k+1);
以上这段代码有问题。改成如下:
for(i=0, k=0; i<9; i++){
if(count[i]>count[k])
k=i;
}
printf("众数是%d\n",k+1);
其他:如题,用C语言求一组数据的众数,这些数据已经排好序了,保存在DATA[0],众数定义:众数(Mode)统计学名词,将数据按从大到小顺序排列后,在统计
上一个:c语言程序设计……
下一个:c语言···请教各位帮下忙!!!