鱼C论坛

 找回密码
 立即注册
查看: 1649|回复: 4

[已解决]问题求助

[复制链接]
发表于 2020-2-19 16:33:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. #include <stdio.h>
  2. void main ()
  3. {
  4.         int i,max,a[10];
  5.         printf("input 10 numbers: ");
  6.         for (i=0;i<10;i++)
  7.         {        scanf("%d",&a[i]);
  8.         max=a[0];
  9.         if(a[i]>max)  max=a[i];}
  10.         printf("max=%d",max);

  11.        
复制代码

帮忙看下这样的代码输入10个数求最大,有什么问题吗
5,10,13,22,8,30,82,6,36,40,为什么最大数输出的是40,不是82
最佳答案
2020-2-19 18:51:26
  1. #include <stdio.h>
  2. //将max = a[0]放在循环之外可解决该问题,具体原因见注释
  3. int main ()
  4. {
  5.         int i,max,a[10];
  6.         printf("input 10 numbers: ");
  7.         for (i=0;i<10;i++)
  8.         {        
  9.                 scanf("%d",&a[i]);
  10.         max=a[0];      //每次循环中都定义 max = a[0]
  11.         if(a[i]>max)   //将新输入的数组元素与 max即a[0]做比较,当大于a[0]时,即将max替换为上一个输入的数组元素
  12.                 max=a[i];      //那么根据程序,每次的max都是刚输入的值与第一个元素的比较,最后一个元素40 > 5,故max = 40.
  13.                 }
  14.         
  15.         printf("max=%d",max);

  16.         }
  17.        
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-2-19 16:39:26 | 显示全部楼层
max=a[0]
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-19 16:43:33 | 显示全部楼层
本帖最后由 miao_meng 于 2020-2-19 17:00 编辑

max只需赋值一次,不能在循环中。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-19 18:17:49 | 显示全部楼层
你不能把定义数组和遍历数组放在一个for循环里。应该使用两个for循环先是定义,再是使用。代码如下:
  1. #include <stdio.h>
  2. void main ()
  3. {
  4.         int i,max,a[10];
  5.         printf("input 10 numbers: ");
  6.         for (i=0;i<10;i++)
  7.         {      
  8.                 scanf("%d",&a[i]);
  9.                 }
  10.         max=a[0];
  11.         for(i=0;i<10;i++)
  12.         {
  13.                 if(a[i]>max)  
  14.                         {
  15.                                 max=a[i];
  16.                         }
  17.                 }
  18.         
  19.         printf("max=%d",max);

  20. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-19 18:51:26 | 显示全部楼层    本楼为最佳答案   
  1. #include <stdio.h>
  2. //将max = a[0]放在循环之外可解决该问题,具体原因见注释
  3. int main ()
  4. {
  5.         int i,max,a[10];
  6.         printf("input 10 numbers: ");
  7.         for (i=0;i<10;i++)
  8.         {        
  9.                 scanf("%d",&a[i]);
  10.         max=a[0];      //每次循环中都定义 max = a[0]
  11.         if(a[i]>max)   //将新输入的数组元素与 max即a[0]做比较,当大于a[0]时,即将max替换为上一个输入的数组元素
  12.                 max=a[i];      //那么根据程序,每次的max都是刚输入的值与第一个元素的比较,最后一个元素40 > 5,故max = 40.
  13.                 }
  14.         
  15.         printf("max=%d",max);

  16.         }
  17.        
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-3 20:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表