1. 问题
请问我这里错哪里了?
#include<stdio.h>
main()
{
int a[10],i,j,max,min;
for(i=0;i<=9;i++)
{
printf("请输入数字");
scanf("%d",&a[i]);
}
max=a[0];
for(i=0;i<=9;i++)
{
if(a[i+1]>max)
max=a[i+1];
}
min=a[9];
for(i=9;i>=0;i--)
{
if(a[i-1]<min)
min=a[i-1];
}
printf("max=%d\nmin=%d\n",max,min);
}
2. 回答
第二个for语句:
for(i=0;i<=9;i++)
{
if(a[i+1]>max)
max=a[i+1];
}
不能写成i <= 9;
当i = 9时;
仍满足这个条件,还可以进入到这个for循环;
a[i+1]就变成了a[10];
这数组a最大的下标是9;
此时就发生数组越界了;
修改方法有两种:
1.
for(i=0;i<9;i++)
{
if(a[i+1]>max)
max=a[i+1];
}
for(i=1;i<=9;i++)
{
if(a[i]>max)
max=a[i];
}