问题描述
此代码有问题,因为我似乎找不到问题?这是我尝试解决的问题:-声明并编写一个称为valid_triangle的函数,该函数将代表三角形三个边的长度的三个实数作为其自变量,并根据这三个长度来输出true或false可以做成三角形。
- 关于三角形的以下规则:
- 三角形只能有正长度的边。
- 三角形的任意两个边的长度之和必须大于第三个边的长度。
//includes
#include <stdio.h>
#include <cs50.h>
bool valid_triangle(float x,float y,float z);
int main (void)
{
float x = get_float("x:");
float y = get_float("y:");
float z = get_float("z:");
bool w = valid_triangle(x,y,z);
}
bool valid_triangle(float x,float z)
{
// only positive sides
if (x <= 0 || y <= 0 || z <= 0)
{
return false;
printf("false\n");
}
// sum of the lengths of any two sides of the triangle must be greater than the length of the third side.
else if (x + y < z || x + z < y || y + z < x)
{
return false;
printf("false\n");
}
else
{
return true;
printf("True\n");
}
return 0;
}
解决方法
对于初学者来说,if语句
else if (x + y < z || x + z < y || y + z < x)
不正确,应该看起来像
else if (x + y <= z || x + z <= y || y + z <= x)
返回语句之后的语句,如此代码片段
return false;
printf("false\n");
没有效果。看来你是说
printf("false\n");
return false;
尽管printf
的调用不应在函数内部。
您只能在main之类的地方拨打一次printf
bool w = valid_triangle(x,y,z);
printf( "%s\n",w == false ? "False" : "True" );
也是函数中的最后一个return语句
return 0;
是多余的。
这是一个演示程序。
#include <stdio.h>
#include <stdbool.h>
bool valid_triangle(float x,float y,float z)
{
// only positive sides
if (x <= 0 || y <= 0 || z <= 0)
{
return false;
}
// sum of the lengths of any two sides of the triangle must be greater
// than the length of the third side.
else if ( x + y <= z || x + z <= y || y + z <= x)
{
return false;
}
else
{
return true;
}
}
int main(void)
{
float a = 4.0f,b = 5.0f,c = 6.0f;
printf( "%.1f,%.1f,%.1f are sides of a triangle - %s\n",a,b,c,valid_triangle( a,c ) ? "true" : "false" );
return 0;
}
程序输出为
4.0,5.0,6.0 are sides of a triangle - true
,
// 这段代码应该可以作为 valid_triangle 程序的解决方案。希望有帮助
#include <cs50.h>
#include <stdio.h>
//先声明函数,最后用分号
bool valid_triangle(float x,float z);
int main(void)
{
// Ask users for inputs
float a = get_float("Give me the first integer to form a triangle: ");
float b = get_float("Give me the second integer to form a triangle: ");
float c = get_float("Give me the third integer to form a triangle: ");
// function call
bool result=valid_triangle(a,c);
//set condition for your boolean variable 'result'
if (result == true)
{
printf("True \n");
}
else
{
printf("False \n");
}
}
//function definition,without any semi-colon at the end
bool valid_triangle(float x,float z)
{
//checking if any of the sides is negative or equal to zero
if (x<=0 || y<=0 || z<=0)
{
return false;
}
// sum of the lengths of any two sides of the triangle must be greater than the length
//of the third side.
else if ((x+y<=z) || (x+z<=y) || (z+y<=x))
{
return false;
}
return true;
}