如何只运行一个“if”语句(不能使用“else”)?

时间:2013-09-18 21:32:41

标签: c if-statement

所以我正在做这个任务,我必须使用5个if语句进行评分...我的问题是我输入分数后 我的第一次尝试

if(grade >= 90 )
{
    puts("A");
}

if(grade >= 80 )
{
    puts("B");
}

if(grade >=70 )
{
    puts("C");
}

if(grade >=60 )
{
    puts("D");
}
if(grade >=50 )
{
    puts("F");
}

当我运行这个程序时,我得到所有等级字母..例如,如果我输入96我应该只得到A ...但是我得到A B C D F不同的尝试

if(grade >= 100 || grade>= 90 )
{
    puts("A");
}

if(grade >= 89 || grade>= 80 )
{
    puts("B");
}

if(grade >=79 || grade>= 70)
{
    puts("C");
}

if(grade >=69 || grade>= 60)
{
    puts("D");
}
if(grade >=59 || grade>= 50)
{
    puts("F");
}

7 个答案:

答案 0 :(得分:4)

撤销支票的顺序。升级字母等级,因为更高的检查通过。

const char *lettergrade = "F";
if (grade >= 60) {
    lettergrade = "D";
}
if (grade >= 70) {
    lettergrade = "C";
}
if (grade >= 80) {
    lettergrade = "B";
}
if (grade >= 90) {
    lettergrade = "A";
}
puts(lettergrade);

答案 1 :(得分:2)

您正在寻找else

if(grade >= 90 )
{
    puts("A");
}
else if(grade >= 80 )
{
    puts("B");
}
// and so on

如果没有它,当然,grade(例如)92 >= 90 >= 80


您在下面说过,由于无法理解的原因,您不能使用else。我确定情况并非如此,因为有人教你编写错误的代码。你必须误解这个要求。但如果它 是真的,答案肯定是显而易见的吗?

if(grade >= 90 )
{
    puts("A");
}

if(grade < 90 && grade >= 80 )
{
    puts("B");
}
// and so on

答案 2 :(得分:2)

虽然“逻辑”转换将使用else,如果由于某些[愚蠢]原因而绝对禁止,那么也可以使用函数来解决这个问题!它避免了else 结果使用更整洁和更模块化的代码 - 这样的构造在我的代码中并不罕见。 (话虽如此,它可能不是老师正在寻找的东西; - )

使用签名char* getGrade(int score)创建一个函数。然后,而不是“放入”if,只需return(正确的值)并使用第一种方法。 return将“在当时结束函数”,因此不会执行解决原始问题的其他if语句。然后可以很容易地使用结果:

puts(getGrade(theirScore));

祝你好运这些“任务”!

答案 3 :(得分:2)

好吧,既然你对其他事情感到不安,你可以这样做 -

if(grade >= 90 )
{
    puts("A");
}

if(grade >= 80 && grade <90 )
{
    puts("B");
}

if(grade >=70 && grade < 80 )
{
    puts("C");
}

if(grade >=60 && grade < 70)
{
    puts("D");
}
if(grade >=50 && grade < 60)
{
    puts("F");
}

你用OR编写的内容没有任何意义,如果等级&gt; = 100,那么当然等级> = 90,没有理由添加该条件(并且它不会为你完成工作)

答案 4 :(得分:1)

您可以定义2个约束,例如:

if (grade >=90){
//do something
}

if (grade >= 80 && grade < 90){
//do something
} // and so on...

这确保了if语句中的代码段只有在满足条件的情况下才会运行。和&amp;&amp;符号代表'AND'

答案 5 :(得分:1)

使用else ifs:

if(grade >= 90 )
{
    puts("A");
}

else if(grade >= 80 )
{
    puts("B");
}

else if(grade >=70 )
{
    puts("C");
}

else if(grade >=60 )
{
    puts("D");
}
else if(grade >=50 )
{
    puts("F");
}

但是,要遵循良好实践并使程序易于扩展和维护,您可能希望以更智能的方式构建它。一种好的方法是存储一个包含等级阈值和相应字母的结构数组。如果按等级阈值对其进行排序,则可以从右到左遍历数组并停在学生成绩大于阈值的第一个位置。想一想!

答案 6 :(得分:1)

if(grade>=90)
puts("A");

if(grade>=80&&grade<90)
puts("B");

if(grade>=70&&grade<80)
puts("c");

if(grade>=60&&grade<70)
puts("D");

if(grade>=50&&grade<60)
puts("E");

试试这个,我认为它有效。