zhengyangJ 发表于 2021-10-13 19:57:21

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

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

嘉岳呀 发表于 2021-10-13 20:18:29

把数组元素列出来一下

zhengyangJ 发表于 2021-10-13 20:30:56

嘉岳呀 发表于 2021-10-13 20:18
把数组元素列出来一下

{1 6 8 7 9 4 3 5 2 10}

jhq999 发表于 2021-10-13 21:24:03

本帖最后由 jhq999 于 2021-10-13 21:28 编辑

max=min=0;
bool flag=0;
sum=数组;
for(i=0;i<数组大小;i++)
{
   flag=1;
   for(j=i+1;i<=数组大小;j++)
    {
       if(0==i)sum+=数组;
       if(数组>数组)
      {
            数组和数组互换;
            flag=0;
         }
      
   }
    if(flag)break;
}
min=数组;
max=数组[数组大小-1];
平均值=sum/数组大小;
中值=数组[数组大小/2+1];

jackz007 发表于 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)       ;               
      }
      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 < d; j --) {
                        t = d          ;
                        d = d   ;
                        d = 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                                                                     ;
      printf("最小值:%lf\n" , (double) d)                                                                     ;      
      printf("最大值:%lf\n" , (double) d)                                                               ;   
      printf("平均值:%lf\n" , (double) (m * 1.0 / 16))                                                         ;
      if(k % 2) printf("中位数:%lf\n" , (double) d)                                                       ;
      else if(k > 1) printf("中位数:%lf\n" , (double) ((d + d) / 2.0))                         ;
      else if(k == 1) printf("中位数:%lf\n" , (double) d)                                                   ;
}
      编译、运行实况:
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>

傻眼貓咪 发表于 2021-10-14 12:25:04

为何复杂化?楼主要求的是 C++ 不是 C
C++ 代码:#include <bits/stdc++.h>
using namespace std;

int main(){
    int arr = {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>max ? arr : max;
      min = arr<min ? arr : 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

zhengyangJ 发表于 2021-10-19 19:13:11

jhq999 发表于 2021-10-13 21:24


谢谢
页: [1]
查看完整版本: 求c++中一个数组中的最大值,最小值,平均值和中值,谢谢了