c - C中的循环出错了

标签 c arrays loops variables

我有这个代码

for (i = 0; i < s; i++) // for i from 0 to Runners
{
    for (j = 0; j < 4; j++) //for j from 0 to laps
    {
        printf("\nEnter the time of lap %d for runner %d in minutes: ", j+1, i+1); // prompt for time for each runner in minutes
        while (scanf("%d", &Runnerm[i][j]) != 1) // While scanf returns not equal to 1 (value parsed == TRUE)
        {
            while ((ch = getchar()) != '\n') putchar(ch); // check if ch=character, compare last entry (\n if character)
            printf(" is not an integer.\nPlease enter only an "); // print error
            printf("integer, such as 1, 5, or 9 : \n"); // cnt print error
        }

        printf("Enter the time of lap %d for runner %d in seconds: ", j+1, i+1); //prompt for time for each runner in seconds
        while (scanf("%d", &Runners[i][j]) != 1) // While scanf returns not equal to 1 (value parsed == TRUE)
        {
            while ((ch = getchar()) != '\n') putchar(ch); // check if ch=character, compare last entry (\n if character)
            printf(" is not an integer.\nPlease enter only an "); // print error
            printf("integer, such as 1, 5, or 9 : \n"); // cnt print error
        }

        printf(" \n check 1 \n ");
        printf("\n %d minutes -- %d seconds \n", Runnerm[i][j], Runners[i][j]); // Correct Check!

        printf(" \n check 1.5 \n ");
        printf("\n %d minutes -- %d seconds \n", Runnerm[i][0], Runners[i][0]); // Incorrect Check!
        printf("\n %d minutes -- %d seconds \n", Runnerm[i][1], Runners[i][1]); // Incorrect Check!
        printf("\n %d minutes -- %d seconds \n", Runnerm[i][2], Runners[i][2]); // Incorrect Check!
        printf("\n %d minutes -- %d seconds \n", Runnerm[i][3], Runners[i][3]); // Incorrect Check!

    }
}

问题是,当检查 1.5 第二次运行时,Runnerm[i][j]Runners[i+1][j] 获取值

简而言之,当i更改值时,Runnerm的先前存储值将获取当前存储的 Runners 的值..

这是为什么呢?我找不到原因..

编辑:“check 1”和“check 1.5”的存在是为了在循环的任何给定时间检查值。所以,即使我删除它们,程序仍然会被破坏。 此外,当这一切都修复后,检查将被删除,因为我不再需要检查这些值。谢谢大家的回答,但我不明白你为什么建议对检查做些什么,它们是用来调试的。 :\

编辑 找到导致问题的原因,当我使用另一个使用较少数组的程序版本时,问题就解决了,当我开始添加随机未使用的数组时,问题出现了。 这是为什么? (新问题) 会不会是内存与 Runners[i][j] 使用的内存重叠?

最佳答案

看来您的 printf 语句显示的是下一个运行者/下一次,但记录之前的运行者/时间:

printf("\nEnter the time of lap %d for runner %d in minutes: ", j+1, i+1);
                                                                ^^^^ ^^^^

为什么不是 i j

关于c - C中的循环出错了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24459312/

相关文章:

ruby - 导轨 : CSV Array to string (convert)

java - 在不使用 break 的情况下跳出嵌套的 for 循环

javascript - 如何用Javascript制作一个非常简单的倒计时器?

在写入文件之前检查文件中是否存在字符串/单词

c - 是否可以使用整数作为数组的名称?

c - C中三位数精度的快速舍入 float

r - R Rvest for()和错误服务器错误: (503) Service Unavailable

c - Ubuntu $(dollar) 符号是一种转义文本。为什么?解决方法?

php - 阵列错误/警告

c - 在大小为 nxn 的矩阵的单元格中找到最大用户数