一、题目
书店针对《哈利波特》系列书籍进行促销活动,一共5卷,单独一卷售价8元,具体折扣如下:本数对应的折扣分别为:2本—5%,3本—10%,4本—20%,5本—25%。根据购买的卷数以及本数,会对应不同的折扣规则情况。单独一本书只会对应一个折扣规则。设计算法能够计算出读者购买一批书的最低价格。
二、思路
以10本为基础,只用求余数的最优价格即可——只需考虑10本以内的。对于5本及5本以内的直接乘上折扣即可,对于超过5本的,则考虑情况,例如7本分为3,4。1,6.两种情况。用for循环列出所有情况,将值存入数组。比较大小求出最小值。在加上10本的基础价格。即可。
三、源代码
#include<iostream.h> double f1(int i) { double a; switch(i) { case 5: a=0.75;break; case 4: a=0.80;break; case 3: a=0.90;break; case 2: a=0.95;break; case 1: a=1.0;break; } return a; } int main() { int numyu,num10,s,i; double c; double sum; int BookNum; cout<<"输入购买本数:"; cin>>BookNum; numyu=BookNum%10; num10=BookNum/10; sum=num10*10*8*0.75; double sum1,sum2; double b[10]; int p=0; if(numyu>5) { for(i=5;i>=(numyu+1)/2;i--) { c=f1(i); sum1=c*i*8; c=f1(numyu-i); sum2=c*(numyu-i)*8; b[p++]=sum1+sum2; } double min=b[0]; for(i=1;i<p;i++) { if(min>b[i]) { min=b[i]; } } cout<<"最低购买:"<<min+sum; } else { c=f1(numyu); sum1=numyu*8*c; cout<<"最低购买:"<<sum1+sum; } return 0; }
四、实验截图
五、实验总结
本次实验刚开始遇到如何根据书本数目返回折扣值,最终用switch的方法将五种折扣方案返回。对于此次实验不满意的地方就是
我写的时候没有养成写注释的习惯,这应该是差大弊端。在以后的实验中会将注释方面做个重点,强迫自己的思路有条目,而不是盲
目的敲代码。
时间: 2024-10-09 23:38:37