1 条题解

  • 0
    @ 2025-10-10 15:45:28

    C :

    #include<stdio.h>
    int b[101];
    int main(){
    int n,i,j,s=0,k,temp;
    scanf("%d",&n);
    int a[n];
    for(i=0;i<n;i++){
    	scanf("%d",&a[i]);
    	k=a[i];
    	s=s+k;
    	b[k]++;
    }
    printf("%.2lf ",s*1.0/n);
    int t=0;
    for(i=0;i<n;i++){
    	if(b[t]<b[i]){
    		t=i;
    	}
    }
    printf("%d ",t);
    for(i=0;i<n-1;i++){
    	for(j=0;j<n-1;j++){
    		if(a[j]>a[j+1]){
    			temp=a[j];
    			a[j]=a[j+1];
    			a[j+1]=temp;
    			
    		}
    	}
    }
    if(n%2!=0){
    	printf("%.1lf",a[n/2]*1.0);
    }else{
    	printf("%.1lf",(a[n/2]+a[n/2-1])/2.0);
    }
       return 0;
    }
    

    C++ :

    #include<iostream>
    #include<iomanip>
    using namespace std;
    
    void sort(int a[],int n);
    
    int main(){
    	int n;
    	int a[10000];
    	int b[101];
    	int m=0;
    	double mid=0;
    	double avg=0;
    	int s=0;  
    	
    	cin>>n;
    	
    	for(int i=0;i<n;i++){
    		cin>>a[i];
    		b[a[i]]++;
    		s=s+a[i];
    	} 
    	int max=0;
    
    	for(int i=0;i<=100;i++){
    		if(b[i]>max){
    			max=b[i];
    			m=i;
    		}
    	} 
    
    	avg=s*1.0/n;
    	
    	sort(a,n);
    
    	if(n%2!=0){
    		mid=a[n/2];
    	} 
    	else{
    		mid=(a[n/2]+a[n/2-1])*1.0/2;
    	}
    	
    	cout<<setiosflags(ios::fixed)<<setprecision(2)<<avg<<" ";
    	cout<<m<<" ";
    	cout<<setiosflags(ios::fixed)<<setprecision(1)<<mid<<endl;
    }
    
    
    void sort(int a[],int n){
    	int t=0;
    
    	for(int i=0;i<n;i++){
    	
    		for(int j=0;j<n-1-i;j++){
    			
    			if(a[j]<a[j+1]){
    				t=a[j];
    				a[j]=a[j+1];
    				a[j+1]=t;
    			}
    		}
    		
    	} 
    }
    
    

    Pascal :

    var
    a:array[0..10002] of integer;
    num:array[0..102] of integer;
    i,res2,n,sum,aa,max,nn,mm:longint;
    res3,res1:real;
    procedure sort(l,r: longint);
    var
    i,j,x,y: longint;
    begin
    i:=l;
    j:=r;
    x:=a[(l+r) div 2];
    repeat
    while a[i]<x do
    inc(i);
    while x<a[j] do
    dec(j);
    if not(i>j) then
    begin
    y:=a[i];
    a[i]:=a[j];
    a[j]:=y;
    inc(i);
    j:=j-1;
    end;
    until i>j;
    if l<j then
    sort(l,j);
    if i<r then
    sort(i,r);
    end;
    begin
    read(n);
    sum:=0;aa:=0;max:=0;nn:=0;mm:=0;
    for i:=1 to n do begin
    read(a[i]);
    if(a[i]>max) then max:=a[i];
    inc(num[a[i]]);
    sum:=sum+a[i];
    end;
    res1:=sum/n;
    for i:=1 to max do begin
    if(num[i]>nn)then begin
    nn:=num[i];
    mm:=i;
    end;
    end;
    res2:=num[mm];
    sort(1,n);
    if(n mod 2=0) then res3:=(a[n div 2]+a[n div 2+1])/2
    else res3:=a[n div 2+1];
    write(res1:0:2,' ',res2,' ',res3:0:1);
    end.
    

    Java :

    
    import java.util.Scanner;
    
    public class Main{
    
    	//对数组元素排序(改进的冒泡算排序)
    	public static void sort(int[] a){
    		int t;
    		boolean f; 
    		for(int i = 1;i < a.length;i++){
    			f = false;//假设没有做任何交换
    			for(int j = 0;j < a.length - i;j++){
    				if(a[j] > a[j + 1]){
    					t = a[j];
    					a[j] = a[j + 1];
    					a[j + 1] = t;
    					f = true;//做了交换
    				}
    			}
    			
    			if(f == false){
    				break;
    			}
    		}
    	}
    	
    	//求中数
    	public static double middleNum(int[] a){
    		double r = 0;
    		if(a.length % 2 == 0){
    			r = (a[a.length / 2] + a[a.length / 2 - 1]) * 1.0 / 2;
    		}else{
    			r = a[a.length / 2];
    		}
    		
    		return r;
    	}
    	
    	//求众数
    	public static int maximum(int[] a){
    		int r = 0;//出现次数最多的数
    		int c = 0;//连续数字出现的次数
    		int m = 0;//最多数字出现的次数
    		
    		for(int i = 0;i < a.length;i++){
    			c++;
    			if(i == a.length - 1 || a[i] != a[i + 1]){
    				if(c > m){
    					m = c;
    					r = a[i];
    				}
    				
    				c = 0;
    			}
    		}
    		
    		return r;
    	}
    	
    	public static void main(String[] args) {
    		//读入数组的实际长度和数组元素
    		Scanner sc = new Scanner(System.in);
    		int n = sc.nextInt();
    		int[] a = new int[n];
    		int s = 0;//总和
    		for(int i = 0;i < n;i++){
    			a[i] = sc.nextInt();
    			s += a[i];
    		}
    		
    		double v = s * 1.0 / n;//平均值
    		sort(a);
    		System.out.println(String.format("%.2f",v) + " " + maximum(a) + " " + String.format("%.1f",middleNum(a)));
    		
    		sc.close();
    		
    	}
    }
    
    

    Python :

    n=int(input())
    l1=list(map(int,input().split()))
    s=0
    for i in range(0,n):
        s+=l1[i]
    a=s/n #平均数
    l2=[]
    for i in range(0,20):
        l2.append(0)
    for i in l1:
        l2[i]+=1
    b=max(l2) #众数
    l1.sort()
    if n%2!=0:
        c=l1[n//2]
    else:
        c=(l1[n//2-1]+l1[n//2])/2 #中位数
    print('{:.2f}'.format(a),b,'{:.1f}'.format(c))
    
    • 1

    【入门】求N个整数的平均数、众数和中位数

    信息

    ID
    174
    时间
    1000ms
    内存
    512MiB
    难度
    10
    标签
    递交数
    4
    已通过
    1
    上传者