在一组用户输入中交换

时间:2015-03-28 17:49:15

标签: c arrays swap

我在这里就如何继续我的计划获得一些建议。这是一项家庭作业,其目的是让另一种方法称为int is_sorted(int array[], int length); 有了这些前后条件。

  1. 前提条件:数组将是一个长度为整数的数组。
  2. 后置条件:如果数组处于排序(非递减)顺序,则返回true,否则返回false。
  3. 到目前为止,我已经能够将用户输入数组和它应该存在多长时间。

    #include <stdio.h>
    #include <math.h>
    
    int is_sorted(int array[], int lenght);
    
    int is_sorted(int array[], int lenght)
    {
        int swap;
        int smallest;
        int index = 0;
        scanf("%d", &lenght);
    
        int list[lenght];
        int i;
        for (i = 0; i < lenght; i++)
        {
            scanf("%d", &list[i]);
        }
    
        return 0;
    }
    
    int main()
    {
    
    }
    

    我如何要求用户输入在给定数组中一次交换两个元素?

    最终产品应该与此类似:

      

    示例运行:用户输入以粗体显示

         

    4 &lt; - 数组的长度。

         

    1 1 1 2 &lt; - 用户输入这4个数字。

         

    什么是下一次交换? 2 3

         

    EVAN已经排除了阵营。

         

    什么是下一次交换? 2 0

         

    什么是下一次交换? 0 3

         

    EVAN已经排列了阵列。

         

    什么是下一次交换? -1 -1

         

    史蒂夫是对的!

         

    -1 -1结束交换过程并检查数组是否已排序。

1 个答案:

答案 0 :(得分:2)

while(i != -1 && j != -1){
    scanf("%d %d", &i, &j);
    swap(&array[i], &array[j]);
}

swap()看起来像这样:

void swap(int* a, int* b){
    int c = *a;
    *a = *b;
    *b = c;
}

对于交换两个变量做一些我不记得的按位xoring,可能有一个很好的技巧。