在第一个'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;
}
答案 0 :(得分:4)
你在这里超越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;
并查看事情是否表现得更好。
答案 1 :(得分:0)
将printf
置于第一个for
循环中,您将知道它运行n+1
次,而不只是一次。我只需使用n=3
在本地计算机上运行您的代码。