鱼C论坛

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

[已解决]问题求助

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

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

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

x
#include <stdio.h>
void main ()
{
        int i,max,a[10];
        float avg =0.0;
        printf("input 10 numbers: ");
        for (i=0;i<10;i++)
                scanf("%d",&a[i]);
        max=a[0];
        for(i=0;i<10;i++)
        {
                avg=avg+a[i]/10.0;
                if(a[i]>max)  max=a[i];
        }
        printf("avg=%f,max=%d\n",avg,max);
        
}
如上的一段代码,我改了如下if(a[i]>max) max=a[i];的位置,结果就不一样,想知道,假设a[5]是最大的,
赋值给了max后,在第二个for循环里max=a[5]会变成max=[9]吗,意思是整个程序里的i最后只能是同一个值,是这个意思吗
#include <stdio.h>
void main ()
{
        int i,max,a[10];
        float avg =0.0;
        printf("input 10 numbers: ");
        for (i=0;i<10;i++)
        {        
        scanf("%d",&a[i]);
        max=a[0];
        if(a[i]>max)  max=a[i];
        }
        for(i=0;i<10;i++)
        {
                avg=avg+a[i]/10.0;
                
        }
        printf("avg=%f,max=%d\n",avg,max);
        
}
最佳答案
2020-2-19 17:04:23
max只需在初始化时赋值一次,第一个程序因为在不同循环中,max的被重复赋值为a[0],但未影响到第二个循环中的比较。第二个程序因为赋值和比较在同一循环中,最后一次比较是a[0]和a[9]的比较,没有承载之前的最大值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-19 17:04:23 | 显示全部楼层    本楼为最佳答案   
max只需在初始化时赋值一次,第一个程序因为在不同循环中,max的被重复赋值为a[0],但未影响到第二个循环中的比较。第二个程序因为赋值和比较在同一循环中,最后一次比较是a[0]和a[9]的比较,没有承载之前的最大值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-19 22:29:02 | 显示全部楼层
先明确目的
可以知道,是让求10个数的平均值和其中最大数
例如输入:0 1 2 3 4 5 9 7 8 6
max=a[0]   //将第一个值先赋给max
for(i=0;i<10;i++)
        {
                avg=avg+a[i]/10.0;
                if(a[i]>max)    //   i=5,  5>4,  max=5;       i=6,  9>5,  max=9;      i=7,  7<9,  max=9
                    max=a[i];   
        }
//如果将scanf和max=a[0]放进for循环里  
for (i=0;i<10;i++)
        {        
        scanf("%d",&a[i]);
        max=a[0];
        if(a[i]>max)  
            max=a[i];
        }          //  i=0,  a[0]=0,  max=0,  0>0,  假,不执行max=a[i],  输出max=0;   十个数会依次过一遍,max会等于最后一个数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-2-20 18:45:44 | 显示全部楼层
龙龙龙龙龙龙 发表于 2020-2-19 22:29
先明确目的
可以知道,是让求10个数的平均值和其中最大数
例如输入:0 1 2 3 4 5 9 7 8 6

那输入第二个i=1;a[1]=1,max=a[0];a[1]>max,执行max=[1],不是这么理解吗,直到最后的6,比8小,不执行,输出结果不是8吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-21 14:11:17 | 显示全部楼层
张世来4610484 发表于 2020-2-20 18:45
那输入第二个i=1;a[1]=1,max=a[0];a[1]>max,执行max=[1],不是这么理解吗,直到最后的6,比8小,不执 ...

不不不 每次都会初始max=a[0]=0
除了第一次a[i]都是和0比  肯定都大于
max=a[9]=6
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-16 04:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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