我有一个小问题让我很头疼。我需要做的是读取一个 .txt 文件,其中包含随机数,将它们保存到一个数组中,然后将它们打印到排序的屏幕上(使用冒泡排序)。前两个阶段似乎很好,问题是我的交换功能和/或打印行似乎缺少一些东西。我有atm的代码是:
#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
提前致谢