c - 循环未在指定时间内运行

标签 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;
}

最佳答案

您在这里超出了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/

相关文章:

java - 尝试测试输入有效性

c++ - 赋值开关大小写 c++

r - 具有挑战性的回归也许可以用循环和 F-stat 来实现

Java 'do while' 循环不工作

这可以更快地完成吗?

objective-c - 将 Objective-C 代码转换为纯 C

c - 使用适用于 C 的 AMPL C++ API?

mysql - MySQL-从版本控制数据库获取最新版本的文件内容

c - 向我的程序添加双变量验证

c - 在堆栈上分配大型数组时出现段错误