If-else声明处理

时间:2015-12-25 05:30:38

标签: c if-statement

我对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语句...有没有缩短代码?

4 个答案:

答案 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是最干净的解决方案,但这说明了在这里使用三元?:运算符的[可能]更简洁的方法。