0

除数字 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;

}

4

5 回答 5

1

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

由于您存储day为字符,因此它仅足以存储输入的第一个字符。当您输入1(或2,或3,等)时,这很好,因为只有一个输入字符。当您输入一个多于一位的数字时,只能存储第一个字符 - 例如,如果您输入10,则只有空间可以存储1

要解决此问题,您应该为day. 使用一个int或类似的东西可能是最好的,因为这会给你足够的空间来容纳大的价值。因此,换句话说,更改char day;int day;.

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

于 2013-10-09T02:11:21.337 回答
1

您只在day变量中存储一个字符,因为它被声明为char. 将其更改为int,并将 switch 语句中的 case 更改为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;
}
于 2013-10-09T02:08:50.090 回答
1

当你写

char day;
cin>>day;

它将只接受输入中的一个字符。您应该将 day 声明为整数,您的问题将得到解决。

于 2013-10-09T02:05:53.517 回答
0

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

于 2013-10-09T06:11:41.223 回答
0
 char day;
    cout << " Enter day of the week " << endl;
    cin >> day;

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

于 2013-10-09T02:05:47.970 回答