编写程序,读取用户输入的代表总金额的double值,打印表示该金额所需的最少纸币张数和硬币个数,打印从最大金额开始。纸币的种类有十元、五元、一元,硬币的种类有五角、一角、贰分、壹分。
时间: 2023-05-25 08:05:16 浏览: 103
思路:
1.先定义纸币种类和硬币种类的面值数组,以及对应数组的名称。
2.读取用户输入的金额,将其转为整型以方便计算,再将其除以100转为元,方便后续的计算。
3.从最大面值的纸币开始遍历,如果当前纸币面值小于总金额并且当前面值的纸币张数不为0,则打印出该种纸币的张数。
4.找零后,从最大面值的硬币开始遍历,如果当前硬币面值小于总金额并且当前面值的硬币数量不为0,则打印出该种硬币的数量。
5.循环结束后,输出纸币和硬币的数量。
代码如下:
相关问题
java编写程序,读取用户输入的代表总金额的double值,打印表示该金额所需的最少纸币张数和硬币个数,打印从最大金额开始。纸币的种类有十元、五元、一元,硬币的种类有五角、一角、贰分、壹分。
好的,这是一个比较典型的找零问题,以下是Java代码实现:
```
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入总金额:");
double totalMoney = scanner.nextDouble();
int[] paperMoneyValues = {10, 5, 1};
int[] coinValues = {50, 10, 2, 1};
int[] paperMoneyCounts = new int[3];
int[] coinCounts = new int[4];
int totalCents = (int) (totalMoney * 100);
for (int i = 0; i < paperMoneyValues.length; i++) {
paperMoneyCounts[i] = totalCents / (paperMoneyValues[i] * 100);
totalCents = totalCents % (paperMoneyValues[i] * 100);
}
for (int i = 0; i < coinValues.length; i++) {
coinCounts[i] = totalCents / coinValues[i];
totalCents = totalCents % coinValues[i];
}
System.out.println("最少纸币张数和硬币个数为:");
for (int i = 0; i < paperMoneyValues.length; i++) {
System.out.println(paperMoneyValues[i] + "元纸币:" + paperMoneyCounts[i] + "张");
}
for (int i = 0; i < coinValues.length; i++) {
if (i == 0) {
System.out.println("五角硬币:" + coinCounts[i] + "个");
} else if (i == 1) {
System.out.println("一角硬币:" + coinCounts[i] + "个");
} else if (i == 2) {
System.out.println("贰分硬币:" + coinCounts[i] + "个");
} else {
System.out.println("壹分硬币:" + coinCounts[i] + "个");
}
}
}
}
```
代码解释:
1. 首先,通过`Scanner`读取用户输入的总金额。
2. 定义纸币与硬币的面值和张数数组。
3. 将总金额转换为总的硬币个数(即总分数),并且计算纸币和硬币的张数和个数。
4. 输出结果。
注意事项:
1. 硬币面值需要乘以100,转换为分数进行计算。
2. 由于硬币面值数组是从大到小排列的,所以可以从大到小依次计算硬币个数,这样可以尽可能减少硬币的数量。
3. 最后输出硬币面值的时候,需要将硬币面值数组中的值与硬币名称对应输出。
希望能对您有所帮助!
编写java程序,读取用户输入的代表总金额的double值,打印表示该金额所需的最少纸币张数和硬币个数,打印从最大金额开始。纸币的种类有十元、五元、一元,硬币的种类有五角、一角、贰分、壹分。
答案:首先,使用Scanner类获取用户输入的double值,并将其存储在变量中。然后,使用while循环从最大的金额(十元)开始,每次循环中用用户输入的值减去当前金额,计算出最大金额纸币的张数,即可计算出纸币所需的最少张数。然后,使用if语句判断当前金额剩余的值,再根据硬币的种类计算出硬币所需的最少个数,最后打印出纸币和硬币所需的数量。