鱼C论坛

 找回密码
 立即注册
查看: 1931|回复: 6

求c++中一个数组中的最大值,最小值,平均值和中值,谢谢了

[复制链接]
发表于 2021-10-13 19:57:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
求c++中一个数组中的最大值,最小值,平均值和中值,谢谢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-10-13 20:18:29 | 显示全部楼层
把数组元素列出来一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-13 20:30:56 | 显示全部楼层
嘉岳呀 发表于 2021-10-13 20:18
把数组元素列出来一下

{1 6 8 7 9 4 3 5 2 10}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-13 21:24:03 | 显示全部楼层
本帖最后由 jhq999 于 2021-10-13 21:28 编辑
max=min=0;
bool flag=0;
sum=数组[0];
for(i=0;i<数组大小;i++)
{
     flag=1;
     for(j=i+1;i<=数组大小;j++)
    {
       if(0==i)sum+=数组[j];
       if(数组[i]>数组[j])
        {
            数组[i]和数组[j]互换;
            flag=0;
         }
       
     }
    if(flag)break;
}
min=数组[0];
max=数组[数组大小-1];
平均值=sum/数组大小;
中值=数组[数组大小/2+1];
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-14 01:24:42 | 显示全部楼层
#include <stdio.h>

void show(int d[] , int n)
{
        int i                             ;
        for(i = 0 ; i < n ; i ++) {
                if(i) printf(" , ")       ;
                printf("%d" , d[i])       ;                
        }
        printf("\n")                      ;
}

void sort(int d[] , int n)
{
        int i , j , t                     ;
        for(i = 0 ; i < n - 1 ;i ++) {
                for(j = i + 1 ; j && d[j] < d[j - 1]; j --) {
                        t = d[j]          ;
                        d[j] = d[j - 1]   ;
                        d[j - 1] = t      ;
                }
        }
}

int main(void)
{
        int d[] = {18 , 22 , 33 , 1 , 5 , 28 , 35 , 4 , 3 , 55 , 108 , 11 , 2 , 6 , 2800 , 88} , i , j , k = 16 , m ;
        show(d , k)                                                                                                 ;
        sort(d , k)                                                                                                 ;
        show(d , k)                                                                                                 ;
        for(i = m = 0 ; i < k ; i ++) m += d[i]                                                                     ;
        printf("最小值:%lf\n" , (double) d[0])                                                                     ;        
        printf("最大值:%lf\n" , (double) d[k - 1])                                                                 ;    
        printf("平均值:%lf\n" , (double) (m * 1.0 / 16))                                                           ;
        if(k % 2) printf("中位数:%lf\n" , (double) d[k / 2])                                                       ;
        else if(k > 1) printf("中位数:%lf\n" , (double) ((d[k / 2 - 1] + d[k / 2]) / 2.0))                         ;
        else if(k == 1) printf("中位数:%lf\n" , (double) d[0])                                                     ;
}
        编译、运行实况:
D:\00.Excise\C>g++ -o x x.c

D:\00.Excise\C>x
18 , 22 , 33 , 1 , 5 , 28 , 35 , 4 , 3 , 55 , 108 , 11 , 2 , 6 , 2800 , 88
1 , 2 , 3 , 4 , 5 , 6 , 11 , 18 , 22 , 28 , 33 , 35 , 55 , 88 , 108 , 2800
最小值:1.000000
最大值:2800.000000
平均值:201.187500
中位数:20.000000

D:\00.Excise\C>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-14 12:25:04 | 显示全部楼层
为何复杂化?楼主要求的是 C++ 不是 C
C++ 代码:
#include <bits/stdc++.h>
using namespace std;

int main(){
    int arr[10] = {1, 6, 8, 7, 9, 4, 3, 5, 2, 10};
    int max = 0, min = 32767;
    float mid;
    
    for(int i=0; i<10; i++){
        max = arr[i]>max ? arr[i] : max;
        min = arr[i]<min ? arr[i] : min;
    }
    mid = (float)(max+min)/2;
    
    cout << "max: " << max << "\nmin: " << min << setprecision(2) << "\nmid: " << mid << endl;
    
    return 0;
}
max: 10
min: 1
mid: 5.5
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-19 19:13:11 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-22 16:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表