3.13找零钱最佳组合

实验二:找零钱最佳组合

实现代码

java

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)

 
posted @ 2025-03-27 09:22    阅读(15)  评论(0)    收藏  举报