我正在研究教科书中的一个问题而且我需要制作一个三角形角度计算器我以前习惯于Java但我不是100%在C上,我不理解其中的逻辑。
createData()
我不知道该怎么做。
答案 0 :(得分:1)
在你的功能定义中
float remainingAngle(float answer)
函数remainingAngle()
接受一个参数。
OTOH,在你的函数调用中
remainingAngle(angleA,angleB);
你传递了两个论点。
提供的参数编号和类型应与函数定义中的参数列表匹配。
那就是说,你的代码错了。
第1点。您的本地变量 shadow 全局变量。也许这不是你想要的。变化
float angleA = 30.0;
float angleB = 60.0;
到
angleA = 30.0;
angleB = 60.0;
第2点。功能
float remainingAngle(float answer)
{
float answer= angleA+angleB;
//redefinition of answer
return 0;
}
在逻辑上是错误的。它应该是
float remainingAngle(void)
{
float answer= angleA+angleB;
return answer;
}
应该像
一样调用float angleC = remainingAngle();
编辑后:
根据您的要求,您可以
float remainingAngle(float angleA, float angleB)
{
float answer= angleA+angleB;
return answer;
}
然而,这使得全局变量无用。
答案 1 :(得分:0)
除了Souravs的回答,您还可以执行以下操作:
float remainingAngle(float angA, float angB)
{
float answer = angA + angB;
return answer;
}
所以你的电话会保持不变。
从逻辑方面来说,你所做的是:
您将两个参数(angleA
的值和angleB
的值)传递给函数remainingAngle
。在那里进行计算并返回结果(answer
)。
答案 2 :(得分:0)
你的功能设计不好:
static float angleB;
static float angleA;
float remainingAngle(float answer)
{
float answer= angleA+angleB;
//redefinition of answer
return 0;
}
我该怎么办?
float
,一个标量变量。只需传递它。)删除answer
参数。 answer
重新定义为局部变量。删除相同名称的参数后,重新定义就会消失。但在这种情况下,您应该返回answer
而不是0
。你甚至可以没有中间变量answer
并返回结果表达式。所以:返回所需的表达 把所有这些放在一起:
float remainingAngle(float a, float b)
{
return 180.0f - a - b;
}
并将其称为:
float angleC = remainingAngle(angleA, angleB);
我习惯了java
我对Java并不太熟悉,但我不认为像这样的标量的功能在C和Java方面根本不同。