C++ 中switch case选择语句的应用

对于下面的这个程序:
意思是:一、某市不同车牌的出租车3km的起步价和计费分别为夏利7元,3km以外2.1元/km;富康8元,3km以外2.4元/km;桑塔那9元,3km以外2.7元/km。编程:从键盘输入乘车的车型及自行车公里数,输出应付车资。
我编写如此程序 且无法通过编译 谁帮我解决一下

#include<iostream.h>
void main()
{
char chexing;
float lucheng;
cout<<"请输入车型"<<endl;
cin>>chexing;
cout<<"请输入路程"<<endl;
cin>>lucheng;
switch(chexing)
{
case'夏利':
cout<<"你乘坐的是"<<chexing<<","<<"路费为:"<<7+(lucheng-3)*2.1<<endl;
break;
case'富康':
cout<<"你乘坐的是"<<chexing<<","<<"路费为:"<<8+(lucheng-3)*2.4<<endl;
break;
case'桑塔拉':
cout<<"你乘坐的是"<<chexing<<","<<"路费为:"<<9+(lucheng-3)*2.7<<endl;
break;
default:
cout<<"输入错误"<<endl;
}
}
我主要是想在编译输入中文 能得到结果 1楼的说加上中文字库,这个怎么弄能教我吗? 2楼的说那个用string的头文件 我早试过了 但是好像不能 3楼说的case后面的字符问题 我用2005调试时 系统提示后面不能超过4个字符 我也知道 4楼的答案注重细节 但是我的意思是在编译时输出中文 能得到结果 你没帮我解决 谁在帮我出把力啊 能解决我说的问题 我加分
case 语句中的常量长度过大导致的
你可以不用那么麻烦的啊,用字符或字符串代替中文就是了嘛,效果一样的。另外,收费问题你的程序有错哈,不足3KM也是按3KM收费的,也就是说还行凳得判断车程,下面是我改的程序。
#include<iostream.h>
void main()
{
char chexing;
int lucheng;
cout<<"请输入车型:"<<endl;
cin>>chexing;
cout<<"请输入路程:"<<endl;
cin>>lucheng;
switch(chexing)
{
case'x':
cout<<"你乘坐的是夏利,路费为: "<<((lucheng<=3)?7:(7+(lucheng-3)*2.1))<<"元。"<<endl;
break;
case'f':
cout<<"你乘坐的是富康,路费为: "<<((lucheng<=3)?8:(8+(lucheng-3)*2.4))<<"元。"<<endl;
break;
case's':
cout<<"你乘坐的是桑塔纳,路费为: "<<((lucheng<=3)?9:(9+(lucheng-3)*2.7))<<"元。"<<endl;
break;
default:
cout<<"输入错误"档宽旅<<endl;
}
}

那你在输入的时候提示就是了撒,为什么一定要输入中文呢?在输入的时候就提示如何呢?
比如说把
cout<<"请输入车型:"<<endl;
换成
cout<<"请输入车型(x表示巧拍夏利,f表示富康,s表示桑塔纳):"<<endl;

一般来说,这种交互性不强的程序都最好不要用中文输入

楼下的,为什么我的程序错误太多呢?我运行起很正常的呀
char 类型者可以输入一个字符而且不可以是汉字,把char改为string类型 用拼音代握陆拿替汉字,或只段搭输入一个字符,用拼音的首字母答悉唯题汉字就可以了
想用swithc/case来匹配字符誉知串模虚族基本上是实现旦弊不了的。你可以改用if,通过strcmp()函数来比较字符串是否相等!
你把悄判腔单引号改成双引,并且和case 之间加个空冲伍格,
再把char改成string
程启衫序前面加个#include<string.h>
正常不支持中文。
你试试加上中文字库行不行