我尝试编写一段代码,它将占用6个输入,并在完成时返回最小和最大的数字。我遇到的问题是,在第6个循环期间,无论我输入什么数字,它都会在IF语句中覆盖我的_max变量忽略条件。
#include <stdio.h>
int main()
{
int i;
int _min;
int _max;
int input[6];
_min=20;
_max=0;
for(i=1;i<=6;i++)
{
scanf("%d",&input[i]);
if(input[i]<_min)
{_min=input[i];}
if(input[i]>_max)
{_max=input[i];}
printf("min:%d max:%d\n",_min,_max);
}
return 0;
}
答案 0 :(得分:2)
这就是你想要的......循环遍及所有这些。
for(i=0;i<6;i++)
答案 1 :(得分:0)
这是因为数组的元素编号为0到5,而不是1到6。
因此,您按此顺序定义了变量:
int _min;
int _max; <----
int input[6];
...当您写入input[6]
时,您实际上是在input[5]
之后写入内存,_max
被input[7]
占用。我想如果你写信给_min
,你会发现{{1}}发生了同样的事情。
(但是,请注意,实际的变量分配是依赖于编译器和平台的。当数据在溢出缓冲区时结束时,并不容易判断)。