C语言!为什么这段程序要这样写呢?看不懂

来源:百度知道 编辑:UC知道 时间:2024/07/02 12:08:52
从键盘输入十个数,找出其中最大的数

#include<stdio.h>
main()
{
int a=0,max=0,i=0;

max=-32768;
printf("Input data:");
for(i=1;i<=10;i++)
{
scanf("%d",&a);
printf("%d",a);
if(max<a)max=a;
}
printf("\n");
printf("max=%d\n",max);
}

问题:为什么max中先存放int型数据范围内的最小数?如果本题改为求最小数,那么存放最小数的变量min中,应首先赋什么值?

因为你要获得十个数中最大的数,而你的比较方法是每输进一个数,都和之前输入的数中的最大数作比较,所以max中先存放int范围内最小的数,避免你输入的数小于max,那样的话输出的结果就有可能是你原定义的值,而不是你输入的10个数的值.
若改为求最小数,那么只要在min中输入int范围最大的值就行了,然后和输入的数相比,存储比较结果里较小的一个数就可以了

你贴的这个方法不好,比较好的方法是:max先设置为输入的第一个数,然后和之后的9个数进行比较就是这句if(max<a)max=a;
求最小值采用同样的方法,只是判断条件变为if(min>a)min=a;

用于与输入的数据作比较,如果不给max赋这个初值,也可以先让max接受一个用户输入的值。

不要直接写32768这样硬编码的数字,用INT_MIN(limits.h)代替。