默认仅适用于8和9.之后它使用第一个数字并将其视为1,2,3

时间:2013-10-09 01:57:43

标签: c++

除了数字8和9之外,

默认不起作用。 10以上它使用第一个整数将其视为完全忽略其后的第二个数字的情况。请帮忙

#include <iostream> 
#include <string>
using namespace std;

int main ()
{
     char day;
        cout << " Enter day of the week " << endl;
        cin >> day;
        switch (day)
   {  
        case '1' : case '6' : case '7' :
           cout << "weekend";
            break;

    case '2' : case '4' :
        cout << "going to C++ Class";
        break;

    case '3' : case '5' :
        cout << "studying for C++ Class";
        break;

    default :
        cout << "invalid day number";


}


    system("pause");
    return 0;

}

5 个答案:

答案 0 :(得分:1)

写作时

char day;
cin>>day;

它只接受来自输入的一个字符。你应该把day声明为整数,你的问题就会解决。

答案 1 :(得分:1)

您只在day变量中存储了一个字符,因为它被声明为char。将其更改为int,并将switch语句中的案例更改为int值。

#include <iostream> 
#include <string>
using namespace std;

int main ()
{
    int day;
    cout << " Enter day of the week " << endl;
    cin >> day;

    switch (day)
    {  
        case 1:
        case 6:
        case 7:
            cout << "weekend";
            break;
        case 2:
        case 4:
            cout << "going to C++ Class";
            break;
        case 3:
        case 5:
            cout << "studying for C++ Class";
            break;
        default :
            cout << "invalid day number";
    }

    system("pause");
    return 0;
}

答案 2 :(得分:1)

您的问题是将输入存储在char

由于您将day存储为char,因此它只能存储输入所在的第一个字符。当您输入1(或23等)时,这很好,因为 只有一个输入字符。当您输入一个包含多个数字的数字时,只能存储第一个字符 - 例如,如果您输入10,则只有存储1的空间。

要解决此问题,您应该为day使用更合适的数据类型。使用int或类似的东西可能是最好的,因为这将为您提供足够的空间来容纳大值。换句话说,将char day;更改为int day;

如果您这样做,则需要更改case语句中的值以匹配 - 因为您不再比较字符,您还需要将它们更改为整数(例如更改) '0'只是0)。

答案 3 :(得分:0)

 char day;
    cout << " Enter day of the week " << endl;
    cin >> day;

您的代码说从标准输入中读取一个字符。如果那不是您想要的,请更改代码。

答案 4 :(得分:0)

在决定变量的数据类型时需要非常小心,因为每种数据类型都有其固有的属性。像这里指出的每个人一样,您需要将数据类型从“char”更改为“int”。