You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 12:45:03