【问题标题】:Character in Switch-Statement C++Switch 语句 C++ 中的字符
【发布时间】:2013-10-16 20:59:37
【问题描述】:

请帮忙!我无法产生我的程序的输出。这是条件: 构建一个程序,如果购买的衬衫是 XL 并且价格大于 500,则给予 100 比索的折扣;如果购买的衬衫是L且价格大于600,则可享受50比索的折扣。

#include <iostream>
using namespace std;


int main()
{
    int p;
    int s;

    cout << "Input price: ";
    cin  >> p;
    cout << "Input size: ";
    cin  >> s;

switch (s)
{
case 'XL': case 'xl':
    {
        if (p>500){
            cout << "Total price: " << p-100 << " pesos.";
            break;
        }
        else if ((s=='XL' || s=='xl') && (p<500)){
            cout << "Total price: " << p << " pesos.";
            break;
        }
    }
case 'L': case 'l':
    {
        if (p>600){
            cout << "Total price: " << p-50 << " pesos.";
            break;
        }
        else if ((s=='XL' || s=='xl') && (p<600)){
            cout << "Total price: " << p << " pesos.";
            break;
        }
    }
case 'M': case 'm':
    {
        cout << "Total price: " << p << " pesos.";
        break;
    }
case 'S': case 's':
    {
        cout << "Total price: " << p << " pesos.";
        break;
    }
}

return 0;

}

程序的输出:

Input price: 500
Input size: XL

Process returned 0 (0x0)   execution time : 5.750 s
Press any key to continue.

附:如何删除程序中的警告(多字符字符常量)? 提前致谢!

【问题讨论】:

  • 为什么不将大小设为枚举并打开它?

标签: c++ switch-statement character constants output


【解决方案1】:

如果大小可以超过一个字符,那么您需要用字符串来表示它。您不能在字符串上使用switch,因此您必须使用if..else..else.. 来处理值:

std::string size;
cin >> size;
if (size == "XL") {
    // deal with size XL
} else if (size == "L") {
    // deal with size L
} // and so on

如果是单个字符,则可以使用char不是 int)来表示:

char size;
cin >> size;
switch (size) {
    case 'L': 
        // deal with size L
        break;
    // and so on
}

但对于多个字符,您需要一个字符串。

【讨论】:

    【解决方案2】:

    switch 语句可以在 C++ 中处理 intcharchar 数据类型只能包含一个字母。因此,如果您只输入一个字母 (X) 就可以了 XL 尺寸...

    cout << "Input size (X/L/M/S): ";
    cin  >> s;
    
    switch (s){
        case 'X': case 'x':
    

    【讨论】:

      【解决方案3】:

      您已将s 声明为整数,但尝试将其用作字符和字符数组。您可能应该声明它是char s;,然后始终将其用作单个字符——这确实意味着您无法检查XL。但是,您可以在您的开关中检查 X

      如果您绝对必须检查 XL,那么您将需要使用字符数组或 std::string,尽管 switch 语句只能用于单个字符,因此您可能必须嵌套您的 switch 来检查用于多个字符或仅使用一系列 if (strncmp(...)...) 调用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-26
        • 2011-11-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多