软件工程个人作业14
思路:(其中X套书指的是X套一模一样的套书;Y本书指Y本一样的书且和前面的套书里的一本一样)
买一本书时,只有一种情况,8元;
买两本书时,有2种情况:1. 买2本一样的书,2*8=16元
2. 买1套2本的书,2*8-2*8*5%=15.2
买三本书时,有3种情况:1. 买3本一样的书,3*8=24元
2. 买1套2本的书和1本书的书,3*8-8*2*5%=23.2
3. 买1套3本的,8*3-3*8*10%=21.6
买四本书时,有4种情况:1. 买4本一样的书,4*8=32元
2. 买1套2本的书和2本书的书,8*4-2*8*5%=31.2
3. 买2套2本的书,8*4-8*2*2*5%=30.4
4. 买1套3本的书和1本书的书,8*4-8*3*10%=29.6
5. 买1套4本的书,8*4-8*4*20%=25.6
买5本书时,有7种情况:1. 买5本一样的书,5*8=40元
2. 买1套2本的书和3本一样的书,8*5-2*8*5%=39.2
3. 买2套2本的书和1本书的书,8*5-8*2*2*5%=38.4
4. 买1套3本的书和2本一样的书,8*5-8*3*10%=37.6
5. 买1套3本的书和1套2本的书和1套3本里的书重复的书,8*5-8*3*10%-8*2*5%=36.8
6. 买1套4本的书和1本书的书,8*5-8*4*20%=33.6
7. 买1套5本的书,8*5-8*5*25%=30
买6本书时,有10种情况:1. 买6本一样的书,6*8=48元
2. 买1套2本的书和4本一样的书,,6*8-2*8*5%=47.2
3. 买2套2本的书和2本一样的书,6*8-2*8*2*5%=46.4
4. 买3套2本的书,6*8-3*8*2*5%=45.6
5. 买1套3本的书和3本一样的书,6*8-3*8*10%=45.6
6. 买1套3本的书和1套2本的书和1套3本里的书重复的书和1本书,6*8-3*8*10%-8*2*5%=44.8
7. 买2套3本的书,6*8-2*8*3*10%=43.2
8. 买1套4本的书和2本一样的书,6*8-8*4*20%=41.6
9. 买1套4本的书和一套2本且和1套4本里的书重复的书,6*8-8*4*20%-8*2*5%=40.8
10. 买1套5本的书和1本书的书,6*8-8*5*25%=38
买7本书时,有13种情况:1. 买7本一样的书,7*8=56元
2. 买1套2本的书和5本一样的书,,7*8-2*8*5%=55.2
3. 买2套2本的书和3本一样的书,7*8-2*8*2*5%=54.4
4. 买3套2本的书和1本书,7*8-3*8*2*5%=53.6
5. 买1套3本的书和4本一样的书,7*8-3*8*10%=53.6
6. 买1套3本的书和1套2本的书且和1套3本里的书重复的书和2本一样的书,7*8-3*8*10%-8*2*5%=52.8
7. 买1套3本的书和2套2本的书且和1套3本里的书重复的书,7*8-3*8*10%-2*8*2*5%=52
8. 买2套3本的书和1本书,7*8-2*8*3*10%=51.2
9. 买1套4本的书和3本一样的书,7*8-8*4*20%=49.6
10. 买1套4本的书和一套2本且和1套4本里的书重复的书和1本书,7*8-8*4*20%-8*2*5%=48.8
11. 买一套4本的书和一套3本且和1套4本里的书重复的书,7*8-8*4*20%-8*3*10%=47.2
12. 买1套5本的书和2本一样的书,7*8-8*5*25%=46
13. 买1套5本的书和1套2本且和1套5本里的书重复的书,
7*8-8*5*25%-8*2*5%=45.2
由此可见,购买的每套图书里的本数最多,折扣越大,价格越低。
源程序:
package book; import java.util.InputMismatchException; import java.util.Scanner; public class book { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc =new Scanner(System.in); int bug=0; //输入错误时的判断 int ts=0; //可以将书分为ts套5本的图书 int ys=0; //分为ts套5本的图书以后剩下的图书可以分为1套ys本的图书 int num=0; //图书的本数 String jg="最少的价钱是:"; //结果 System.out.println("请输入购买图书的本数:(必须是大于0的正整数)"); try //判断输入是否错误 { num=sc.nextInt(); } catch(InputMismatchException e) //捕捉输入错误 { System.out.println("输入不合法!请输入整数!"); bug=1; } if(bug!=1) //输入正确时 { ts=num/5; //可以将书分为ts套5本的图书 ys=num%5; //分为ts套5本的图书以后剩下的图书可以分为1套ys本的图书 /*计算结果*/ if(ys==0) { jg+=8*num-8*5*0.25*ts; } if(ys==1) { jg+=8*num-(ts*8*5*0.25+8); } if(ys==2) { jg+=8*num-(ts*8*5*0.25+8*2*0.05); } if(ys==3) { jg+=8*num-(ts*8*5*0.25+8*3*0.1); } if(ys==4) { jg+=8*num-(ts*8*5*0.25+8*4*0.2); } System.out.println(jg); } } }
截图:
个人总结:
本次程序要找到规律就很简单,锻炼了我的思考能力。