当前位置:编程学习 > C/C++ >>

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语言···请教各位帮下忙!!!

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,