我有function a
返回一个整数,function b
也返回一个整数。如何在另一个函数中使用函数a
和b
?例如:
int a(int number){
return number-5;
}
int b(int number){
return number+5;
}
double GetPercentage(int n1, int n2){
return (n1/n2)*100;
}
int main(){
GetPercentage(a(10),b(10));
return 0;
}
预期输出:33.33
。
答案 0 :(得分:2)
一,您需要打印GetPercentage
的返回值。因为,你没有做任何事情,所以程序没有任何输出。
double p = GetPercentage(a(10),b(10));
printf("%f\n", p);
二,你需要用浮点强制除法。否则当你划分两个int
时,结果将被截断为一个整数:5/15 = 0.3333,被截断为0,0 * 100是0而不是33.33。
return (((double) n1) / n2) * 100;
答案 1 :(得分:1)
您的问题是整数除法发生在n1
和n2
,因此5/15 - > 0 ..你的问题不是功能的组合。
所以将return (n1/n2) * 100;
更改为return (100.0 * (double)n1 / (double) n2 );
是的额外演员阵容很冗长;但是对于像你这样正在阅读你试图进行浮点划分的代码的人来说会更清楚
除非您添加某种类型的打印声明,否则不会有任何打印输出。 也许像这样使用printf:
double p = GetPercentage( a( 10 ), b( 10 ) );
printf( "%f\n", p );
答案 2 :(得分:1)
由于行
中的整数除法,您正在丢失一些数据 return (n1/n2)*100;
相反,请使用
return (100.0*n1/n2);
答案 3 :(得分:0)
代码是正确的,但您没有使用GetPercentage
的返回值执行任何操作。您可以添加以下更改:
double result = GetPercentage(a(10),b(10));
printf("%f\n", result);
在代码的顶部:
#include <stdio.h>
还要确保返回double
类型的值。因此,请将GetPercentage
功能更改为以下内容:
return (100 * n1/n2);