一直在为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/