0x12:比较大小
#include <stdio.h> int main(void) { int a[10],n,max,min,maxpos,minpos; for(n=0;n<10;n++) { printf("input n"); scanf("%d",&a[n]); } max=min=a[0]; maxpos=minpos=0; for(n=0;n<10;n++) { if(max<a[n]) { max=a[n]; printf("maxnow=%d\n",max); maxpos=n; } else if(a[n]<min) { min=a[n]; printf("minnow=%d\n",min); minpos=n; } } printf("max=%d,pos=%d\n",max,maxpos); printf("min=%d,pos=%d\n",min,minpos); }
写这个填空的时候主要懵逼在if()判断这个位置
一开始写的if(a[0]>a[n])
Max=a[n]
但后来才发现逻辑错误
接着改成a[0]<a[n]
比较大小仍然出现大的问题
后来才发觉前面这个定义:
max=min=a[0]
再看后面这个:
max=a[n];
瞬间明白这个max是中间变量,需要一个动态的过程,不能只简单的把a[0]跟后面的动态去比较,这样的话会出现大问题
而写成:
max<a[n] 则变成了动态的效果也就是
如果一个数比max还大,那么max会被更新成a[n]
此时的max=a[n]
再次比较
如果此时max再次比a[n]小(实际上是a[n+1],n相对于上面而言)
Max会被再次更新。
解决这个问题后,程序完成。