c - Do-While 循环正在工作,但没有得到最终输出

标签 c cs50 greedy

此代码的目的是请求所需的找零,然后输出可用于提供找零的最小数量的硬币。

不确定为什么我的代码没有输出任何内容?

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

float get_defined_float(string prompt);

int main(void)

{
    float f = get_defined_float("Required Change: ");
}

float get_defined_float(string prompt)
{
    float n;
        do
        {
            n = get_float("Required Change: ");
        }
    while (n<=0);
    return n;




    int input = round(n * 100);
    int quarters = input / 25;
    int dimes = (input % 25) / 10;
    int nickles = (input % 25 % 10) / 5;
    int pennies = (input % 5) / 1;


    int total = quarters + dimes + nickles + pennies;
    printf("%d", total);
}

最佳答案

您的return语句位于输出 printf 上方在你的程序中声明。这意味着 get_defined_float 的后半部分是死代码 - 它永远不会运行。

看来您可能想将死代码移至您的 main 中常规,替代f对于 nint input = round(n * 100);声明。

您可能还需要在该输出语句中添加换行符 ( \n ),以便刷新输出缓冲区(通常为 TTY 进行行缓冲)。

打开一些编译器警告!

关于c - Do-While 循环正在工作,但没有得到最终输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58946058/

相关文章:

c - 中断导致运行时错误

c - 在一个函数create_new_node中连接一个节点的所有链接可以吗?

algorithm - 作业调度算法的反例 "Earliest End time First"

C 指向固定大小数组的现有指针

c++ - 为什么内存地址以 0x 开头?

Cs50 的问题集 4 - 无滤波器 - 反射函数

c - 我的凯撒密码版本有什么问题?参数组2

c - 从c中的fread()形式读取缓冲区数据

c++ - Coursera 自动评分器给我未知信号 11

c - 为什么这种更改计数算法的行为不可靠?