【问题标题】:Pass array and number of its values to a function in C将数组及其值的数量传递给 C 中的函数
【发布时间】:2015-03-26 18:56:27
【问题描述】:

我需要将整数数组和数组中的值的数量传递给sort(array[], count) 函数。它应该返回冒泡排序进行的交换次数,而不是比较次数。此代码编译并运行,但我没有得到正确的输出。有时,尽管while(i < counter),我仍会不断输入值。

#include <stdio.h>

int sort(int array[], int count);
int main(void){
    int numArray[100];
    int counter, value;

    printf("Enter array length \n");
    scanf("%d", &counter);

    int i = 0;
    while(i < counter){
        scanf("%d", &numArray[i]);
        i++;
    }

    i = 0;
    while(i < counter){
        sort(numArray, counter);
        i++;
    }

    i = 0;
    while(i < counter){
        printf("Values: %d\n", numArray[i]);
        i++;
    }
    return 0;
}

int sort(int array[], int count){
    int i, j, temp;
    int swaps = 0;
    for(i = 0; i < count-1; ++i){
        for(j=0; j<count-1-i; ++j){
            if(array[j] > array[j+1]){
                temp = array[j+1];
                array[j+1] = array[j];
                array[j] = temp;
                swaps++;
            }
        }
    }
    return swaps;
}

【问题讨论】:

  • sort 没有返回任何东西,sort(numArray, counter); 也没有得到任何东西。
  • 我需要弄清楚如何返回掉期次数
  • sort 需要保存交换次数,然后return 结束。
  • 我会return array; 吗?
  • 在达到预期目标之前,您不应该增量编辑问题中的代码,因为未来的读者将无法识别原始问题。这似乎是一个没有任何问题的问题

标签: c arrays function sorting


【解决方案1】:

正如您现在的代码,您只需调用一次sort(numArray, counter) 并“捕获”返回值:

int totalSwaps = sort(numArray, counter);

并打印一次结果:

printf("the number of swaps in bubblesort is: %d", totalSwaps);

【讨论】:

  • 这将如何改变?
  • 我会在我的while循环中调用int totalSwaps = sort(numArray, counter);吗?还是你说不要?这是我的任务的一部分
  • 你不应该,只调用一次并在你的 main 中删除 (2nd)
  • 我必须有第二个 while 循环。这是我的任务的一部分
  • @CodyHutto 我不明白通过使用相同的参数调用你的函数而不改变任何全局状态来添加另一个循环一遍又一遍地做同样事情的意义:)。
猜你喜欢
  • 1970-01-01
  • 2021-02-21
  • 2012-07-25
  • 2011-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多