gpt4 book ai didi

c - 我只能调用一个函数一次来使用指针比较两个数字

转载 作者:行者123 更新时间:2023-11-30 14:53:52 24 4
gpt4 key购买 nike

我必须使用指针比较 2 个数字,但我只能调用一次函数来获取数字,然后我必须从 2 个数字中找到最大的数字。然后我必须显示哪个数字最大。我有一个很难,因为我不知道我哪里错了,因为当我第一次输入较大的数字时,它总是说第二个数字更大。有人可以帮忙吗?这是我尝试过的。

#include <stdio.h>


void getnumbers(float*,float*);
float findlargest(float*,float*);
void displaylargest(float);

int main ()
{
float num;
float num2;
float largest;

getnumbers(&num,&num2);

largest=findlargest(&num,&num2);
displaylargest(largest);

return 0;
}

void getnumbers(float*num,float*num2)
{

printf("Enter a number\n");
scanf("%f",num);

printf("Enter a number\n");
scanf("%f",num2);


}

float findlargest(float*numptr,float*num2ptr)
{


if (*numptr>*num2ptr) {
return *numptr;
}
else {
return *num2ptr;
}
}

void displaylargest(float largest)
{
printf("\nthe largest is %f ",largest);

}

最佳答案

让我们从getNumbers()开始:
要使函数返回多个值,可以通过引用传递参数。 This post对通过引用传递参数有很好的解释。

When we pass-by-value we are passing a copy of the variable to a function. When we pass-by-reference we are passing an alias of the variable to a function.

其中别名是指向 main() 中声明的 numnum2 内存位置的指针(请参见下面的函数)。这允许您在变量传递到的函数内更改它们的值。

void getnumbers(float *num, float *num2)//pass by ref to get two numbers
{
printf("Enter a number\n");
scanf("%f",num);//"%2f" is not something you would do

printf("Enter a number\n");
scanf("%f",num2);//assign to num2, not num
}

现在 findLargest() 确实不需要将指针作为参数,但如果赋值需要,则可以。仅当您打算更改它们的值时,您才会这样做。如果您只需要使用该值,则只需按值传递即可:

//much more concise and does the exact same thing!
//Normally wouldn't use pointers here, but it is a requirement for the assignment
float findlargest(float *num, float *num2)
{
return *num > *num2 ? *num : *num2;
}

现在你的 main 变成:

int main ()
{
float num = 0;//always a good idea to initialize variables!
float num2 = 0;
float largest = 0;

getnumbers(&num, &num2);//pass by reference

largest = findlargest(&num, &num2);//pass by value

displaylargest(largest);

return 0;
}

关于c - 我只能调用一个函数一次来使用指针比较两个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46986386/

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