#include <stdio.h>
#include <math.h>
int main() {
int n,a,max,min;
scanf("%d\n",&n);
//int max = 0;//max不能随意赋值。若赋值为0.如果输入的数都是负数,则会输出0,而不是实际的输入最大值
int A[n];
for(int i = 0; i < n; i++){
scanf("%d",&a);//"%d "有空格的话必须多输出一次才能结束程序。但是多输出的那个值并不会被记录。
A[i]=a;
min = (min<a)?min:a;
}
max = min;
for (int i = 0; i < n; i++) {
max = (max>A[i])?max:A[i];
}
printf("%d",max);
return 0;
}
这道题原本想只用一个max参数,发现max不一定能取到输入的最大值。
int max = 0;//max不能随意赋值。若赋值为0.如果输入的数都是负数,则会输出0,而不是实际的输入最大值max = (max>a)?max:a;//若是只有一个循环结果如下。如输入 2
-1 -2
结果会输出0。因为每次比较max都是最大,于是就输出了初始值。
正如上面所说。所以第一次循环是为了找到最小值。将min赋值给max以保证每一次都可以成功比较。
第二次循环就是为了找出最大值。