gpt4 book ai didi

c - 使用 passByValue 对 20 个整数进行排序

转载 作者:行者123 更新时间:2023-11-30 18:27:47 25 4
gpt4 key购买 nike

所以我收到了一份家庭作业,其中有二十个硬编码的整数,每个整数都是随机数。有些可以是相同的。使用 passByValue,我需要打印三个最大的数字。

现在我已经计划好了。这些数字将在 main 中声明,每个数字将被发送到一个新函数,可能称为排序。在那里,我将有三个整数,它们将采用较大的数字(正在传递的数字,或每个位置中已有的数字),然后将两个中较大的一个分配给该整数,然后再分配给该函数中的其他两个。

不过,我有两个问题。问题一是主要的。作业说明明确指出我不能使用数组。所以我能想象的只是二十个不同的整数,每个都有不同的值。但这里的问题是,如果我使用 passByValue,我实际上无法同时对它们进行排序。或者也许我可以,但是看起来不太漂亮,而漂亮正是老师想要的。

所以问题一是如何有效地将每个整数一一传递给排序函数?

问题二:我不希望打印函数在完成排序之前打印出三个最大的数字。我能想象这种工作的唯一方法是,以某种方式阻止将值发送到打印函数,直到 main 中的整数行用完。但我不确定这是否可能......

显然我不是在寻找完整的代码。我真正寻找的只是一个可以遵循的方向。我是否可以在主函数和排序函数或结构中使用某种形式的递归(尽管我不知道我的老师是否会欣赏我使用它们,因为它们类似于数组)或其他东西。

最佳答案

您可以很容易地创建一个没有数组和递归的可扩展解决方案。即您可以将 20 更改为 20,000,无需额外资源。

这是一些示例伪代码:

for(int i = 0; i < 20; i++)
{
// TODO
// -1 is a sample start value. You can find a better one
int biggest = -1;
int second_biggest = -1;
int third_biggest = -1;
int num = generate_random_num();
if (num > third_biggest)
{
// TODO
// check against second_biggest and biggest too
// set one of the variables but remember: if you set biggest, what was
// in biggest is now second_biggest and the old second_biggest is now
// third_biggest
}
// TODO
// Print the 3 results

可以对其进行重构以支持a1=13、a2=42...a20=666。您的最大 val 成为全局变量。您的 if (num >third_biggest) 被包装在一个函数中,您为每个变量调用一次该函数。

关于c - 使用 passByValue 对 20 个整数进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52864422/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com