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

C++中display()函数未定义引用问题求助(美元转欧元作业)

调试你的美元转欧元程序

看起来你在函数声明和调用的匹配上踩了几个新手常犯的坑,咱们一步步来解决:

1. 函数声明与定义不匹配(核心错误)

你遇到的display()未定义引用问题,根源是函数声明和实际定义的参数不一致:

  • 你声明的display()是无参数的,但实际定义的是display(double money)(需要一个double类型参数)
  • 同样,convert()的声明是无参数,但定义是convert(double money),这也会导致后续调用出错

编译器会根据声明来找函数,发现找不到无参数的display(),就会报未定义引用的错误。

2. main函数里的调用问题

在main()里,你调用getmoney()后没有保存返回的金额,而且调用display()时没传参数,这会导致后续函数拿不到用户输入的数值:

// 错误写法
getmoney(); 
display();

应该把getmoney()的返回值存在变量里,再传给display():

// 正确写法
double usd = getmoney();
display(usd);

3. display函数里的逻辑bug

  • 你在display()里又调用了一次getmoney(),这会让用户再输入一次金额,完全没必要,应该用传入的money参数
  • else (money < 0);这行是无效代码,分号会让else的逻辑为空,不管money正负,后面的cout << "Euros: (" << salad << ")";都会执行,应该改成else块包裹后面的输出
  • 变量名salad太随意啦,改成euros会更易懂

修正后的完整代码

#include <iostream> 
using namespace std; 

// 修正函数声明,和定义的参数完全匹配
double getmoney(); 
double convert(double money); 
double display(double money); 

int main() { 
    cout.setf(ios::fixed); 
    cout.setf(ios::showpoint); 
    cout.precision(2); 

    // 保存用户输入的美元金额,再传递给display函数
    double usd_amount = getmoney();
    display(usd_amount); 

    return 0; 
} 

double getmoney() { 
    double money; 
    cout << "Please enter the amount in US Dollars: "; 
    cin >> money; 
    return money; 
} 

double convert(double money) { 
    double euros; 
    euros = money * 1.41; 
    return euros; 
} 

double display(double money) { 
    cout.setf(ios::fixed); 
    cout.setf(ios::showpoint); 
    cout.precision(2); 

    double euros = convert(money);
    // 输出用户输入的美元金额,避免重复调用getmoney
    cout << "US Dollars: " << money << endl;

    if (money >= 0) {
        cout << "Euros: " << euros; 
    } else {
        // 负金额用括号包裹正数,更符合显示习惯
        cout << "Euros: (" << -euros << ")"; 
    }
    return 0; 
}

额外小建议

可以在getmoney()里加个输入验证逻辑,比如如果用户输入负数或者非数字,提示重新输入,让程序更健壮~

内容的提问来源于stack exchange,提问作者Cpt. Brandon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:11:24