C++使用switch实现简易货币转换器输入后无响应问题求助
代码问题梳理
- 变量类型定义错误:
zlote是存储兑换金额的数值变量,不能定义为char类型(仅用于存储单个字符),应该改为浮点型double;currency用于存储目标货币标识,保留char类型即可,其余未初始化的冗余变量euro、dolar、funt可以直接删除。 - 汇率赋值逻辑错误:原代码中
E=euro*0.25这类语句使用未初始化的变量计算,得到的是乱值,正确应该直接给汇率常量赋值即可。 switch参数使用错误:你需要判断的是用户输入的目标货币类型currency,不是兑换金额zlote,同时case值要和你提示用户输入的货币标识对应。- 分支触发逻辑错误:原
case值为1、2、3,只有当输入金额刚好匹配对应ASCII值才会触发分支,这是程序无输出的核心原因。
修正后可运行代码
#include <iostream> using namespace std; int main() { // 定义汇率常量 1兹罗提对应各货币的兑换值 const double EUR_RATE = 0.25; const double USD_RATE = 0.19; const double GBP_RATE = 0.22; char currency; double zlote; cout << "what currency do you want to convert into ? (E:欧元 D:美元 F:英镑)" << endl; cin >> currency; cout << "Type in the amount you wish to convert" << endl; cin >> zlote; // switch判断目标货币类型 switch (currency) { case 'E': case 'e': // 兼容小写输入 cout << zlote << " zlote is equal " << zlote * EUR_RATE << " Euro" << endl; break; case 'D': case 'd': cout << zlote << " zlote is equal " << zlote * USD_RATE << " Dolarow" << endl; break; case 'F': case 'f': cout << zlote << " zlote is equal " << zlote * GBP_RATE << " Funtow" << endl; break; default: // 处理非法输入 cout << "输入的货币类型不支持" << endl; } return 0; }
内容的提问来源于stack exchange,提问作者MGR
相关产品推荐
相关产品推荐

