- 已关闭。**此问题为not reproducible or was caused by typos。当前不接受答案。
这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
3天前关闭。
Improve this question
#include <cs50.h>
#include <stdio.h>
bool valid_triangel(double x , double y , double z );
int main(void)
{
double a = get_double ("give me first length : ");
double b = get_double ("give me second length : ");
double c = get_double ("give me third length : ");
bool valid_triangel(double a , double b , double c );
if ( (bool) valid_triangel ) { printf("THIS IS NOT VALID /n "); }
else { printf("THAT IS A TRIANGEL /n " ); }
}
bool valid_triangel(double x , double y , double z )
{
if ((x + y >= z ) || (x + z >= y) || (z + y >= x ) ) { return false ; }
if ( x <= 0 || y <= 0 || z <= 0 ) { return false ; }
return true ;
}
我们的期望是,如果您写入的数字没有给出三角形,则它会写入"这是无效的",如果数字给出三角形,则它会写入"这是三角形"
1条答案
按热度按时间vuktfyat1#
1.您正在将函数的地址强制转换为
(bool) valid_triangel
,而不是调用它。它将始终为非NULL,并且无论输入如何,都将执行if条件的相应true分支。1.(非问题)我没有安装cs50.h,所以我写了一个快速的
get_double()
来测试你的代码。1.删除了
main()
中的valid_tringel()
声明。1.修正了排印错误(三角形)。
(x + y >= z ) || (x + z >= y) || (z + y >= x )
在valid_triangle()
中反转。当您返回布尔值时,只需直接express is而不是if
条件:根据第一三角不等式定理,三角形任意两边的长度之和必须大于第三边的长度。
1.在
main()
中使用早期返回样式,因此正常情况下不会缩进(纯粹是样式问题)。下面是示例输出: