3.13找零钱最佳组合
实验二:找零钱最佳组合
实现代码
import java.util.Scanner;
public class ChangeCalculator {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入商品价格(1-100元):");
int price = scanner.nextInt();
System.out.println("请输入付款金额(1-100元):");
int payment = scanner.nextInt();
if (price < 1 || price > 100 || payment < 1 || payment > 100) {
System.out.println("输入金额必须在1-100元之间");
return;
}
if (payment < price) {
System.out.println("付款金额不足");
return;
}
int change = payment - price;
System.out.println("应找零: " + change + "元");
int n50 = change / 50;
change = change % 50;
int n10 = change / 10;
change = change % 10;
int n5 = change / 5;
change = change % 5;
int n1 = change;
System.out.println("找零组合:");
System.out.println("50元: " + n50);
System.out.println("10元: " + n10);
System.out.println("5元: " + n5);
System.out.println("1元: " + n1);
}
}
找零钱最佳组合
假设商店货品价格(R) 都不大于100元(且为整数),若顾客付款(P)在100元内,现有一个程序能在每位顾客付款后给出找零钱的最佳组合(找给顾客货币张数最少)。 假定此商店的货币面值只包括:50元(N50)、10元(N10)、 5元(N5)、1元(N1) 四种。
请结合等价类划分法和边界值分析法为上述程序设计 出相应的测试用例。
实验步骤:
① 设计程序
② 划分等价类,得到等价类表。
|
输入条件 |
有效等价类 |
唯一标识 |
无效等价类 |
唯一标识 |
|
商品价格(R) |
1 ≤ R ≤ 100 |
V1 |
R < 1 或 R > 100 |
I1 |
|
付款金额(P) |
1 ≤ P ≤ 100 |
V2 |
P < 1 或 P > 100 |
I2 |
|
金额关系 |
P ≥ R |
V3 |
P < R |
I3 |
|
找零金额 |
0 ≤ (P-R) ≤ 99 |
V4 |
(P-R) < 0 |
- |
|
找零组合 |
使用50,10,5,1元最优组合 |
V5 |
- |
- |
③ 运用等价类划分法设计测试用例,得到测试用例表。
|
序号 |
输入数据(价格,付款) |
覆盖等价类 |
预期输出(50,10,5,1) |
|
1 |
(45, 50) |
V1,V2,V3,V4,V5 |
(1,0,1,0) |
|
2 |
(99, 100) |
V1,V2,V3,V4,V5 |
(0,0,0,1) |
|
3 |
(1, 100) |
V1,V2,V3,V4,V5 |
(1,4,1,4) |
|
4 |
(50, 50) |
V1,V2,V3,V4,V5 |
(0,0,0,0) |
|
5 |
(0, 50) |
I1 |
错误提示 |
|
6 |
(101, 150) |
I1,I2 |
错误提示 |
|
7 |
(60, 50) |
I3 |
错误提示 |
④ 运用边界值法设计测试用例。
|
序号 |
输入数据(价格,付款) |
测试描述 |
预期输出(50,10,5,1) |
|
1 |
(1, 1) |
最小金额,不找零 |
(0,0,0,0) |
|
2 |
(100, 100) |
最大金额,不找零 |
(0,0,0,0) |
|
3 |
(1, 100) |
最大找零(99元) |
(1,4,1,4) |
|
4 |
(50, 100) |
刚好使用50元 |
(1,0,0,0) |
|
5 |
(95, 100) |
刚好使用5元 |
(0,0,1,0) |
|
6 |
(99, 100) |
刚好使用1元 |
(0,0,0,1) |
|
7 |
(89, 100) |
组合使用10+1元 |
(0,1,0,1) |
|
8 |
(44, 50) |
组合使用5+1元 |
(0,0,1,1) |
|
9 |
(35, 50) |
组合使用10+5元 |
(0,1,1,0) |
|
10 |
(25, 50) |
组合使用10+10+5元 |
(0,2,1,0) |
|
11 |
(51, 100) |
组合使用50+10+10+10+5+1+1+1+1 |
(1,3,1,4) |

浙公网安备 33010602011771号