哈佛CS50半程序:浮动一半(浮动账单,浮动税,浮动小费)功能

问题描述 投票:0回答:1

我对编程非常陌生,我很难理解这个程序。作业要求计算总账单(给定账单金额、税费百分比和小费百分比),然后将其除以计算某人的一半账单。以下代码是正确的并产生了预期的结果,我只是无法理解它是如何工作的。

函数“float half(浮动账单、浮动税费、浮动小费)”(half1)用于计算账单的一半。我知道它从“half(bill_amount,tax_percent,tip_percent)”(half2)中提取值。然而,我很难理解它是如何工作的。

如果 half2 在主函数中位于 half1 之前,如何从 half2 中提取数字?

任何帮助都会很棒。谢谢!

// Calculate your half of a restaurant bill
// Data types, operations, type casting, return value

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

float half(float bill, float tax, float tip);

int main(void)
{
    float bill_amount = get_float("Bill before tax and tip: ");
    float tax_percent = get_float("Sale Tax Percent: ");
    float tip_percent = get_float("Tip percent: ");

    printf("You will owe $%.2f each!\n", half(bill_amount, tax_percent, tip_percent));
}

// TODO: Complete the function
float half(float bill, float tax, float tip)
{
    float total_amount = bill + (bill * (tax / 100));
    total_amount += total_amount * (tip / 100);
    return total_amount / 2.0;
}
c cs50
1个回答
0
投票

单词 half 第一次出现在顶部,就在包含语句的下方,是函数 declaration (1)。所有这一切应该做的,就是告诉编译器,嘿,不要惊慌,会有一个名为 half 的函数,返回一个浮点数并接受 3 个浮点参数。 当程序在主函数末尾的 printf 语句中第二次出现 half 时,编译器知道会发生什么。这里所做的称为函数call。您可以说,您的程序正在使用该函数。因此它告诉计算机实际执行您在half中定义的例程。为了能够做到这一点,该函数必须在它上面声明,它就是这样的(参见(1))。所以我们在这里很好。

第三次出现half,就在TODO 的下方,是函数definition。你可以说这是实际的函数(不是很准确,但目前已经足够接近了:))。调用该函数时要执行的操作的例程写在这里。每次调用 half 时,都会执行花括号之间的代码,参数变量填充函数调用中分配给它们的值(括号中的值)。

因此,函数定义从某个地方提取值,而不是函数调用告诉计算机执行函数代码,同时用调用的值替换参数变量。想象一下,您在一家餐厅担任服务员,您来到厨房,呼叫厨师来烹饪顾客点的菜,如下所示:

cook(chickenburger, large fries)
。 厨师可以具有如下所示的烹饪功能:

    dishes cook(char *order1, char *order2) {
        // magical kitchen stuff
        // ...
        return cooked_dishes;
    }

这有一点帮助吗?祝 CS50 玩得开心!

© www.soinside.com 2019 - 2024. All rights reserved.