默认不起作用。 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;
}
答案 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
(或2
或3
等)时,这很好,因为 只有一个输入字符。当您输入一个包含多个数字的数字时,只能存储第一个字符 - 例如,如果您输入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”。