【发布时间】:2021-10-14 06:12:21
【问题描述】:
这是 Cs50 问题 set1 现金。我不知道这段代码有什么问题,有人可以帮助我。我只是添加了引号,因为 stackoverflow 不允许我发布它。 您的程序应按照以下示例运行。
$ ./cash
Change owed: 0.41
4
#include <stdio.h>
#include <cs50.h>
#include <math.h>
int main(void)
{
int i = 0;
int a = 0;
int b = 0;
int c = 0;
float change_owed;
do
{
change_owed = get_float("change owed: ");
}
while (change_owed <=0);
change_owed=round(change_owed*100);
printf("%f\n", change_owed);
if (change_owed>25)
;
{
while (change_owed>=25);
;
{
change_owed=change_owed-25;
i++;
}
}
if (change_owed>=10)
;
{
while (change_owed>=10);
;
{
change_owed=change_owed-10;
a++;
}
}
if (change_owed>=5)
;
{
while (change_owed>=5;c++;)
;
{
change_owed=change_owed-5;
}
}
if (change_owed>=1)
;
{
while(change_owed>=1)
;
{
change_owed=change_owed-1;
b++;
}
}
int final = i+a+b+c;
printf("%d + %d + %d+ %d = %d", i, a, b, c, final);
printf("\n");"
}
}
这是 Cs50 问题 set1 现金。我不知道这段代码有什么问题,有人可以帮助我
【问题讨论】:
-
欢迎来到 SO。请打开你的编译器警告。你可能会得到类似“流浪”的东西;一段时间后”警告或类似的。再次检查控制结构的语法。
if()和while不会单独使用;,而只是为了终止它们正在控制的指令。你那里有空的说明。 -
if (X) while (X) ...不是一个非常有用的模式。如果X是false,则循环无论如何都不会运行。无需在循环前添加具有相同条件的额外if。 -
请解释这段代码应该做什么,给出一些示例输入,正确的响应,以及你所看到的。
-
采用一种代码风格并使用它。正确缩进。将编译器警告提高到最大,然后更改代码,直到所有错误和警告都消失。在
while之后避免;,因为这意味着一个空循环体。 -
“我刚刚添加了引号,因为 stackoverflow 不允许我发布它。”是什么意思??您是否因此添加了分号 (
;)?它们没有任何意义,并且会改变代码的行为。见How do I format my code blocks?