鱼C论坛

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

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

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

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

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

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

        float score,a;
        printf("请输入分数:");
        scanf("%f",&score);
        if(0>=score||score>=200){
                printf("请输入正确的分数\n");
                return 0;
                }
        else{
                if(180<=score){
                        printf("成绩为A\n");
                }
                if(120<=score<180){
                        printf("成绩为B\n");
                }
                if(score<120)printf("sadfdsfsdafadsfdsafdfaf\n");
        }
}

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


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

    float score,a;
    printf("请输入分数:");
    scanf("%f",&score);
    if(0>=score||score>=200){
        printf("请输入正确的分数\n");
    }
    else{
        if(180<=score){
            printf("成绩为A\n");
        }
        else if(120<=score){
            printf("成绩为B\n");
        }
        else
            printf("sadfdsfsdafadsfdsafdfaf\n");
    }
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> 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判断都为真
想知道小甲鱼最近在做啥?请访问 -> 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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

    float score,a;
    printf("请输入分数:");
    scanf("%f",&score);
    if(0>=score||score>=200){
        printf("请输入正确的分数\n");
    }
    else{
        if(180<=score){
            printf("成绩为A\n");
        }
        else if(120<=score){
            printf("成绩为B\n");
        }
        else
            printf("sadfdsfsdafadsfdsafdfaf\n");
    }
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

您回答的详细,赞。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-14 19:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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