Jem*_*eal 4 c++ constants character switch-statement output
请帮忙!我无法产生程序的输出。这是这样的条件:如果购买的衬衫是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;
Run Code Online (Sandbox Code Playgroud)
}
程序的输出:
Input price: 500
Input size: XL
Process returned 0 (0x0) execution time : 5.750 s
Press any key to continue.
Run Code Online (Sandbox Code Playgroud)
PS如何在程序中删除警告(多字符常量)?提前致谢!
如果大小可以大于单个字符,则需要用字符串表示。您不能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
Run Code Online (Sandbox Code Playgroud)
如果是单个字符,则可以使用char(not int)来表示:
char size;
cin >> size;
switch (size) {
case 'L':
// deal with size L
break;
// and so on
}
Run Code Online (Sandbox Code Playgroud)
但是对于多个字符,您需要一个字符串。
您已声明s为整数,但尝试将其用作字符和字符数组。您可能应该声明它是char s;,然后将其一致地用作单个字符——这确实意味着您无法检查XL. 不过,您可以只检查X您的交换机。
如果您绝对必须检查XL,那么您需要使用字符数组或std::string,尽管 switch 语句只能与单个字符一起使用,因此您可能必须嵌套 switch 来检查多个字符,或者只使用一系列if (strncmp(...)...)来电。