即使代码编译也会出现运行错误

时间:2018-10-23 13:41:35

标签: c

如果电梯内的人的目的地与另一层相邻,则他们无法按下按钮。该程序计算可以按下按钮的人数。当代码编译并正确运行时,使用的检查软件已用运行错误标记我的答案。我怀疑这与内存集有关,可能与语法有关。

#include <stdio.h>
#include <string.h>

int status[20]; // stores whether a button is pressed for a floor

int main() {

    int t, n, i, j; //t is the number of cases, j is the case counter, n is the number of people choosing floors, i is the people counter

    scanf("%d", &t);

    j = 1;

    while (j <= t) {

        scanf("%d", &n);

        int cnt = 0; // counter variable to store the no of floors pressed

        for (i = 0; i < n; i++) {

            int x;

            scanf("%d", &x);

            if (!status[x - 1] && !status[x + 1])
                // checks if both upper and lower floors aren't pressed
                status[x] = 1, cnt++; // sets status to 1 and increments counter

        }

        printf("Case #%d: %d\n", j, cnt);

        memset(status, 0, n * sizeof(int));

        j++;
    }
}

1 个答案:

答案 0 :(得分:1)

如果您运行的是传统C语言,我已经发现一些简单的语法错误,这些错误不会在传统C语言中进行编译,但是在C ++环境中可以正常工作。我不知道您使用什么进行编译,只是基于此页面上显示的代码进行编译。为了避免冲突,我将做一些更正。

您的整数值应始终在函数调用的顶部声明,对于在Visual Studio中某些scanf情况下会引发错误的声明,也应声明 CRT_SECURE_NO_WARNINGS

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <string.h>

int main() {

    int t, n, i, j = 1; //t is the number of cases, j is the case counter, n is the number of people choosing floors, i is the people counter
    int cnt = 0; // counter variable to store the no of floors pressed
    int x;
    int status[20]; // stores whether a button is pressed for a floor

    scanf("%d", &t);

    while (j <= t) {

        scanf("%d", &n);

        for (i = 0; i < n; i++) {

            scanf("%d", &x);

            /*Checks if both upper and lower floors aren't pressed*/
            if (!status[x - 1] && !status[x + 1])
            { 
                status[x] = 1, cnt++;   // sets status to 1 and increments counter
            }
        }
        printf("Case #%d: %d\n", j, cnt);
        memset(status, 0, n * sizeof(int));
        j++;
    }
}

免责声明:如果您将此代码用于电梯应用程序,则不对您在此处使用此处键入的内容负责,我对此不承担任何责任。在使用前必须确保专业人员安全。