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