【问题标题】:How to write a C program to calculate total amount of money?如何编写一个C程序来计算总金额?
【发布时间】:2019-10-17 17:05:42
【问题描述】:

我正在尝试编写一个程序,要求用户输入用户拥有的硬币数量,然后输出用户拥有的总金额。因此,用户只有一角钱、五分钱、便士和 25 美分硬币。用户输入每种面额的硬币数量后,程序应输出总金额。

    #include "Coins Project.h"
    #include <stdio.h>
 
    int change(float total, int *quarters, int *dimes, int *nickels, int 
    *pennies);
    void print(float total, int quarters, int dimes, int nickels, int 
    pennies);
 
    int main(void)
    {
    int quarters, dimes, nickels, pennies;
    float total;
 
    total = 1.88;
    change(total, &quarters, &dimes, &nickels, &pennies);
    print(total, quarters, dimes, nickels, pennies);
 
    total = 0.32;
    change(total, &quarters, &dimes, &nickels, &pennies);
    print(total, quarters, dimes, nickels, pennies);
 
    printf("\nPlease enter an amount of money: \n");
    scanf("%f", &total);
 
    change(total, &quarters, &dimes, &nickels, &pennies);
    print(total, quarters, dimes, nickels, pennies);
 
    return 0;
    }
 
    int change(float total, int *quarters, int *dimes, int *nickels, int 
    *pennies)
    {
    if( total >= 0.25 )
        *quarters = (total / 0.25);
    if( total >= 0.10 )
        *dimes = (total - (*quarters * 0.25)) / 0.10;
    if( total >= 0.05 )
        *nickels = (total - (*quarters * 0.25) - (*dimes * 0.10)) / 
    0.05;
    if( total >= 0.01 )
        *pennies = (total - (*quarters * 0.25) - (*dimes * 0.10) - 
    (*nickels * 0.05)) / 0.01 + .005;
 
    return 0;
    }
 
    void print(float total, int quarters, int dimes, int nickels, int 
    pennies)
    {
    printf("\nTOTAL VALUE ENTERED: $%.2f", total);
    printf("\n%3d quarters\n", quarters);
    printf("\n%3d dimes\n", dimes);
    printf("\n%3d nickels\n", nickels);
    printf("\n%3d pennies\n", pennies);
    }

该代码应适用于用户输入的任何硬币,并应在末尾显示总数。

【问题讨论】:

  • 那有什么问题?
  • change 中的算法看起来非常复杂。为什么不将每种硬币类型的部分美分总和相加得到总和?然后,如果您愿意,您可以将总金额除以 100 以转换为美元……或者我不确定您要做什么。您的问题描述听起来像是您想将所有硬币相加以获得总金额,但您的代码看起来您​​正在尝试根据总金额进行更改..?
  • 是的,我很困惑。它应该像这样工作。你有多少便士? 10 你输入了 10 你有多少镍币? 5 你输入了 5 你有多少硬币? 1 你进入了 1 你有多少个宿舍? 1 您输入了 1 您有 $0.70 谢谢。
  • 一定要初始化所有的局部变量,否则你会得到一些垃圾输出。例如,如果总计为 0.20,则永远不会设置季度。
  • 是的,在这种情况下,只需将它们全部加起来:total = (25 * quarters) + (10 * dimes) + ( 5 * nickles) + pennies; 这将为您提供以美分为单位的总变化,您可以除以 100 并转换为 float 如果您想显示它美元。没有理由将 total 初始化为某个随机值。但是您拥有的代码根本没有反映这一点。看起来您正在尝试从总金额中进行更改,即用户输入总金额 32 美分,而您的程序说这是 1 个季度,1 个镍,2 个便​​士。

标签: c


【解决方案1】:

如果您只是想一次性将硬币的数量提供给程序,您可以这样做:

scanf("%d %d %d %d", &quarters, &dimes, &nickels, &pennies);

【讨论】:

  • int main() { float a = 0.01;浮动 b = 0.05;浮动 c = 0.10;浮动 d = 0.25;返回0; printf("多少便士?"); scanf("%f", &a); printf("多少镍币?"); scanf("%f", &b); printf("多少毛钱?"); scanf("%f", &c); printf("多少个季度?"); scanf("%f", &d); printf("你有 $ %f\n", (a+b+c+d));返回0;我重新这样做了,但我仍然有问题
  • 有什么问题?
猜你喜欢
  • 2023-04-07
  • 1970-01-01
  • 2013-07-02
  • 2021-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多