Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C:每次运行程序时都有不同的值_C_Arrays - Fatal编程技术网

C:每次运行程序时都有不同的值

C:每次运行程序时都有不同的值,c,arrays,C,Arrays,我在C中有一个简单的函数来获取数组是否被排序,但我似乎每次都得到不同的值。有时我通过了3个测试,有时我通过了2个测试,我不确定问题出在哪里 int is_sorted(int a[], int n) { for(int i = 0; i < n; i++) { if(a[i] > a[i + 1]) { return 0; } } return 1; } int m

我在C中有一个简单的函数来获取数组是否被排序,但我似乎每次都得到不同的值。有时我通过了3个测试,有时我通过了2个测试,我不确定问题出在哪里

int is_sorted(int a[], int n)
{
    for(int i = 0; i < n; i++)
    {   
        if(a[i] > a[i + 1])
        {   
            return 0;
        }
    }
    return 1; 
}

int main()
{
    int a[] = {2, 4, 9, 8, 12};
    int b[] = {-5, -2, 0, 8, 11, 15};
    int aa[] = {2, 18, 12, 9, 1, 2, 8, 11, 16, 3};
    int c[] = {4, 6, 8, 10};

    npassed = 0;
    if(!is_sorted(a, 5)) 
    {
        npassed++;
    }
    if(is_sorted(b, 6)) 
    {
        npassed++;
    }
    if(!is_sorted(aa, 10)) 
    {
        npassed++;
    }
    if(is_sorted(c, 5)) 
    {
      npassed++;
    }
    printf("number passed is_sorted  :  %i\n", npassed);
}

函数接受两个参数:

a:阵列 n:数组大小 若要检查它是否已排序,请迭代所有元素,并查看其下一个元素是否大于自身。要做到这一点,您可以使用i从0开始计算最低可能的索引,到n-1计算最高可能的索引。
但是你总是检查i是否大于i+1。如果达到i的最后一个可能的索引,会发生什么?那么i+1等于n,因此在数组之外。数组之外的是随机数据。

ifa[i]>a[i+1]可能会超过数组的末尾。在这种情况下,它肯定会过去:is_sortedc,5还有,NPPassed声明在哪里?我在玩它,是的,我刚刚看到了ifa[i]>a[i+1]的问题,以及对is_sortedc,5的调用。之后问题似乎消失了。数一数数组中的元素数!