CS50 Pset1 Cash:“对“ get_change”的未定义引用”

时间:2019-01-13 06:47:22

标签: c cs50

#include <stdio.h>
#include <cs50.h>
#include <math.h>

int main(void)
{
    // prompt user for "0.00" value
    float dollars;
    double get_change(float dollars);
        // prompt user for "0.00" value
    do
        {
            dollars = get_float("Change owed: ");
        }
    while(dollars <= 0);
    printf("%f\n", get_change(dollars));

        //calculate which coins will be used
    int cents = round(dollars * 100);
    int coins = 0;
    int denom[] = {25, 10, 5, 1};

    for (int i = 0; i < 4; i++)
        {
            coins += cents / denom[i];
            cents = cents % denom[i];
        }
    return coins;
}

在CS50中进行Pset1兑现。正在获取错误消息“在函数main': /home/ubuntu/workspace/pset1/cash/cash2.c:15: undefined reference to get_change中” clang:错误:链接器命令失败,退出代码为1(使用-v查看调用) make:[cash2]错误1“非常混乱

2 个答案:

答案 0 :(得分:0)

以下建议的代码:

  1. 执行所需硬币总数的操作(假设没有纸币)
  2. 正确分隔功能
  3. 为子功能正确使用原型
  4. 正确地从float转换为int
  5. 通过包含小数点和结尾的'f',将常量正确定义为float

现在,建议的代码:

#include <stdio.h>
#include <cs50.h>
#include <math.h>

int get_change( float dollars );


int main(void)
{
    // prompt user for "0.00" value
    float dollars;

    do
    {
        dollars = get_float("Change owed: ");
    }
    while(dollars <= 0.0f);

    printf("%d\n", get_change(dollars));
}

// returns number coins needed, not their denominations 
int get_change( float dollars )
{
    //calculate which coins will be used
    int cents = (int)floorf(dollars * 100.0f);
    int coins = 0;
    int denom[] = {25, 10, 5, 1};

    for (int i = 0; i < 4; i++)
    {
        coins += cents / denom[i];
        cents = cents % denom[i];
    }
    return coins;
}

答案 1 :(得分:0)

#include <stdio.h>
#include <cs50.h>
#include <math.h>

int get_change(float dollars);

int main(void)
{
    float dollars;
    //prompts user for 0.00 amount
    do
    {
        dollars = get_float("change owed: ");
    }
    while (dollars < 0);
    //
    printf("%i\n", get_change(dollars));
}
int get_change(float dollars)
{
    //calculate how mnay coins will be used
    int cents = round(dollars * 100);
    int coins = 0;
    int denom[] = {25, 10, 5, 1};

    for (int i = 0; i < 4; i++)
    {
        coins += cents / denom[i];
        cents = cents % denom[i];
    }
    return coins;
}

我对我的问题的官方答复。