一题目:
书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元, 具体折扣如下所示:
本数 折扣
2 5%
3 10%
4 20%
5 25%
根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。 设计算法能够计算出读者购买一批书的最低价格。
二设计思想
1=1 6=5+1
2=2 7=5+2
3=3 8=4+4
4=4 9=5+4
5=5 10=5+5
……………………
2.1按上面进行循环所以采用取余的方法,计算最合适的价格。
2.2在此算法中,购买8本时比较特殊,4+4组合最合适,即买两套4本不同的书。
2.3具体计算价格时是以5个一循环(五本不同折扣最大),
2.4取余五剩下的本数按不同书计算,相加即为最合适的价格。
三代码实现
package 找水王; import java.util.InputMismatchException; import java.util.Scanner; public class GS { public static void main(String[] args) { for(;;) //按照用户需求无限循环 { int num=0,judge=0;double price=0; Scanner in=new Scanner(System.in); System.out.println("请输入要买书的本数:"); try //捕捉输入错误 { num=in.nextInt(); } catch(InputMismatchException e) { System.out.println("输入不合法!请输入整数!"); judge=1; } int temp=num/5; if(num%10==1) { price=temp*5*8*0.75+8; } else if(num%10==2) { price=temp*5*8*0.75+8*2*0.95; } else if(num%10==3) { price=temp*5*8*0.75+8*3*0.9; }else if(num%10==4) { price=temp*5*8*0.75+8*4*0.8; }else if(num%10==5) { price=temp*5*8*0.75; }else if(num%10==6) { price=temp*5*8*0.75+8; }else if(num%10==7) { price=temp*5*8*0.75+8*2*0.95; }else if(num%10==8) { price=temp*4*8*0.8+8*4*0.8; }else if(num%10==9) { price=temp*5*8*0.75+8*4*0.8; }else if(num%10==0) { price=num*8*0.75; } if(judge!=1) System.out.println("最低价格是:"+price); } } }
四 实验截图
8本
19本
999本
五个人总结
本次规律可以找出来,但考虑问题的想法还不够周全,编程能力不足。