我只需要帮助使用相同的函数返回两个用户输入浮点数。谁能告诉我如何返回多个变量?提前谢谢。
#include <stdio.h>
#define SIDE_1_LABEL 'A'
#define SIDE_2_LABEL 'B'
float getUserValue(float side1, float side2);
int main()
{
float side1,
side2;
side1 = getUserValue(SIDE_1_LABEL);
side2 = getUserValue(SIDE_2_LABEL);
return 0;
}
float getUserValue(float side1, float side2)
{
printf(" Enter a value for Side %c.\n", SIDE_1_LABEL);
printf("> ");
scanf("%f", &side1);
printf(" Enter a value for Side %c.\n", SIDE_2_LABEL);
printf("> ");
scanf("%f", &side2);
return side1, side2;
}
答案 0 :(得分:2)
您需要将两个浮点数放入函数可以返回的结构中,或者将一个(或两个)浮点数作为pass-by-reference参数传递。在这种情况下,我肯定更喜欢两个pass-by-reference参数。
void getUserValue(float *side1, float *side2) {
printf(" Enter a value for Side %c.\n", SIDE_1_LABEL);
printf("> ");
scanf("%f", side1);
printf(" Enter a value for Side %c.\n", SIDE_2_LABEL);
printf("> ");
scanf("%f", side2);
}
您的代码中还有其他严重问题,例如将字符A
和B
作为getUserValue()
的浮点参数传递,并且每次调用只传递一个。您应该将getUserValue()
称为:
int main() {
float side1, side2;
getUserValue(&side1, &side2);
return 0;
}
您无需传入SIDE_1_LABEL
和SIDE_2_LABEL
,因为它们是全局#defined,可以由getUserValue()
直接访问。由于您在一次通话中同时获得两个值,因此无需再拨打getUserValue()
两次。
另一种方法是让getUserValue()
一次只获得一个值:
float getUserValue(char label) {
float side;
printf(" Enter a value for Side %c.\n", label);
printf("> ");
scanf("%f", &side);
return side;
}
然后像你现在这样打电话两次:
side1 = getUserValue(SIDE_1_LABEL);
side2 = getUserValue(SIDE_2_LABEL);