是否可以转换if if / else if切换语句?

时间:2014-05-09 01:12:20

标签: c++

我根据找到的练习编写了一个简短的程序here (评分程序),我想知道是否可以(出于好奇)用{/ 1}}替换带有switch / case语句的if语句。此外,欢迎提供额外的反馈,因为这里实施的一些内容对我来说是新的。

部首:

.cpp

.cpp的:

// include guard
#ifndef __MAINLAUNCH_H_INCLUDED__
#define __MAINLAUNCH_H_INCLUDED__

using namespace std;

class MainLaunch
{
    int *grade;
public:
    MainLaunch();
    MainLaunch(int&);
    ~MainLaunch();
    string getLetterGrade ();
    int getGrade() {return *grade;};
};

#endif //__MAINLAUNCH_H_INCLUDED__

2 个答案:

答案 0 :(得分:3)

switch ((y - 1) / 10)
{
    case 9:  return y == 100 ? "Perfect score!" : "A";
    case 8:  return "B";
    case 7:  return "C";
    case 6:  return "D";
    default: return "F";
}

如果比较是>=,那就不那么难了 - 你可以这样做:

switch (y / 10)
{
  case 10: return "Perfect score!";
  case 9:  return "A";
  case 8:  return "B";
  ...etc...

你确定他们不是那样的吗? 90岁是一个'A'在我的学校比在91岁时更常见....

更新:查看你的链接(有一个较早的步骤为100 =“完美得分!” - 如果你想在下一步中继续闲逛,我也很好)

  

★★修改程序,以便通知用户他们的字母等级

     

0-59 F 60-69 D 70-79 C 80-89 B 90-100 A

所以y / 10确实合适......

答案 1 :(得分:1)

与C ++中的许多内容一样,它绝对可以通过多种方式实现。 有时它只是不是一个好主意。

这就是switch语句的样子:

switch(y)
{
    case 100:
        return "Perfect Score!";
    break;
    case 99:
    case 98:
    case 97:
    case 96:
    case 95:
    case 94:
    case 93:
    case 92:
    case 91:
        return "A";
    break;
    case 90:
    case 89:
    case 88:
    case 87:
    case 86:
    case 85:
    case 84:
    case 83:
    case 82:
    case 81:
        return "B";
    break;
    case 80:
    case 79:
    case 78:
    case 77:
    case 76:
    case 75:
    case 74:
    case 73:
    case 72:
    case 71:
        return "C";
    break;
    case 70:
    case 69:
    case 68:
    case 67:
    case 66:
    case 65:
    case 64:
    case 63:
    case 62:
    case 61:
        return "C";
    break;
    default:
        return "F";
    break;

}

它也会限制你只使用整数,因为switch语句只适用于它们