在第一个“for”循环中,无论我给出的 n 值有多大,它都会运行一次。为什么?
#include<stdio.h>
int main()
{
int n, a[6], i, j, n1, n2;
float area=0.00, ma=0, mia=0;
scanf("%d", &n);
for(i=1; i<=n; i++)
{
for(j=1; j<=6; j++)
scanf("%d", &a[j]);
area = (a[1]*(a[4]-a[6])+a[3]*(a[6]-a[2])+a[5]*(a[2]-a[4]))/2;
if(area<0)
area = -area;
if(i == 0)
mia = area;
if(area >= ma)
{
ma = area;
n1 = i;
}
if(area <= mia)
{
mia = area;
n2 = i;
}
}
printf("\n%d %d", n1, n2);
return 0;
}
最佳答案
您在这里超出了a
:
for(j=1;j<=6;j++)
scanf("%d",&a[j]);
(最后一次循环时,您正在写入 a[6]
,此时只有 a[0]
到 a[5]
存在)
请记住,在 C 中,数组的索引从 0
开始,而不是 1
。
最后一次赋值很可能会覆盖 i
,具体取决于变量在内存中的位置。下一次循环时,i
等于您上次输入的内容加上 1
。
或者,n
可能会被覆盖。各种各样的事情都可能发生。调整您的索引,或者(作为快速测试)将声明更改为:
int n,a[7],i,j,n1,n2;
看看事情是否表现得更好。
关于c - 循环未在指定时间内运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19254170/