C:具有3个参数的交换函数

时间:2013-05-15 13:39:37

标签: arguments swap

我有一个小问题让我头疼。我需要做的是读取一个.txt文件,该文件随机抽取数字,将它们保存到一个数组中,然后将它们打印到屏幕分类(带有冒泡排序)。 前两个阶段看起来很好,问题是看起来我在交换功能和/或打印线上遗漏了一些东西。我的代码是:

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>


void swap(int A, int j, j+1)
{
    int original_A_i = A[j];
    A[j] = A[j+1];
    A[j+1] = original_A_i;
}

bool greater(double first, double second)
{
    return first > second;
}



int main()
{

    int totalNums = 0;
    double A[totalNums];
    FILE * fp;

    fp = fopen ("file.txt", "r");
    int i = 0;
    while(fscanf(fp, "%lf", &A[i]) != EOF) {
        i++; }

    totalNums = i;

     fclose(fp);


    for (int i = 0; i < totalNums - 1; i++) {
        for (int j = 0; j < totalNums - 1; j++) {
            if (greater(A[j], A[j + 1]))
                swap(A, j, j+1);
        }
    }

    printf("Ordem Ascendente:\n");

    for ( i = 0 ; i < totalNums ; i++ ) {
        printf("\n%lf", A[i]);
    }

    return 0;
}

我从代码中弄乱的错误是崩溃或“0 0 0 0 0 0 0”结果(由行分隔)。 注意:老师希望我们在不使用指针的情况下尝试制作它,但是,如果我们不设法让它工作,我们可以使用较低的等级。

PS:对我很轻松,我还在学习,这里的问题可能很简单:P

提前致谢

1 个答案:

答案 0 :(得分:0)

你正在传递数组吗?然后交换def必须像这样

 void swap(int A[], int j, j+1) {
     int original_A_i = A[j];
     A[j] = A[j+1];
     A[j+1] = original_A_i; }

如果您是新手,请查看此passing array