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会被再次更新。

解决这个问题后,程序完成。

Tips:鼠标经过代码时会出现工具栏,工具栏上方有一键复制代码的功能哦~天云网络培训,专注于网络空间安全相关培训,并提供相关课程的在线培训 报名微信 tyedu1
天云网络培训 » 0x12:比较大小

提供专业、易懂、平民化教育。让每个热爱网络的人有个归宿

立即查看 了解详情