问题求助
#include <stdio.h>void main ()
{
int i,max,a;
printf("input 10 numbers: ");
for (i=0;i<10;i++)
{ scanf("%d",&a);
max=a;
if(a>max)max=a;}
printf("max=%d",max);
帮忙看下这样的代码输入10个数求最大,有什么问题吗
5,10,13,22,8,30,82,6,36,40,为什么最大数输出的是40,不是82 max=a 本帖最后由 miao_meng 于 2020-2-19 17:00 编辑
max只需赋值一次,不能在循环中。 你不能把定义数组和遍历数组放在一个for循环里。应该使用两个for循环先是定义,再是使用。代码如下:
#include <stdio.h>
void main ()
{
int i,max,a;
printf("input 10 numbers: ");
for (i=0;i<10;i++)
{
scanf("%d",&a);
}
max=a;
for(i=0;i<10;i++)
{
if(a>max)
{
max=a;
}
}
printf("max=%d",max);
} #include <stdio.h>
//将max = a放在循环之外可解决该问题,具体原因见注释
int main ()
{
int i,max,a;
printf("input 10 numbers: ");
for (i=0;i<10;i++)
{
scanf("%d",&a);
max=a; //每次循环中都定义 max = a
if(a>max) //将新输入的数组元素与 max即a做比较,当大于a时,即将max替换为上一个输入的数组元素
max=a; //那么根据程序,每次的max都是刚输入的值与第一个元素的比较,最后一个元素40 > 5,故max = 40.
}
printf("max=%d",max);
}
页:
[1]