一直在为edxCS50课程做家庭作业,在C语言和编程方面还很新,所以我很自豪终于能把它编译出来。但最后的结果似乎是我错过了什么
代码的要点是把用户输入的钱取出,并吐出赚钱所需的最小硬币数量。我的想法是先把所有的东西都转换成整数,这样我就可以用模了。如果输入的金额可以被25整除,那么就结束了,它将被25整除,得到所需的季度数。如果没有,它会找出有多少个季度,找到剩余的,用它作为剩余的零钱,冲洗和重复,直到你得到硬币。最后应该把硬币的数量加起来吐出来。
问题是每次我运行它时,结束和都会产生一个很大的“0”。我很确定这是因为变量保持在0的起始值,但我不明白为什么在代码运行时不更改变量值。
第一次在这里发帖,所以如果我不够具体或在这篇帖子中遗漏了信息,请随时纠正我

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

int main(void)

{float moneytotf=0.0;
int moneytot= moneytotf*100;
int qtr=0;
int dime=0;
int nickel=0;
int penny=0;
int change;
do
{
printf("O hai! How much change is owed?\n");
moneytotf=get_float();
}
while (moneytot<0);

if (moneytot%25==0)
{qtr=moneytot/25;}
else
    {if (moneytot/25<1)
    {qtr=0;}
    else
    {
        qtr=(moneytot-moneytot%25)/25;
        change=moneytot%25;
        if (change%10==0)
        {dime=change/10;}
        else
            {if (change/10<1)
            {dime=0;}
            else
                {dime=((change-change%10)/10);
                change=change%10;
                if (change%5<1)
                {
                    nickel=0;
                }
                else
                    {
                        if ((change-5)<1)
                        {nickel=0;}
                        else
                            {nickel=((change-change%5)/5);
                            change=change%5;
                            if (change==0)
                            {
                                penny=0;
                            }
                            else
                                {penny=change;}
                            }
                    }

                }

    }


    }
}
int sum = qtr+dime+nickel+penny;
printf("%i\n", sum);
}

最佳答案

我怀疑你认为

float moneytotf=0.0;
int moneytot= moneytotf*100;

方法
“moneytot应该始终包含moneytot乘以100”
这并不意味着-这意味着
“将moneytot设置为moneytotf当前的值”
即0。你从未将它设置为任何其他值。你读过moneytotf后需要分配它

关于c - 全局变量未在C中更新,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45943501/

10-11 23:51