gpt4 book ai didi

c++ - 指针、C++...代码不工作

转载 作者:太空宇宙 更新时间:2023-11-04 14:50:08 25 4
gpt4 key购买 nike

这是问题:编写具有五个参数的函数 minMax 的定义。前三个参数是整数。最后两个由函数设置为前三个参数值中的最大值和最小值。该函数不返回值。

函数可以按如下方式使用:

int a = 31, b = 5, c = 19, big, small; 
minMax(a, b, c, &big, &small); /* big is now 31; small is now 5 */

这是我的代码:

void minMax(int x, int y, int z, int* big, int* small)
{
if (x < y && x < z)

*small = x;

else if (y < x && y < z)

*small = y;

else if (z < x && z < y)

*small = z;

if (x > y && x > z)

*big = x;

else if (y > x && y > z)

*big = y;

else if (z > x && z > y)

*big = z;
}

这是我遇到的错误:

您的函数没有更改small 的值。确保在函数中取消引用它。

不确定哪里出了问题?

谢谢。

最佳答案

我看到一个紧迫问题。

当你传递数字1时,你认为会发生什么? , 17

也许您可能需要考虑使用 <=>=而不仅仅是 <> .

由于该错误消息看起来与我之前看到的任何编译器错误都不一样(并且代码在语法上是有效的),我建议该消息来自测试工具,它可能:

  • 设置big/small值转换为传入的数字以外的数字(例如 -9999 )。
  • 使用测试数据调用函数(例如,1,1,7)。
  • 检查输出变量以确保它们已更改为正确的值。

此外,它不是世界上最可读 的代码(无意冒犯)。如果您能够以一种一目了然的方式构建您的代码(包括适当的评论),您将有成群结队的 future 程序员赞美您并崇拜您的名字:-)

像这样的东西比很多那些 else if 更清楚地表明了意图(IMNSHO)构造:

// Populate big/small based on max/min of x, y and z.

void minMax (int x, int y, int z, int *big, int *small) {
// Set by default to x, only change if others are bigger.

*big = x;
if (y > *big) *big = y;
if (z > *big) *big = z;

// Same for small but with reversed comparisons.

*small = x;
if (y < *small) *small = y;
if (z < *small) *small = z;
}

关于c++ - 指针、C++...代码不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13831533/

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