有人可以帮我调试这个程序,只在每个输入上处理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")
}
}
答案 0 :(得分:20)
你有一个逻辑问题。
更改
if (100 <= x) && (x<=75){
到
if 75 <= x && x <= 100 { // numbers here are ordered from smallest to greatest
因为数字不能大于100 且小于75。
当然其他几行也一样。
请注意,您可以进行较少的比较。假设您最初测试的数字是否小于100,那么在测试它小于75之后,您不必测试它是否小于75.
典型的Go代码可能会在此处switch
而不是所有if/else
。见switch in the documentation。以下是使用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
。
答案 1 :(得分:1)
您的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 ...
答案 2 :(得分:-1)
此代码中提供的所有if和if else语句在逻辑上都是不正确的
示例:
if (100 <= x) && (x<=75)
如果(100 <= x)为false,则编译器甚至不会考虑下一个条件。 这称为“短路”,即条件语句的惰性求值。
这也适用于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")
}
答案 3 :(得分:-3)
谢谢你终于得到了你的帮助。希望将来某个时候帮助别人
package main
import "fmt"
func main(){
var x int
fmt.Println("Enter your marks")
fmt.Scanf("%d",&x)
if (75<= x) && (x<=100){
fmt.Println("D1")
}else if (70 <= x)&&(x <= 74){
fmt.Println("D2")
}else if (65 <= x )&&(x<=69){
fmt.Println("C3")
}else if (60 <= x)&&(x <= 64){
fmt.Println("C4")
}else if (55 <= x)&&(x <= 59){
fmt.Println("C5")
}else if (50 <= x)&&( x<= 54){
fmt.Println("C6")
}else if (45 <= x )&&(x<= 49){
fmt.Println("P7")
}else{
fmt.Println("Work harder")
}
}