代码问题
#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
省略后,怎么得到最小
最小的不就是*min=a吗?
反正他每次都不满足括号里面的条件 本帖最后由 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: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 ;
}
}
}
#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]