先生/女士:
我不知道我做错了什么。从逻辑上讲,我觉得一切都是正确的。大括号似乎也被放置在正确的位置。那为什么我会收到以下错误信息呢?
32 8 [错误]在“(”标记之前需要构造函数、析构函数或类型转换
33 2 [错误]在'return'之前需要unqualified-id
34 1 [错误]在“}”标记之前需要声明
我在这个程序上做错了什么?而且,我希望使用相同的语句进行更正,而不是其他任何语句。
救命啊!
该方案:
#include <stdio.h>
main()
{
int a, b, c, d, big;
printf("\n Enter value to a, b, c, d: ");
scanf("%d %d %d %d", &a, &b, &c, &d);
if (a >b)
{
if(a>c)
{
if(a>d)
big = a;
else
big=d;
}
else
{
if(c>d)
big = c;
else
big = d;
}
else
if(b>c)
{
if(b>d)
big = b;
else
big = d;
}
}
printf("\n The biggest number is %d", big);
return 0;
}
6条答案
按热度按时间zbsbpyhn1#
您可以使用
ternary operator
来解决您的问题。因此,代码简化为4smxwvx52#
我不知道我做错了什么。从逻辑上看,一切都是正确的。
不过,还是有一些语法错误。一个类似于
在C中无效。
我不清楚OP计划如何构造嵌套的
if
s来解决这个任务,但在继续之前,我建议编写一些简单的测试来验证算法的正确性:你可以测试它here并尝试使用嵌套的
if
语句重写函数。也许是k2arahey3#
我使用了三进制操作符而不是if-else语句,它的工作原理与if-else相同,你可以检查ternary operator是如何工作的。
5jdjgkvh4#
必须添加一个if语句。你忘了,这就是为什么它给出一个错误
tvokkenx5#
您的代码中存在多个问题:
main()
,没有返回类型:你的编译器拒绝它,因为它被配置为编译C++代码。scanf()
转换失败.以下是完整版本:
嵌套测试可以使用三元运算符重写:
您可以使用中间变量来简化此操作:
最后,使用一种易于扩展到更多变量的模式通用方法:
3wabscal6#
您没有考虑
a <= b
或它放置在错误位置(在a < b
块内)的情况。你可以想象一个类似于this(3个数字)的决策树中的问题。