有人可以看看下面的代码并告诉我我做错了什么吗?我附上了check50支票。 非常感谢提前
#include <cs50.h>
#include <stdio.h>
int main(void)
{
float change;
do
{
printf("O hai! How much change is owed?\n");
change = get_float();
}
while (change < 0 );
float cents = change *100; // create float cents
// initialise counter with 0
int counter = 0;
// loop as long as cents bigger than 0
while (cents > 0)
{
// substract 25 cents each time
while (cents >= 25)
{
cents = cents - 25;
counter++;
}
// substract 10 cents each time
while (cents >= 10)
{
cents = cents - 10;
counter++;
}
// substract 5 cents each time
while (cents >= 5 )
{
cents = cents - 5;
counter++;
}
// substract 1 cent each time
while (cents >= 1 )
{
cents = cents - 1;
counter++;
}
}
printf("%i\n", counter);
}
Checking..........
:)贪婪存在
:)贪婪编译
:)输入0.41产生4的输出
:) 0.01的输入产生1的输出
:( 0.15的输入产生2的输出 没找到&#34; 2 \ n&#34;
输入1.6的:)产生7的输出
输入23的:)产生92的输出
:( 4.2的输入产生18的输出 在等待程序退出时超时
:)拒绝负面输入,如-.1
:)拒绝&#34; foo&#34;
的非数字输入:)拒绝&#34;&#34;
的非数字输入答案 0 :(得分:1)
这样做:
int cents = round(change * 100);
仅仅因为在这种背景下没有分数片段。
这也可以确保错误输入例如7.324
(而非7.32
)得到“更正”。