C - 如何在方法中对数组进行排序和打印,但不影响先前未排序的数组

标签 c arrays methods return void

这是一个一成交或不成交的游戏。

所以在我的主函数中,我这样调用我的 casesort 方法:

casesort(cases);

我的方法看起来像这样,我已经意识到这不是最有效的排序,但我将按照我所知道的进行:

void casesort(float cases[10])
{
int i;
int j;
float tmp;
float zero = 0.00;

for (i = 0; i < 10; i++)
{
    for (j = 0; j < 10; j++)
    {
        if (cases[i] < cases[j])
        {
            tmp = cases[i];
            cases[i] = cases[j];
            cases[j] = tmp;
        }
    }
}

//Print out box money amounts
printf("\n\nHidden Amounts: ");
for (i = 0; i < 10; i++)
{
    if (cases[i] != zero)
        printf("[$%.2f] ", cases[i]);
}

}

所以当我回到主窗口时,发现数组已排序。我认为 void 会阻止该方法返回排序数组。我需要打印出实际的案例编号,我通过跳过任何填充有 0.00 的案例来做到这一点。但是在第一轮案例选择之后,我在 MAIN 中打印出“5,6,7,8,9,10”。我需要它根据已挑选的内容打印箱子。我觉得这是一个简单的修复,只是我对 C 细节的了解仍在增长。有什么想法吗?

最佳答案

返回类型void与防止数组排序无关。它只是说该函数不返回任何内容。

您会看到传递的数组本身受到影响,因为数组在传递给函数时衰减为指针。复制该数组,然后传递它。这样你就得到了原始列表。

关于C - 如何在方法中对数组进行排序和打印,但不影响先前未排序的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18882978/

相关文章:

c - 如何在 XS 代码中逐个字符地处理字符串

c - 为什么 C 程序可以删除自身然后运行另一个任务?

java - 如何将一些或多个对象附加到枚举?

javascript - JS 中 .push 处的代码损坏。

C - 冒泡排序程序二进制文件

c - 如何修复有关 Mandelbrot 集的 Pthreads 代码?

javascript - 使用 Ajax 和 Jquery 按最大到最小的数字对数组进行排序

java - 在数组中搜索标记并找到它们

c# - 返回多个结果的类方法(列表和多维数组)

android - 获取当前壁纸