在线编译器 C

#include <stdio.h> int main(void) { int a, b; scanf("%d%d", &a, &b); if (a < b ){ printf("Less\n"); } if(a==b){ printf("Equal\n"); } else{ printf("Above\n"); } return 0; }
这段代码读取两个整数,然后根据它们的大小关系输出"Less"、"Equal"或"Above"。但逻辑上有问题:当a小于b时,会先输出"Less",然后因为else只与第二个if配对,所以还会检查a是否等于b,如果不等于就输出"Above"。这意味着当a小于b时,程序会同时输出"Less"和"Above"。

- 注意else只与最近的if配对。你的第二个if后面跟着else,但第一个if是独立的。当a<b时,第一个if输出"Less",然后第二个if判断a==b为假,所以执行else输出"Above"。
- 要解决这个问题,你需要让三个分支互斥。考虑使用if-else if-else的结构,这样只有一个条件会被执行。