为什么即使输入相同,此代码也会打印不同的数字?

时间:2018-03-09 18:08:26

标签: c

我正试图解决这个问题: http://codeforces.com/problemset/problem/888/A

我写了以下代码:

#include <stdio.h>

int main(void) 
{
    int a, i, q, count;

    scanf("%d ", &q);

    int ar[q];

    for (i = 0; i < q; i++)
    {
        scanf("%d ", &ar[i]);
    }

    for (i = 0; i < q; i++)
    {
        if (i != q - 1 && i != 0)
        {
            if (((ar[i] < ar[i + 1]) && (ar[i] < ar[i - 1])))
            {
                count++;
            }
            else if (((ar[i] > ar[i + 1]) && (ar[i] > ar[i - 1])))
            {
                count++;
            }
        }
    }
    printf("%d", count);
    return 0;
}

当我用第一个测试用例运行程序时,它会输出随机数。 当我再次运行它时,会打印出不同的随机数。

我查了解决方案: https://github.com/Waqar-107/Codeforces/blob/master/A-set/888A.Local%20Extrema.py

这段代码不是我写的吗?为什么我的代码打印出奇怪的东西? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

You should initialize the variable count to zero:

#include <stdio.h>

int main(void) 
{
int a, i, q, count=0;

scanf("%d ", &q);

int ar[q];

for (i = 0; i < q; i++)
{
    scanf("%d ", &ar[i]);
}

for (i = 0; i < q; i++)
{
    if (i != q - 1 && i != 0)
    {
        if (((ar[i] < ar[i + 1]) && (ar[i] < ar[i - 1])))
        {
            count++;
        }
        else if (((ar[i] > ar[i + 1]) && (ar[i] > ar[i - 1])))
        {
            count++;
        }
    }
}
printf("%d", count);
return 0;
}