【问题标题】:C: sort values into a static listC:将值排序到静态列表中
【发布时间】:2020-05-04 14:06:19
【问题描述】:

我的任务是将考试结果粘贴到按从高到低排序的静态列表中。

我用检查结果初始化一个列表并声明一个“空静态列表”。 使用insertSortArray(...) 函数,我想将结果粘贴到静态列表中。

我想知道为什么“noten”的第二个 printf 之后“noten”的顺序发生了变化。 有人可以向我解释吗? 那是一点。 另一点是我正在努力使用算法对值进行排序。 我知道我可以复制这些值,然后编写一个冒泡排序,但是有没有办法将它从一个列表排序到另一个列表?

#include <stdio.h>

void insertSortArray(float *array, float *list, int length)
{
    for (int i = 0; i < length; i++)
    {
        list[i] = array[i];
    }
}


int main()
{
    float noten[] = { 4.0,
                      1.3, 
                      1.0, 
                      5.0, 
                      2.3};

    float statList[] = { 0 };
    int length = sizeof(noten) / sizeof(float);

    for (int i = 0; i < length; i++)
    {
        printf("%f\n", noten[i]);
    }

    printf("\n%f\n", noten[1]);
    printf("\n");

    insertSortArray(noten, statList, length);

    printf("\n");
    for (int i = 0; i < length; i++)
    {
        printf("%f\t", noten[i]);
        printf("%f\n", statList[i]);
    }

    printf("\n%f\n", noten[1]);

    return 0;
}

【问题讨论】:

  • nit-pick:始终使用无符号类型来存储类型的大小。将int length 替换为size_t length

标签: c arrays sorting static


【解决方案1】:

float statList[] = { 0 }; 声明了一个只有 one 元素的数组,该元素初始化为零。这太小无法将您的静态数组复制到。

用途:

float statList[5] = { 0 };

这声明了一个包含 5 个元素的数组,其中第一个元素显式初始化为零(并且由于没有提供足够的初始化程序来初始化整个数组,因此所有剩余元素都设置为零)。

【讨论】:

  • 感谢您的回答。
猜你喜欢
  • 2016-11-20
  • 2013-11-20
  • 2015-08-12
  • 1970-01-01
  • 1970-01-01
  • 2014-03-09
  • 1970-01-01
  • 1970-01-01
  • 2017-04-06
相关资源
最近更新 更多