C++-众数问题

时间:2024-11-22 15:18:12
#include <iostream> #include <> using namespace std; /* 冒泡排序,相邻两个元素进行比较交换位置 , 每循环一次就有一个最大的数确定好位置 */ void sort(int a[] ,int n){ int i,j,temp; for(i=0;i<n-1;++i){ //冒泡排序 for(j=0;j<n-i-1;++j){ //j是减去已经排好位置的最后的i个数 if(a[j]>a[j+1]){ //每次冒泡,进行交换 temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } } } int main(){ int a[1000]; int i,j,n=0,temp,max=a[0],index=0,count=1;// max为众数 index为重数 char c; cout<<"请输入数组元素:"; for(i=0; ;i++){ cin>>a[i]; n++; //统计输入数字的个数 c=getchar(); //接受回车符判断结束 if(c=='\n') break; } sort(a,n); //输出排序后的数组 printf("排序后数组:"); for(j=0;j<n;++j) printf("%d ",a[j]); printf("\n"); //求众数与重数 //循环数组找相等数的个数 for(i=0;i<n;i++){ if(a[i+1]==a[i]) count++; else{ if(count>index){ max = a[i]; index = count; } count = 1; } } printf("众数是:%d\n重数是:%d",max,index); return 0; }