Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 函数,它接受2个浮点数,并在使用指针的块之后返回它们的差值_C_Function_Difference - Fatal编程技术网

C 函数,它接受2个浮点数,并在使用指针的块之后返回它们的差值

C 函数,它接受2个浮点数,并在使用指针的块之后返回它们的差值,c,function,difference,C,Function,Difference,我正在尝试编写一个函数,它接受两个通用浮点(设为'a'和'b'),并返回分配给变量的差值,因此a=a-b和b=b-a。 它应该打印带有2个小数位的值,并且必须在我退出块后工作。。。我的代码有什么问题 #include <stdio.h> float diff_abs (float *a, float *b) { *a= *a-*b; *b= *b-*a; } int main(void) { float c, d; scanf("%f", &c);

我正在尝试编写一个函数,它接受两个通用浮点(设为'a'和'b'),并返回分配给变量的差值,因此a=a-b和b=b-a。 它应该打印带有2个小数位的值,并且必须在我退出块后工作。。。我的代码有什么问题

#include <stdio.h>
float diff_abs (float *a, float *b) {
*a= *a-*b;
*b= *b-*a;
}

int main(void) {
    float c, d;
    scanf("%f", &c);
    scanf("%f", &d);
printf("%.2f\n%.2f", diff_abs(&c, &d));
return 0;   
}
#包括
浮动差速器abs(浮动*a,浮动*b){
*a=*a-*b;
*b=*b-*a;
}
内部主(空){
浮点数c,d;
scanf(“%f”、&c);
scanf(“%f”、&d);
printf(“%.2f\n%.2f”,不同的abs(&c,&d));
返回0;
}

非常感谢您的建议,谢谢。

首先,您正在更改
a
值,然后将其用于下一次计算,因此请将函数简化为:

void diff_abs (float *a, float *b) {
    *a= *a-*b;
    *b = -*a
}
第二,由于不能在
C
函数中返回多个变量,解决方案之一是使用
void
返回函数,但在使用指针时更改变量(就像你不知怎么做的那样)

最后,由于函数返回
void
,因此在
printf
函数中不能将其用作
浮动
,因此只需使用
c
d

像这样:

printf("%.2f\n%.2f",c,d);
当然,别忘了打电话:

diff_abs(&c, &d)
在尝试打印之前


在C中返回多个变量时,您可以参考这一点。问题是,第二次计算使用了新的a值。我建议做
*b=-*a需要两个通用浮点数。
…1)什么是通用浮点数?2) 指针!=标量变量。另一个问题是,
diff_abs
函数应该返回一个
float
值,但实际上它不返回任何值。