提问人:Zane 提问时间:10/12/2023 最后编辑:Zane 更新时间:10/12/2023 访问量:96
为什么我的程序不打印 IF 函数?
Why does my program not print the IF function?
问:
这是 CS50 中的练习题,用户应输入 3 个维度。如果两边的长度之和大于第三边的长度,则应打印有效文本,如果没有,则在主文本中打印无效文本。
//validate whether the user's input dimensions can make a triangle
#include <cs50.h>
#include <stdio.h>
bool valid_triangle(float a, float b, float c);
int main(void)
{
//ask user for input
float a = get_float("Enter the length for one side of a triangle: ");
float b = get_float("Enter the length for the second side of a triangle: ");
float c = get_float("Enter the length for the third side of a triangle: ");
//if valid input
if (valid_triangle(a, b, c))
{
printf("Well done. The dimensions %.2f, %.2f, and %.2f make a triangle!\n", a, b, c);
}
//if invalid input
else
{
printf("Please try again. These dimensions do not make a triangle.\n");
}
}
//check user input
bool valid_triangle(float a, float b, float c)
{
if ((a <= 0) || (b <= 0) || (c <= 0))
{
return false;
}
if ((a + b <= c) || (a + c <= b) || (b + c <= a))
{
return false;
}
return true;
}
我的程序似乎卡住了,只打印无效的响应,我无法缩小原因范围。我的工具不起作用,所以我尝试通过将 bool 函数中的第二个换成 .这实际上有效,并导致程序在主函数中打印我的有效响应。我不知道为什么,但需要注意的是,它只会打印有效的响应。我觉得这个程序是 98%,但在它达到 100% 的过程中有一些小东西。debug50
return false;
printf("DEBUG");
答:
I don't know why though and caveat was that it would only print the valid response.
看到这句话,我觉得有理解问题。程序不应始终(正确)打印成功的答案,而应仅打印某些值。例如,正如其他人在评论中所说的那样,应该但应该.我怀疑您正在使用正确返回的值,但您期望它们返回.1 1 1
return true
1 1 3
return false
false
true
swapping the second return false; in the bool function out for printf("DEBUG");. This actually worked and resulted in the program printing my valid response in the main function.
意味着您没有使用可以消除输入中潜在问题的值。0
negative
如果三角形也可以用一条线“过冲”,那么其他三角形是这样的:
\
\
|\
| \
| \
|___\
你需要把你的改成里面,但程序将始终是正的非零数(就像你说的),但我真的不认为这是练习题要求你做的。||
&&
((a + b <= c) || (a + c <= b) || (b + c <= a))
return true
评论
a
b
c
check50
get_float
get_float
valid_triangle
if (valid_triangle(3, 4, 5))
printf
valid_triangle
printf("One side is negative");
printf("One side is too long");