gjfyyds 发表于 2021-11-5 17:50:40

代码问题

#include<stdio.h>

void minmax(int a[], int len, int *min,int *max);
int main(void)
{
        int a[] = { 1,2,3,4,5,6,7,8,9,12,13,14,16,17,21,23,55, };
        int min, max;
        minmax(a, sizeof(a) / sizeof(a), &min, &max);
        printf_s("min=%d,max=%d\n", min, max);

        return 0;
}

void minmax(int a[], int len, int* min, int* max)
{
        int i;
        *min = *max = a;
        for (i = 1; i < len; i++) {
                if (a < *min) {
                        *min = a;
                }
                if (a > *max) {
                        *max = a;
                }
        }
}
这段代码中加粗的这块是不是可以省掉?
感觉没啥用

jhq999 发表于 2021-11-5 18:01:05

省略后,怎么得到最小

gjfyyds 发表于 2021-11-5 18:06:32

jhq999 发表于 2021-11-5 18:01
省略后,怎么得到最小

最小的不就是*min=a吗?
反正他每次都不满足括号里面的条件

jhq999 发表于 2021-11-5 18:07:49

本帖最后由 jhq999 于 2021-11-5 18:12 编辑

gjfyyds 发表于 2021-11-5 18:06
最小的不就是*min=a吗?
反正他每次都不满足括号里面的条件

a[]={2,3,1,4,5};a是最小的吗?不要把自己聪明的脑瓜代入计算机,计算机很笨,只不过很快而已

jackz007 发表于 2021-11-5 18:46:21

本帖最后由 jackz007 于 2021-11-5 18:48 编辑

      代码有错误,试试这我修改过的函数
void minmax(int a[], int len, int* min, int* max)
{
      int i                     ;
      * min = * max = a      ;
      for (i = 1 ; i < len ; i++) {
                if(a < * min){
                     * min = a ;
                } else if(a > * max) {
                     * max = a ;
                }
      }
}

傻眼貓咪 发表于 2021-11-5 19:00:10

#include <stdio.h>

void minMax(int arr[], int size, int* min, int* max);

int main()
{
    int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14, 16, 17, 21, 23, 55};
    int min, max;
    minMax(arr, sizeof(arr)/sizeof(arr), &min, &max);
    printf("min = %d\nmax = %d", min, max);
    return 0;
}

void minMax(int arr[], int size, int* min, int* max){
    *min = 32767;
    *max = -32767;
    for(int i = 0; i < size; i++){
      *min = *min > arr ? arr : *min;
      *max = *max < arr ? arr : *max;
    }
}min = 1
max = 55
页: [1]
查看完整版本: 代码问题