设计思路
根据计算可看出以下规律:
买6本书时,买5本一套和单买1本是最低价。
买7本书时,买5本一套和2本一套是最低价。
买8本书时,买两套4本的是最低价。
买9本书时,买5本一套和4本一套是最低价。
所以当买书的数量mol5余3时是特殊情况,其余情况都有规律可循。
当余3时有两种情况。
第一种情况是只买3本,直接输出买3本一套的价钱就OK。
第二种情况可以是买8本、13本、18本……买书的数量先减去8计算买5本一套的价钱后再加上买两套4本的价钱即是最低价。
源程序代码
1 #include <iostream> 2 using namespace std; 3 4 void main() 5 { 6 int n,a,b; 7 double min; 8 cout<<"请输入购买书的数量:"; 9 cin>>n; 10 a=n%5; 11 if (a==0) 12 { 13 min=(n-a)/5*(8*5)*0.75; 14 } 15 if (a==1) 16 { 17 min=(n-a)/5*(8*5)*0.75+8; 18 } 19 if (a==2) 20 { 21 min=(n-a)/5*(8*5)*0.75+15.2; 22 } 23 if (a==3) 24 { 25 if (n==3) 26 { 27 cout<<"最低价格是:21.6"<<endl; 28 exit(0); 29 } 30 min=(n-8)/5*(8*5)*0.75+51.2; 31 } 32 if (a==4) 33 { 34 min=(n-a)/5*(8*5)*0.75+25.6; 35 } 36 cout<<"最低价格是:"<<min<<endl; 37 }
运行结果截图
编程总结
解决该问题编程不是首要难题,利用数学方法该怎么计算是主要的难点,先利用数学思想考虑问题,只要思路对了,编程过程很简单。所以编程之前需要有足够的时间考虑问题!