我对if-else语句问题感到非常困惑。
问题在于:使用scanf函数,分别为s,a分配总(双)和缺席(int)。
然后,根据以下标准打印出分数 如果总数大于70,则打印出A +。在这种情况下,如果缺席日期超过5天,请打印出D.
如果总数低于70,则打印出" A0"在这种情况下,如果缺席超过5天,请打印出F。
在编码中,你只能使用3个if-else语句。
if total >70
if absence > 5
if total <70
if absence >5
我是如何处理这个问题的。总数除以两个部分,除以得分70.然后我把另一个嵌套if条件来规范缺席日期的影响 喜欢 如果 如果 然而,出现了这个问题。我不能这样做 如果 如果 其他 如果 因为如果不能包含在else语句中!!!我既不能使用elseif声明!! 我想编码像
this.state.data.map(function(d){ return d.items[0] });
但问题是我只能使用if-else 3语句...有没有缩短代码?
答案 0 :(得分:4)
问题是你在语法层面上做错了什么(尽管逻辑很好)。以下代码段应该有效:
if (total > 70) {
if (absence > 5) {
printf("D");
} else {
printf("A+");
}
} else {
if (absence > 5) {
printf("F");
} else {
printf("A0");
}
}
请注意,在这种情况下,根本不需要大括号,因为每个if语句只包含一个语句。但是,为了清楚起见,我添加了它们。我建议你做同样的练习,然后你可以在看到不需要的时候开始删除它们。
答案 1 :(得分:0)
您总是可以使用条件运算符(?:
)并完全抛弃if-else
语句。
printf("%s", (total > 70) ? ((absence > 5) ? "D" : "A+") : ((absence > 5) ? "F" : "A0"));
答案 2 :(得分:0)
你也可以使用&amp;&amp;在没有多个语句的情况下发生事情尝试这个原型。
#include <stdio.h>
int main(){
int total = 71;
int absence = 6;
if (total > 70 && absence < 5){
printf("A+");
return 0;
}
if (total < 70 && absence < 5){
printf("A0");
return 0;
}
if (total > 70 && absence > 5 ){
printf("D");
return 0;
}
printf("F");
return 0;
}
答案 3 :(得分:0)
[只是为了完全混淆:-)],这里是paul92和Sean代码的混合体:
if (total > 70)
printf("%s",(absence > 5) ? "D" : "A+");
else
printf("%s",(absence > 5) ? "F" : "A0");
就个人而言,我认为嵌套的if / else是最干净的解决方案,但这说明了在这里使用三元?:
运算符的[可能]更简洁的方法。