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

时间:2017-07-14 14:54:57

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

1 个答案:

答案 0 :(得分:1)

你的函数接受两个参数:

  • a:数组
  • n:数组大小

检查它是否已排序您迭代所有元素并查看其下一个元素是否大于它自己。为此,您可以使用i从零(最低可能索引)到n-1(最高可能索引)。
但是,您始终要检查i是否大于i+1。如果你达到i的最后一个可能索引会怎样?然后i+1等于n,因此在数组之外。你阵列之外的是随机数据。