[英]Global variables not updating in C
一直在从事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应始终包含moneytotf乘以100”
这并不意味着-这意味着
“将moneytot设置为现在的moneytotf值”
即0。您永远不会将其设置为任何其他值。 阅读moneytotf之后需要分配它
全局变量没有问题,但是代码中有简单的错误
#include <cs50.h>
#include <stdio.h>
int main(void) {
float moneytotf = 0.0;
int moneytot = moneytotf * 100; // moneytotf is a float and you are using
// it to assign to an integer. BTW moneytot is
// still 0. Maybe it is better to write:
// int moneytot = -1; ??
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(); // You are changing moneytotf and NOT moneytot
} while (moneytot < 0); // but this condition operates on moneytot that is 0,
// so it runs only once
if (moneytot % 25 == 0) {
qtr = moneytot / 25; // qtr is always 0
} else {
// This code never runs as for now
}
int sum = qtr + dime + nickel + penny; // all the others are zero by default
printf("%i\n", sum); // it will always print 0\n
}
您在问错问题。 您没有任何全局变量; 您所有的人都在主要功能的范围之内。
您最直接的问题是,您要对moneytotf
并且似乎希望它会自动更改moneytot
,但这是您需要在代码中明确进行的操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.