鱼C论坛

 找回密码
 立即注册
查看: 1332|回复: 4

[已解决]c语言if条件语句不知道哪儿错了

[复制链接]
发表于 2020-4-25 15:38:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. #include<stdio.h>
  2. int main()
  3. {

  4.         float score,a;
  5.         printf("请输入分数:");
  6.         scanf("%f",&score);
  7.         if(0>=score||score>=200){
  8.                 printf("请输入正确的分数\n");
  9.                 return 0;
  10.                 }
  11.         else{
  12.                 if(180<=score){
  13.                         printf("成绩为A\n");
  14.                 }
  15.                 if(120<=score<180){
  16.                         printf("成绩为B\n");
  17.                 }
  18.                 if(score<120)printf("sadfdsfsdafadsfdsafdfaf\n");
  19.         }
  20. }
复制代码


输入190会输出成绩为B和成绩为A
编译器用的是gcc


最佳答案
2020-4-25 17:09:05
分段完全可以直接if…else…何必多个if呢。
另外return 0直接写到最后面就行了。因为你的外层if…else…之后没有其他语句了。一个return就可以吧if和else两种情况都涵盖在内了
  1. #include<stdio.h>
  2. int main()
  3. {

  4.     float score,a;
  5.     printf("请输入分数:");
  6.     scanf("%f",&score);
  7.     if(0>=score||score>=200){
  8.         printf("请输入正确的分数\n");
  9.     }
  10.     else{
  11.         if(180<=score){
  12.             printf("成绩为A\n");
  13.         }
  14.         else if(120<=score){
  15.             printf("成绩为B\n");
  16.         }
  17.         else
  18.             printf("sadfdsfsdafadsfdsafdfaf\n");
  19.     }
  20.     return 0;
  21. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-4-25 17:06:45 | 显示全部楼层
SugarCane88 发表于 2020-4-25 16:28
我分析您的代码发现几个问题:
1. a 没有被用到;
2. int main() 没有返回值;

你指出的第三点,不是不合适,而是本身写法就不对。
C语言中不能连着比较数的大小,这样会把前面的结果与后面的比较,
120<=score<180  会先进行120<=score,其结果再和180进行比较,,而前面的比较结果为0或1,再与180 比较肯定为真啊,所以不管你输入多少,这个if判断都为真
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-4-25 16:28:36 | 显示全部楼层
我分析您的代码发现几个问题:
1. a 没有被用到;
2. int main() 没有返回值;
3. 120<=score<180 这样写不合适。

#include<stdio.h>

int main()
{

        float score;
    printf("请输入分数:");
    scanf("%f",&score);
    if(score<=0||score>=200){
        printf("请输入正确的分数\n");
        return 0;
        }
    else{
        if(score>=180){
            printf("成绩为A\n");
        }
        if(score>=120 && score<180){
            printf("成绩为B\n");
        }
        if(score<120)
                        printf("sadfdsfsdafadsfdsafdfaf\n");
    }
       
        return 0;
}
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-25 17:09:05 | 显示全部楼层    本楼为最佳答案   
分段完全可以直接if…else…何必多个if呢。
另外return 0直接写到最后面就行了。因为你的外层if…else…之后没有其他语句了。一个return就可以吧if和else两种情况都涵盖在内了
  1. #include<stdio.h>
  2. int main()
  3. {

  4.     float score,a;
  5.     printf("请输入分数:");
  6.     scanf("%f",&score);
  7.     if(0>=score||score>=200){
  8.         printf("请输入正确的分数\n");
  9.     }
  10.     else{
  11.         if(180<=score){
  12.             printf("成绩为A\n");
  13.         }
  14.         else if(120<=score){
  15.             printf("成绩为B\n");
  16.         }
  17.         else
  18.             printf("sadfdsfsdafadsfdsafdfaf\n");
  19.     }
  20.     return 0;
  21. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-25 21:25:02 | 显示全部楼层
sunrise085 发表于 2020-4-25 17:09
分段完全可以直接if…else…何必多个if呢。
另外return 0直接写到最后面就行了。因为你的外层if…else…之 ...

您回答的详细,赞。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-1 10:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表