问题求助
#include <stdio.h>void main ()
{
int i,max,a;
float avg =0.0;
printf("input 10 numbers: ");
for (i=0;i<10;i++)
scanf("%d",&a);
max=a;
for(i=0;i<10;i++)
{
avg=avg+a/10.0;
if(a>max)max=a;
}
printf("avg=%f,max=%d\n",avg,max);
}
如上的一段代码,我改了如下if(a>max) max=a;的位置,结果就不一样,想知道,假设a是最大的,
赋值给了max后,在第二个for循环里max=a会变成max=吗,意思是整个程序里的i最后只能是同一个值,是这个意思吗
#include <stdio.h>
void main ()
{
int i,max,a;
float avg =0.0;
printf("input 10 numbers: ");
for (i=0;i<10;i++)
{
scanf("%d",&a);
max=a;
if(a>max)max=a;
}
for(i=0;i<10;i++)
{
avg=avg+a/10.0;
}
printf("avg=%f,max=%d\n",avg,max);
}
max只需在初始化时赋值一次,第一个程序因为在不同循环中,max的被重复赋值为a,但未影响到第二个循环中的比较。第二个程序因为赋值和比较在同一循环中,最后一次比较是a和a的比较,没有承载之前的最大值。 先明确目的
可以知道,是让求10个数的平均值和其中最大数
例如输入:0 1 2 3 4 5 9 7 8 6
max=a //将第一个值先赋给max
for(i=0;i<10;i++)
{
avg=avg+a/10.0;
if(a>max) // i=5,5>4,max=5; i=6,9>5,max=9; i=7,7<9,max=9
max=a;
}
//如果将scanf和max=a放进for循环里
for (i=0;i<10;i++)
{
scanf("%d",&a);
max=a;
if(a>max)
max=a;
} //i=0,a=0,max=0,0>0,假,不执行max=a,输出max=0; 十个数会依次过一遍,max会等于最后一个数 龙龙龙龙龙龙 发表于 2020-2-19 22:29
先明确目的
可以知道,是让求10个数的平均值和其中最大数
例如输入:0 1 2 3 4 5 9 7 8 6
那输入第二个i=1;a=1,max=a;a>max,执行max=,不是这么理解吗,直到最后的6,比8小,不执行,输出结果不是8吗 张世来4610484 发表于 2020-2-20 18:45
那输入第二个i=1;a=1,max=a;a>max,执行max=,不是这么理解吗,直到最后的6,比8小,不执 ...
不不不 每次都会初始max=a=0
除了第一次a都是和0比肯定都大于
max=a=6
页:
[1]