#include <iostream>
#include <math.h>
using namespace std ;
int add (float,float);
int Multiply (float,float);
int division (float,float);
int subtract (float,float);
int main ()
{
float x,y,z;
float sum;
float multiply2;
float division2;
float subtract2;
cout<<"please enter the 3 FLOAT numbers you would like to do the processes on"<<endl;
cin>>x>>y>>z;
sum = addd(x, y,z);
cout << "Sum = " << sum;
return 0;
multiply2 = Multiplyy(x, y,z);
cout << "multiply = " << multiply2;
return 0;
division2 = divisionn(x, y,z);
cout << "division = " << division2;
return 0;
subtract2 = subtractt(x, y,z);
cout << "subtract = "<<subtract2 << sum;
return 0;
}
int addd(float a, float b,float c)
{
float addd;
addd = a + b + c;
return addd;
}
int Multiplyy(float a, float b,float c)
{
float Multiplyy;
Multiplyy = a * b * c;
return Multiplyy;
}
int divisionn(float a, float b,float c)
{
float divisionn;
divisionn = a / b / c;
return divisionn;
}
int subtractt(float a, float b,float c)
{
float subtractt;
subtractt = a - b -c;
return subtractt;
}
它不起作用!它给了我错误,标识符没有定义! 所以,是的,我尝试了我能做的一切,现在已经很晚了,我真的不知道我错过了什么! 任何帮助都会非常好 谢谢!
答案 0 :(得分:1)
您的转发声明不正确。你已经向前声明了你的函数接受两个float参数,但是你的定义需要三个参数。此外,前向声明的函数名称不正确(例如,您转发声明add
,但之后调用并定义addd
。
修正您的函数转发声明,以取代(float, float, float)
而不是(float, float)
,并将其命名为与您的程序的其余部分匹配,并it will compile。
你还有其他的奇怪之处,比如在函数addd
(以及你的其他函数中)声明一个名为addd
的变量,这会令人困惑,但不会导致编译时间错误。这就是我所说的&#34;风格的错误&#34; - 程序仍然会运行,但源代码不必要地混淆。声明隐藏先前声明的标识符的新标识符称为&#34; shadowing,&#34;作为一般规则,应该避免它,因为它会造成混乱。
您的功能也会截断他们的结果,因为他们接受float
值但返回int
。计算的任何小数部分都将被丢弃。 (例如,addd(0.5, 1.5, 2.5)
将返回4.5,但将返回4,因为float-to-int转换会丢弃小数0.5分量。)