[C语⾔]经典例题之⼀求最⼤值
简介
  本⽂将介绍⼀个在c语⾔学习过程中⾮常简单且⾮常经典的问题,以及介绍⼤多数⼈在写这个代码时经常会跳进去的⼀个坑。
正⽂
  求最⼤值基本每个⼈都会,所以简单叙述⼀下要点:创建⼀个数组以及创建⼀个变量max,给变量max赋值然后跟数组中每个元素⼀⼀进⾏判断,如果数组中的数⽐max⼤那么把这个数赋给max,以此类推;
  看起来⾮常简单,那么我们实现⼀下(代码如下):
#include<stdio.h>
int main()
{
int i =0;
int arr[10]={0};
int max =0;//定义变量max⽤来作⽐较
printf("请输⼊⼗个整数:\n");
for(i=0; i<10; i++)
{
scanf("%d",&arr[i]);
}
for(i=0; i<10; i++)
{
if(max < arr[i])
max = arr[i];
}
c语言数组最大值最小值printf("最⼤值为%d\n",max);
return0;
}
  这个代码看起来毫⽆问题,附上运⾏结果如下:
结果看起来没⽑病,试⼀试负数:
bug出来了,为什么会出现这种情况呢?
  代码看起来似乎⽆懈可击,但是运⾏结果却是错的,回过头看代码,为什么会给max赋值0呢?这样是不是就是默认⽐较变量最⼤值是0了,那么输⼊负数时就会出现⽑病,所以应该给max赋⼀个数组中的值。修改后的代码如下:
#include<stdio.h>
int main()
{
int i =0;
int arr[10]={0};
int max =0;
printf("请输⼊⼗个整数:\n");
for(i=0; i<10; i++)
{
scanf("%d",&arr[i]);
}
max = arr[0];
for(i=1; i<10; i++)
{
if(max < arr[i])
max = arr[i];
}
printf("最⼤值为%d\n",max);
return0;
}
  这样就可以了,给max赋数组中第⼀个值,然后⼀ ⼀与数组中的值进⾏⽐较(max可以赋予数组中任何⼀个值),这⾥还有⼀个优化,因为我们赋的值是第⼀个,那么循环就可以从数组中第⼆个元素开始,所以for循环i从1开始循环。结果如下:
这样就可以处理当输⼊的数据为负数的情况了。
总结
  本⽂演⽰了求数组中最⼤值的问题,以及演⽰了很容易跳进的⼀个坑。
ps: 有不当之处希望⼤家提出批评并指正。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。