当前位置: 首页 > 知识库问答 >
问题:

如何在C语言中创建自动换机

应涵容
2023-03-14

我是编程新手。我一直在努力创造一种东西,它能给我一个特定金额的美元所需的最小金额的美分硬币。例如,16美分所需的最低硬币数量将3 (10 5 1)

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

float get_positive_change(void);

int main (void)
{   //Get owed dollar amount
 float change = get_positive_change();

//Round float to int
 int cents = round(change*100);

//Initialize counter for coins needed)
 for(int i = 0; cents < 0; i++)
 {

   if(cents >= 25)
   {
       cents = cents - 25;


   }
   else if(cents >= 10)
   {
       cents = cents - 10;

   }
   else if(cents >= 5)
   {
       cents = cents - 5;

   }
   else if(cents >= 1)
   {
       cents = cents - 1;

   }
   return cents;
   return i;
 }

  printf("%d\n", i);
}



float get_positive_change(void)
{
float n;
do
{
    n = get_float("Change owed: ");
}
while (n < 1); //Express need for number to be < 1
return n;
}

我确实意识到“int i”不存在于该函数之外,所以,我想知道如何解决这个问题。此外,我还不确定返回是如何工作的,我试图四处玩耍,看看它是否工作。任何对改进代码行的帮助都将得到充分的评价。我已经试着解决这个问题一段时间了。祝你们有美好的一天

共有2个答案

顾恺
2023-03-14

我将用C语言编写它,因为我已经用C语言做了更多的工作,但是你可以很容易地将printf和输入转换成C语言

//inside of main
int pennies = 0, nickels = 0, dimes = 0, quarters = 0;
int coinCounter = 0;
int amount = 0;

cout << "input the change you have in cents";
cin >> amount;

while(amount > 0)
{
    if(amount >= 25){
        quarters++;
        amount -= 25;
    }
    else if(amount >= 10) {
        dimes++;
        amount -= 10;
    }
    else if(amount >= 5) { 
        nickels++;
        amount -= 5;
    }
    else { //the only coin left would be pennies
        pennies++
        amount -= 1;
    }
    coinCounter++;
}

cout << "You have " + coinCounter + " coins\n";
cout << "You have " + quarters + " quarters\n";
cout << "You have " + dimes + " dimes\n";
cout << "You have " + nickels + " nickels\n";
cout << "You have " + pennies + " pennies\n";

在这种情况下,我使用了一个while循环,因为我们不知道投入的金额能赚多少钱。您不应该在main中使用returns,因为这样会退出main。而且,如果我可以在main中作为一行执行输入语句,我就不会在函数中有一个输入语句。在你的旅途中的这一点上,你不值得如此恼怒。您应该学习如何使用函数,但有时使用简单的html" target="_blank">方法更容易。当你在做其他事情之前先开始计算,然后使用一个函数。我知道确保用户不破坏程序是很重要的,但这可能是目前的主要问题。

你必须做更多的事情来做正确的事情,但是我希望我帮助刺激了你的大脑。

苏鸿羽
2023-03-14

另外,我不记得“for循环”实际上是函数还是语句,或者两者都不是。

for是一个语句。函数是一个命名例程,定义如下:

类型名称参数声明…){语句和声明…}

(旧的C代码中还有其他形式的函数定义。您不应该使用它们。)

我确实意识到“inti”不存在于该函数之外,所以,我想知道如何修复它。

int i移到for语句之外。将其放在for语句的前面。您仍然可以在for语句中初始化i

int i;
for (i = 0; 0 < cents; ++i)
{
    …
}

这也纠正了终止条件。你有美分

另外,我还不确定return是如何工作的,…

return终止当前函数的执行。在调用当前函数的函数中继续执行。带有值的return将该值作为函数调用的值提供给调用函数。对于main,返回值提供程序的状态值。返回非零值可能会导致警告消息,表明程序未成功完成。

您不希望通过在主代码中使用返回返回计算结果。相反,您可能希望使用printf语句打印它们。有关程序应该如何提供其结果的信息,请参阅作业文本。

此代码无法工作:

return cents;
return i;

因为第一个return终止了main的执行,所以第二个return永远不会执行。

get\u positive\u change中的此代码错误:

while (n < 1); //Express need for number to be < 1

因为n可能是小于1的正金额,例如(大约).16美元兑换16美分。您需要while(n

 类似资料:
  • 我在日语语法方面遇到了很大的麻烦。我有一个小的代币字典的单词,需要与5种类型的文档匹配。一种类型一个字典:例如Job,该人员的字典将包含。我需要读这本字典,为它创造一个JAPE规则。这是我第一次尝试 Phase:JobTitle 输入:查找 选项:control=appelt、debug=true 有没有办法自动创建JAPE规则,只用于在字典中搜索到文档的标记?

  • 问题内容: 有一个普通的Java API的JavaDoc,有英文版和中文版,但似乎每个版本都需要单独的源代码。还有其他更方便的方法吗? 问题答案: 不,基本上没有办法。 想到的唯一变通方法适用于生成的HTML页面:您可以将JavaDocs包围在使用CSS在语言之间切换的块元素中。考虑: 随后编辑JavaDocs的CSS,以便用户可以切换语言,例如:

  • 本文向大家介绍Objective-C语言创建数组,包括了Objective-C语言创建数组的使用技巧和注意事项,需要的朋友参考一下 示例 创建不可变数组: 有关可变数组,请参见NSMutableArray。

  • 本文向大家介绍如何在C#中创建StringBuilder?,包括了如何在C#中创建StringBuilder?的使用技巧和注意事项,需要的朋友参考一下 要在C#中创建StringBuilder,代码如下- 示例 输出结果 这将产生以下输出- 示例 让我们看另一个例子- 输出结果 这将产生以下输出-

  • 例如,类的ViewBag属性,我们可以动态地获取/设置值,并向该对象添加任意数量的附加字段或属性,这很酷。我想在其他类型的应用程序中使用类似的东西,除了MVC应用程序和类之外。当我试图创建动态对象并设置它的属性时,如下所示: 我有,带有message属性或索引器'<>f__anonymoustype0.a'不能赋值--它在第2行中是只读的。我也认为这不是我想要的。也许有什么课可以让我做一些类似的事

  • 本文向大家介绍Objective-C语言创建基本方法,包括了Objective-C语言创建基本方法的使用技巧和注意事项,需要的朋友参考一下 示例 这是如何创建将“ Hello World”记录到控制台的基本方法: 的-开头表示该方法作为一个实例方法。 该(void)表示的返回类型。此方法不返回任何内容,因此您输入void。 “ hello”是方法的名称。 {}调用方法时,代码中的所有内容都会运行。