【问题标题】:Why does my printf not print the elements of my array?为什么我的 printf 不打印数组的元素?
【发布时间】:2021-07-15 09:50:58
【问题描述】:

作为一项练习任务,我尝试使用 C 编程语言实现冒泡排序算法。以下是我的代码:

int main() {
    int arr[5];
    int i, j;
    int n = sizeof(arr[0]) / sizeof(arr);
    srand(time(NULL));

    for (i = 0; i < n; i++) {
        arr[i] = rand() % 100;
    }

    printf("Array before ordering:\n");
    for (i = 0; i < n; i++) {
        printf("%d\t", arr[i]);
    }
    printf("\n");

    for (i = 0; i < n - 1; i++) {
        for (j = 0; j < n - 1; j++) {
            if (arr[j] > arr[j + 1]) {
                swap(&arr[j], &arr[j + 1]);
            }
        }
    }

    printf("Array after ordering:\n");
    for (i = 0; i < n; i++) {
        printf("%d\t", arr[i]);
    }
    printf("\n");

    system("PAUSE");
    exit(0);
}

如您所见,我有两个循环打印出数组,一个打印出初始数组,一个在订购后打印出来。然而这是输出:

排序前的数组:

排序后的数组:

按任意键继续。 . .

由于某种原因,我似乎无法输出数组的元素。我试过在 Visual Studio 和 CLion 上运行它。谁能看到这里出了什么问题?

【问题讨论】:

  • int n = sizeof(arr[0]) / sizeof(arr); - 应该反过来。
  • int n = sizeof(arr[0]) / sizeof(arr); 是(可能)int n = 4 / 20;int n = 0;
  • 你应该学习如何在调试器中运行你的程序。在单步执行代码时观察变量应该会在几秒钟内发现问题。

标签: arrays c bubble-sort


【解决方案1】:

int n = sizeof(arr[0]) / sizeof(arr);

这应该是相反的。即sizeof(arr) / sizeof(arr[0])

如果要调试,请尝试打印 n。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-09-28
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    • 2014-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多