-3

所以我正在做这个作业,我必须使用 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 ......但是我得到了 ABCDF 不同的尝试

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");
}
4

7 回答 7

3

颠倒支票的顺序。随着更高的检查通过,升级字母等级。

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);
于 2013-09-18T21:44:37.033 回答
2

您正在寻找else

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

没有它,好吧,grade(比如说)92 的 a 当然是>= 90and also >= 80


您在下面说过,由于无法理解的原因,您不允许使用else. 我敢肯定情况并非如此,因为这将是有人教你编写糟糕的代码。你一定是误解了要求。但如果这真的,答案肯定是显而易见的吗?

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

if(grade < 90 && grade >= 80 )
{
    puts("B");
}
// and so on
于 2013-09-18T21:34:18.577 回答
2

虽然“逻辑”转换是使用else,但如果出于某种[愚蠢的]原因绝对禁止这样做,也可以使用函数来解决这个问题!它避免了使用else 导致更整洁和更模块化的代码——这样的结构在我的代码中并不少见。(话虽如此,这可能不是老师想要的;-)

创建一个带有签名的函数char* getGrade(int score)。然后,而不是“放入”中if,简单地return(正确的值)并使用第一种方法提出。将return“立即结束函数”,因此不执行if解决原始问题的附加语句。然后结果可以很容易地使用:

puts(getGrade(theirScore));

祝这些“任务”好运!

于 2013-09-18T21:39:43.970 回答
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 写的东西没有意义,如果成绩 >= 100,那么当然成绩 >= 90,没有理由添加那个条件(它不会为你做这项工作)

于 2013-09-18T21:41:31.007 回答
1

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

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

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

这确保了 if 语句中的代码只有在两个条件都满足的情况下才会运行。&& 符号表示“与”

于 2013-09-18T21:38:37.353 回答
1

使用 else if:

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");
}

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

于 2013-09-18T21:40:51.547 回答
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");

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

于 2013-09-18T21:44:24.863 回答