当我给a和b赋最大值时,代码可以正常工作,但是当给c或d输入最大值时,代码将不起作用。有人可以帮我吗?
我已经访问过网站并进行了研究,但找不到任何东西。
#include<stdio.h>
void main(void) {
int a, b, c, d;
scanf("%d %d %d %d", &a, &b, &c, &d);
printf("the enter no.: is %d %d %d %d\n", a, b, c, d);
if(a > b) {
if(a > c) {
if(a > d) {
printf("%d is greater",a);
}
}
} else if(b > a) {
if(b > c) {
if(b > d) {
printf("%d is greater", b);
}
}
} else if(c > a) {
if(c > b) {
if(c > d) {
printf("%d is greater", c);
}
}
} else if(d > a) {
if(d > c) {
if(d > b) {
printf("%d is greater", d);
}
}
}
}
所有变量的输出应该相同,但是a和b仍提供预期的输出,而c和d却没有提供。
答案 0 :(得分:5)
您的操作方式是错误的,例如输入2 1 4 3 *.ps1
为true,而if(a>b)
为false,因此您什么也不做,也不会检测到最大数量
解决您的问题,我还建议您检查4个有效的 int 是否输入if(a>c)
返回4
提案:
scanf("%d %d %d %d",&a,&b,&c,&d)
编译和执行:
#include<stdio.h>
int main()
{
int a,b,c,d;
if (scanf("%d %d %d %d",&a,&b,&c,&d) != 4)
fprintf(stderr, "error while entering the 4 values\n");
else {
printf("the enter no.: is %d %d %d %d\n",a,b,c,d);
int max = a;
if (b > max)
max = b;
if (c > max)
max = c;
if (d > max)
max = d;
printf("the greater is %d\n", max);
}
return 0;
}
当然,还有另一种方法可以不记住所有数字
答案 1 :(得分:3)
script2.py
答案 2 :(得分:2)
您的条件彼此依赖,但不应该。
意味着,仅当a不大于b时,才会检查第二个高级条件(否则if(b> a))。
例如,假设输入:
a = 1
b = 2
c = 3
d = 4
第二个高级条件为true(b大于a),因此,将完全不检查其他条件(如果d为最大的条件将不被检查,并且该行将不被检查)印刷)。
要解决此问题,您可以更改条件以使每个条件都成为一个if(在它们之间带有&&(和)),也可以将代码更改为始终使用“ if”而不是您的“否则”。
答案 3 :(得分:0)
是导致问题的程序顺序。 如果将c和d设置为最大值,但如果b> a或a> b,它将输入前两个if语句,并且不会到达最后两个语句。 尝试将c或d设置为最大值,然后选择两个数字,例如a = b。这应该起作用。