为了账号安全,请及时绑定邮箱和手机立即绑定

go lang中的if else语句

go lang中的if else语句

Go
12345678_0001 2021-06-28 10:47:04
有人可以帮我调试这个程序,每个输入只处理 else 部分。这是一个给学生评分的程序。学生输入分数并显示成绩func main(){    var x int    fmt.Println("Enter your marks")    fmt.Scanf("%d",&x)    if (100 <= x) && (x<=75){        fmt.Println("D1")    }else if (74 <= x)&&(x <= 70){        fmt.Println("D2")    }else if (69 <= x )&&(x<=65){        fmt.Println("C3")    }else if (64 <= x)&&(x <= 60){        fmt.Println("C4")    }else if (59 <= x)&&(x <= 55){        fmt.Println("C5")    }else if (54 <= x)&&( x<= 50){        fmt.Println("C6")    }else if (49 <= x )&&(x<= 45){        fmt.Println("P7")    }else{        fmt.Println("Work harder")    }}
查看完整描述

3 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

你有逻辑问题。

改变

if (100 <= x) && (x<=75){

if 75 <= x && x <= 100 { // numbers here are ordered from smallest to greatest

因为一个数字不能大于 100小于 75。

当然,其他线路也是如此。

请注意,您可以减少比较。假设您最初测试该数字是否小于 100,那么您不必在测试它小于 75 后立即测试它是否小于 75。

一个典型的 Go 代码可能会有一个switchhere 而不是所有那些if/else. 请参阅文档中的开关。下面是如何用 a 编写它switch

switch {

case x > 100:

    fmt.Println("Congrats!") // you forgot this one

case x >= 75:

    fmt.Println("D1")

case x >= 70:

    fmt.Println("D2")

case x >= 65:

    fmt.Println("C3")

case x >= 60:

    fmt.Println("C4")

case x >= 55:

    fmt.Println("C5")

case x >= 50:

    fmt.Println("C6")

case x >= 45:

    fmt.Println("P7")

default:

    fmt.Println("Work harder")

}

最后评论:这种类型的切换代码很少发生,因为通常阈值和相关注释存储为数据,例如在struct.


查看完整回答
反对 回复 2021-07-05
?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

您的 IF 声明说:


if 100 is less than x (which means x has to be greater than 100)

AND

x less than (or equal to) 75

do this--

x 永远不会大于 100 且小于 75,因此它总是执行 ELSE ...


查看完整回答
反对 回复 2021-07-05
?
桃花长相依

TA贡献1860条经验 获得超8个赞

此代码中提供的所有 if 和 if else 语句在逻辑上都是错误的


例子:


 if (100 <= x) && (x<=75) 

这里如果 (100 <= x) 为假,编译器甚至不会考虑下一个条件。这称为 SHORT CIRCUIT,条件语句的惰性求值。


这也适用于 OR 条件,即如果第一个条件为真,则不会评估第二个条件。


所以根据你写的代码,理想的解决方案是


func main() {

    var x int

    fmt.Println("Enter your marks")


    fmt.Scanf("%d", &x)


    if (100 >= x) && (x >= 75) {

        fmt.Println("D1")

    } else if (74 >= x) && (x >= 70) {

        fmt.Println("D2")

    } else if (69 >= x) && (x >= 65) {

        fmt.Println("C3")

    } else if (64 >= x) && (x >= 60) {

        fmt.Println("C4")

    } else if (59 >= x) && (x >= 55) {

        fmt.Println("C5")

    } else if (54 >= x) && (x >= 50) {

        fmt.Println("C6")

    } else if (49 >= x) && (x >= 45) {

        fmt.Println("P7")

    } else {

        fmt.Println("Work harder")

    }


查看完整回答
反对 回复 2021-07-05
  • 3 回答
  • 0 关注
  • 209 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信