我的代码(c ++ 初学者)有什么问题?

What's wrong with my code (c++ beginner)?

本文关键字:什么 问题 初学者 代码 我的      更新时间:2023-10-16

我是编码新手,也参加了初学者 c++ 课程,我真的不确定我的代码出了什么问题。 我把东西搬来搬去,但无济于事。 该程序旨在询问用户一个字母等级,以及它的+,-还是没有符号(例如A +,A-,A(。 我必须使用开关和 if 语句,但我不确定我的逻辑在哪里失败。

#include <iostream>
#include <string>
using namespace std;
int main()
{
char sign, letterGrade;
string gradeRange;
cout << "Enter a letter grade: ";
cin >> letterGrade;
cout << "Enter a sign (+ or -) if applicable; otherwise, enter 'x': ";
cin >> sign;
switch (letterGrade) {
case 'A': {
        if (sign == '+' || sign == 'x') {
            gradeRange = "greater than 93%";
        }
        else if (sign == '-') {
            gradeRange = "greater than or equal to 90%, but less than 93%.";
        }
        break;
    }
    case 'B': {
        if (sign == '+') {
            gradeRange = "greater than or equal to 87%, but less than 90%.";
        }
        else if (sign == 'x') {
            gradeRange = "greater than or equal to 83%, but less than 87%.";
        }
        else if (sign == '-') {
            gradeRange = "greater than or equal to 80%, but less than 83%.";
        }
        break;
    }
    case 'C': {
        if (sign == '+') {
            gradeRange = "greater than or equal to 77%, but less than 80%.";
        }
        else if (sign == 'x' || sign == '-') {
            gradeRange = "greater than or equal to 70%, but less than 77%.";
        }
        break;
    }
    case 'D': {
        if (sign == '+' || sign == '-' || sign == 'x') {
            gradeRange = "greater than or equal to 60%, but less than 70%.";
        }
        break;
    }
    case 'F': {
        if (sign == '+' || sign == 'x' || sign == '-') {
            gradeRange = "less than 60%.";
        }
        break;
    }
    default: {
        cout << "Oops, an error occured, please try again.";
    }
cout << "The student's letter grade range is " << gradeRange << endl;
}

return 0;

}

在switch-block具有最终的cout语句,这意味着每个中断语句都会跳过它。

#include <iostream>
#include <string>
using namespace std;
int main()
{
    char sign, letterGrade;
    string gradeRange;
    cout << "Enter a letter grade: ";
    cin >> letterGrade;
    cout << "Enter a sign (+ or -) if applicable; otherwise, enter 'x': ";
    cin >> sign;
    switch (letterGrade) {
    case 'A': 
            if (sign == '+' || sign == 'x') {
                gradeRange = "greater than 93%";
            }
            else if (sign == '-') {
                gradeRange = "greater than or equal to 90%, but less than 93%.";
            }
            break;
        case 'B': 
            if (sign == '+') {
                gradeRange = "greater than or equal to 87%, but less than 90%.";
            }
            else if (sign == 'x') {
                gradeRange = "greater than or equal to 83%, but less than 87%.";
            }
            else if (sign == '-') {
                gradeRange = "greater than or equal to 80%, but less than 83%.";
            }
            break;
        case 'C': 
            if (sign == '+') {
                gradeRange = "greater than or equal to 77%, but less than 80%.";
            }
            else if (sign == 'x' || sign == '-') {
                gradeRange = "greater than or equal to 70%, but less than 77%.";
            }
            break;
        case 'D': 
            if (sign == '+' || sign == '-' || sign == 'x') {
                gradeRange = "greater than or equal to 60%, but less than 70%.";
            }
            break;
        case 'F': 
            if (sign == '+' || sign == 'x' || sign == '-') {
                gradeRange = "less than 60%.";
            }
            break;
        default: 
            cout << "Oops, an error occured, please try again.";

    }// this is for closing switch 
    cout << "The student's letter grade range is " << gradeRange << endl;
    //u kept the cout statement in switch's block so it wouldn't work
    return 0;
} //this is for closing main