鱼C论坛

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

[已解决]问题求助

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

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

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

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

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

        }
        
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-19 16:39:26 | 显示全部楼层
max=a[0]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

max只需赋值一次,不能在循环中。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

        }
        
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-16 01:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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