(1)题目:
n书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元, 具体折扣如下所示 本数 2,折扣5%;本数 3,折扣10%;本数4 ,折扣20%;本数5,折扣25%;根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。
(2)解题思路:
在对这题目的解答时在所买数目比5本多时,通过对6本,7本,8本,9本书的计算,可以知道仅有8本书时分别的四本书比较便宜,而别的情况下都可以先计算5本书的整数和即其价格然后计算剩下的5以下数目的书的价格,在总书数(n)除5余数为3时,购买n/5-1套书即两个4本不同书;其他情况下购买n/5套数即余数本书。
(3)
1 #include<iostream> 2 using namespace std; 3 4 int main() 5 { 6 int i, j, k,u; 7 double c; 8 cout << "请输入您要买几本书:"; 9 cin >> i; 10 int a = i / 5; 11 u = a; 12 k = i % 5; 13 if (a == 0 && k == 3) 14 { 15 c = k * 8 * 0.9; 16 cout << "买" << i << "本数所用最少钱数为" << c << endl << endl;; 17 cout << "其中买了3本书" << endl; 18 } 19 if (a!=0&&k==3) 20 { 21 c = 4 * 0.8 * 8*2; 22 u = a - 1; 23 double b = u * 5 * 8 * 0.75; 24 cout << "买" << i << "本数所用最少钱数为" << c + b << endl << endl;; 25 cout << "其中买了" << u << "套书,两个不同的四本书" << endl; 26 27 } 28 else if (k == 4) 29 { 30 c = k * 8 * 0.8; 31 double b = u * 5 * 8 * 0.75; 32 cout << "买" << i << "本数所用最少钱数为" << c + b << endl << endl; 33 cout << "其中买了" << u << "套书和" << k << "个不同的书" << endl; 34 } 35 else 36 { 37 c = k*8*(1 - (k - 1)*0.05); 38 double b = u * 5 * 8 * 0.75; 39 cout << "买" << i << "本数所用最少钱数为" << c + b << endl << endl; 40 cout << "其中买了" << u << "套书和" << k << "个不同的书"<<endl; 41 } 42 43 return 0; 44 }
(4)截图:
(5)总结:
在本次编程过程中在余数为3时出现了错误,因为一直考虑8本书时情况,只想了在5本书以上时余数为3时的情况,后来发现错误又将只买3本书的情况进行分析。
时间: 2024-11-10 00:19:49