请帮忙!我无法生成程序的输出。这是条件: 如果购买的衬衫是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.
P.S。如何在程序中删除警告(多字符字符常量)? 提前谢谢!
答案 0 :(得分:4)
如果大小可以超过单个字符,那么您需要用字符串表示它。您不能在字符串上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
}
但对于多个字符,您需要一个字符串。
答案 1 :(得分:1)
switch
语句可以在C ++中处理int
和char
。 char
数据类型只能包含一个字母。因此,如果您只为XL尺寸输入一个字母(X
)就可以了......
cout << "Input size (X/L/M/S): ";
cin >> s;
switch (s){
case 'X': case 'x':
答案 2 :(得分:0)
您已将s
声明为整数但尝试将其用作字符和字符数组。您应该声明它是char s;
,然后将其一致地用作单个字符 - 这意味着您无法检查XL
。但是,您可以在交换机中检查X
。
如果你绝对必须检查XL
,那么你需要使用字符数组或std::string
,尽管switch语句只能用于单个字符,所以你可能需要嵌套您可以选择检查多个字符,还是仅使用一系列if (strncmp(...)...)
来电。