c语言中的美元兑换程序

c语言中的美元兑换程序,c,loops,if-statement,C,Loops,If Statement,我有一个任务,要求我们为一美元输入(最高200.00美元)编写一个自动更改程序。基本上,有人输入一个数量,然后输出显示以下各种面额的变化量(20、10、5、1、25、10、5和1)。 我已经为每个面额的if/else语句找到了一种方法(见下文),但我想知道是否有一种更简单、更简洁的方法来执行循环?(这是一门入门课程,所以我们还没有学习函数/数组等。) 谢谢 不像你写的那样。但正如你所写的,它只找到20的数字。与你所写的不同。但正如您所写的,它只找到20的数字。将金额转换为美分会更容易。 然后你会

我有一个任务,要求我们为一美元输入(最高200.00美元)编写一个自动更改程序。基本上,有人输入一个数量,然后输出显示以下各种面额的变化量(20、10、5、1、25、10、5和1)。 我已经为每个面额的if/else语句找到了一种方法(见下文),但我想知道是否有一种更简单、更简洁的方法来执行循环?(这是一门入门课程,所以我们还没有学习函数/数组等。)


谢谢

不像你写的那样。但正如你所写的,它只找到20的数字。

与你所写的不同。但正如您所写的,它只找到20的数字。

将金额转换为美分会更容易。 然后你会得到一个像20000($200)这样的整数

拥有所有可能面额的数组:

int denominations[] = { 2000, 1000, 500, 100, 25, 10, 5, 1}.
然后遍历这个数组。
将当前金额除以当前面额,然后从当前金额中减去当前金额。计算除法的其余部分并将其设置为当前和,然后移动到下一个面额…依此类推…

将金额转换为美分会更容易。 然后你会得到一个像20000($200)这样的整数

拥有所有可能面额的数组:

int denominations[] = { 2000, 1000, 500, 100, 25, 10, 5, 1}.
然后遍历这个数组。
将当前金额除以当前面额,然后从当前金额中减去当前金额。计算除法的其余部分并将其设置为当前和,然后移动到下一个面额…等等…

是的,使用循环更容易。但您需要一个阵列来配合它:

#include <stdio.h>

static int denoms[] = {
    2000,
    1000,
     500,
     100,
      25,
      10,
       5,
       1,
       0
};

int main () {
  double dollar_ent;
  int i;
  int twenties;

  printf("Please enter a dollar amount up to 100:  ");
  scanf("%lf", &dollar_ent);
  printf("Name - Assignment 2 - Change-O-Matic\n\n");
  printf("Amount entered:  $%.2lf\n\n", dollar_ent);
  dollar_ent *= 100;


  for(i = 0; denoms[i]; i++) {
    twenties = (dollar_ent / denoms[i]);
    if (twenties >=2)
      printf("%.0d\t$%.02f's\n", twenties, denoms[i] / 100.);
    if (twenties == 1)
      printf("%.0d\t$%.02f\n", twenties, denoms[i] / 100.);
    dollar_ent -= twenties * denoms[i];
  }
}
考虑将其替换为循环:

for ( some expression that takes on each value in turn ) {
  the identical code, with the values replaced by variables;
}

是的,使用循环更容易。但您需要一个阵列来配合它:

#include <stdio.h>

static int denoms[] = {
    2000,
    1000,
     500,
     100,
      25,
      10,
       5,
       1,
       0
};

int main () {
  double dollar_ent;
  int i;
  int twenties;

  printf("Please enter a dollar amount up to 100:  ");
  scanf("%lf", &dollar_ent);
  printf("Name - Assignment 2 - Change-O-Matic\n\n");
  printf("Amount entered:  $%.2lf\n\n", dollar_ent);
  dollar_ent *= 100;


  for(i = 0; denoms[i]; i++) {
    twenties = (dollar_ent / denoms[i]);
    if (twenties >=2)
      printf("%.0d\t$%.02f's\n", twenties, denoms[i] / 100.);
    if (twenties == 1)
      printf("%.0d\t$%.02f\n", twenties, denoms[i] / 100.);
    dollar_ent -= twenties * denoms[i];
  }
}
考虑将其替换为循环:

for ( some expression that takes on each value in turn ) {
  the identical code, with the values replaced by variables;
}

考虑在数组中加入面额计数。如使用<代码> 0 < /代码>和<>代码>(…,DeNoMS[i];…< /Cord>)。考虑将面额计数放入数组中。如使用<代码> 0 < /代码>和<代码>(…;DeNoM[i];…< /代码>)。类似于