有人可以向我解释这些错误消息是什么意思,我不断收到“错误:预期为';'在顶层声明之后”和“期望的标识符或'('”。我对编程很陌生,不了解任何建议,我的程序是否正确编码?它的目的是检查用户输入的内容是否正确产生一个三角形。这是我的代码:
#include <cs50.h>
#include <stdio.h>
bool check_triangle(float x, float y, float z);
int main(void)
{
printf("what is the length of the first side of the triangle: ");
float x = get_float();
printf("what is the length of the second side of the triangle: ");
float y = get_float();
printf("what is the length of the third side of the triangle: ");
float z = get_float();
bool check_triangle(float x, float y, float z);
if
{
(x <= 0 || y <= 0 || z <= 0)
return false;
}
if
{
( x+ y <= z || x + <= y || y + z <= x)
return false;
}
return true
}
答案 0 :(得分:1)
学习C语言时,您会在语法方面遇到很多困难。首先,C不允许嵌套函数。尽管缺少'}'
的{{1}}结尾可能解释了部分问题-似乎您正在尝试在main()
内定义check_triangle()
,但这是行不通的
接下来,除非函数是如此之长,否则禁止将其仅放置在main()
上方而不完全弄乱您的文件,请忘记尝试提供main()
上方的函数原型和下方的定义-您可以稍后再做。
在您的测试中,main()
是不完整的表达式。看来您是偶然地遗漏了x + <= y
。然后,在您尝试对z
进行定义后,请包含一个流浪';'
-函数check_triangle()
在结束{{1 }}定义参数。
如果您修复了这些错误,您的功能将如下所示:
return type function_name (arguments) { /* body */ }
在CS50中,您的';'
函数期望提供一个字符串作为提示。您不需要单独的')'
语句。相反,您需要例如:
bool check_triangle (float x, float y, float z) {
if (x <= 0. || y <= 0. || z <= 0.) {
return false;
}
if ( x + y <= z || x + z <= y || y + z <= x) {
return false;
}
return true;
}
最后,您需要调用函数get_float()
来检查输入的内容是否为三角形。在那里,您只需使用函数名称和参数列表。 (您需要检查纳税申报单,以了解是否有三角形)。因此,在获得printf
, float x = get_float("Length of the first side of the triangle: ");
float y = get_float("Length of the second side of the triangle: ");
float z = get_float("Length of the third side of the triangle: ");
和check_triangle()
之后,您需要执行以下操作:
x
将其完全放在一起,您将:
y
要进行编译,请始终在启用了警告的情况下进行编译(对于gcc / clang z
,我建议使用 if (check_triangle (x, y, z)) {
puts ("\nyou have a triangle");
}
else {
puts ("\nnot a triangle");
}
),并且不要接受代码,直到代码在没有警告的情况下进行编译。如果您调用源文件#include <cs50.h>
#include <stdio.h>
bool check_triangle (float x, float y, float z) {
if (x <= 0. || y <= 0. || z <= 0.) {
return false;
}
if ( x + y <= z || x + z <= y || y + z <= x) {
return false;
}
return true;
}
int main (void) {
float x = get_float("Length of the first side of the triangle: ");
float y = get_float("Length of the second side of the triangle: ");
float z = get_float("Length of the third side of the triangle: ");
if (check_triangle (x, y, z)) {
puts ("\nyou have a triangle");
}
else {
puts ("\nnot a triangle");
}
}
,则可以使用:
-Wall -Wextra -pedantic
然后,您应该能够测试您的代码。仔细研究一下,如果您还有其他问题,请告诉我。
答案 1 :(得分:0)
下面是我在代码中发现的一些错误
}
中的括号main
丢失bool check_triangle(float x, float y, float z);
中,不需要半冒号,并且缺少右括号{
。if
中,条件应为if(your condition)
,而不是if{}
。x + <= y
是错误的左值,缺少x+something <= y
请参见下面的代码,并对其进行更正。
假设#include <cs50.h>
和get_float()
您在照顾自己
#include <cs50.h>
#include <stdio.h>
bool check_triangle(float x, float y, float z);
int main(void)
{
float x, y, z;
printf("what is the length of the first side of the triangle: \n");
x = get_float();
printf("what is the length of the second side of the triangle: \n");
y = get_float();
printf("what is the length of the third side of the triangle: \n");
z = get_float();
if(check_triangle(x,y,z))
{
printf("Check triangle is success\n ");
}
else
{
printf("Check triangle failed\n ");
}
return 0;
}
bool check_triangle(float x, float y, float z)
{
if(x <= 0 || y <= 0 || z <= 0)
{
return false;
}
if( x + y <= z || x + z <= y || y + z <= x)
{
return false;
}
return true;
}