循环未在上述时间运行

时间:2013-10-08 17:17:15

标签: c loops

在第一个'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;
}

2 个答案:

答案 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在本地计算机上运行您的代码。