4月14号周二课堂练习:买书最优问题

一、问题提出

书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元, 具体折扣如下所示:

本数                   折扣

2                       5%

3                       10%

4                       20%

5                       25%

二、题目要求

1、根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。

2、设计算法能够计算出读者购买一批书的最低价格。

3、要求将设计思想、代码实现、实现截图、个人总结以博文的形式发表。

三、设计思想

根据折扣和买书数量可以知道:当买书量大于10本时,将数量进行求余,算出当买6、7、8、9、本书时的最小价格,其余能够被5整除的直接用买5套的折扣价即可。

四、源程序

#include<iostream>
using namespace std;
int priceLowest;
void f(int bookNum)
{
	int N;
	if(bookNum<5)
		N=bookNum;
	else
		N=bookNum%5+5;
	switch(N)
	{
		case 0:
		case 5:
			priceLowest=(bookNum-N)*8*0.75+5*8*0.75;
			break;
		case 1:
		case 6:
			priceLowest=(bookNum-N)*8*0.75+5*8*0.75+8;
			break;
		case 2:
		case 7:
			priceLowest=(bookNum-N)*8*0.75+5*8*0.75+2*8*0.95;
			break;
		case 3:
			priceLowest=(bookNum-N)*8*0.75+5*8*0.75+3*8*0.9;
			break;
		case 8:
			priceLowest=(bookNum-N)*8*0.75+4*8*0.8*2;
			break;
		case 4:
		case 9:
			priceLowest=(bookNum-N)*8*0.75+5*8*0.75+4*8*0.8;
			break;
		default:
			cout<<"Error!"<<endl;

	}
}
void main()
{
	int bookNum;
	cout<<"请输入购买数量:";
	cin>>bookNum;
	f(bookNum);
	cout<<"最低价格为:"<<priceLowest<<endl;
}

五、程序截图

六、实验总结

本次实验的主要难点是讲实际问题抽象成一般的数学问题,然后再讲数学问题转化成逻辑的问题一遍用程序进行表现。本题的主要难点,是将实际问题转化成数学问题的过程。本题主要处理的数据是当买的书的数量是6、7、8、9本时,进行相应的处理。转化成逻辑的问题,直接用switch语句进行处理即可。

时间: 2024-10-13 02:43:56

4月14号周二课堂练习:买书最优问题的相关文章

3月10号周二课堂练习:四则运算二

一.题目新的要求 1.题目避免重复: 2.可定制(数量/打印方式): 3.可以控制下列参数: 是否有乘除法.是否有括号. 数值范围.加减有无负数.除法有无余数.否支持分数 (真分数, 假分数, …).是否支持小数 (精确到多少位).打印中每行的间隔可调整: 二.设计思想(将自己上次上课时的设计思想进行稍微的修改) 1.判断两次随机数是否相同    使用函数srand()保证两个随机数不同 2.多加入一个变量,来控制题目数量 3.在每一个switch选择的语句,进行选择判断  3.1选择是否有乘除

4月28号周二课堂练习:求“1”的个数

一.题目要求 给定一个十进制的正整数,写下从1开始,到N的所有整数,然后数一下其中出现“1”的个数. 要求: 1.写一个函数 f(N) ,返回1 到 N 之间出现的 “1”的个数.例如 f(12)  = 5. 2.在32位整数范围内,满足条件的“f(N) =N”的最大的N是多少. 二.设计思路 (1)一位数时 f(0)=0;f(1)=1;f(2-9)=1; (2)二位数时 f(10)=1+(0+1)=2; f(11)=(1+1)+(1+1)=4; f(12)=(1+1)+(2+1)=5; f(1

4月7号周二课堂练习:NABC

团队项目——7-magic 分析特点:游戏简单容易上手 NABC分析: N(needs需求)现在存在的很多游戏操作比较,游戏规则也比较繁琐,用户很难或者不愿意去玩操作难度比较大的游戏,容易上手的游戏比较有吸引力.现有的七巧板游戏可玩性很小,游戏难度很小,没有挑战性,用户没有挑战的快感和乐趣.我们的游戏恰恰解决了这个问题. A (Approach 做法)7-magic游戏上手很简单,毕竟七巧板都玩过,就算没有玩过,稍微了解一下游戏规则就可以上手玩了.上手容易但是如果想过关,或者得更高的分数确实很难

4月21号周二课堂练习:找水王

一.题目要求 三人行设计了一个灌水论坛.信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子.坊间风闻该“水王”发帖数目超过了帖子数目的一半.如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗? 二.设计思路 论坛中有多少帖子,有多少个ID都是不清楚的.我们采用类似于消消乐的方法进行处理,具体方法如下:将所有的帖子进行遍历,比较两个帖子的ID.如果两个帖子的ID相同,则将两个帖子丢弃.

3月24号周二课堂练习:结对开发----返回一个整数数组中最大子数组的和二

一.题目要求 1.1要求程序必须能处理1000 个元素: 1.2每个元素是int32 类型的: 1.3输入一个整形数组,数组里有正数也有负数. 1.4数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 1.5求所有子数组的和的最大值.要求时间复杂度为O(n). 二.源代码 #include<iostream> #include<time.h> #include<conio.h> #define N 100000 using namespace std; v

3月31号周二课堂练习:结对开发----求二维数组组成的矩阵中子矩阵的最大值二

一.题目要求 1.1输入一个二维整形数组,数组里有正数也有负数. 1.2二维数组首尾相接,象个一条首尾相接带子一样. 1.3数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 1.4求所有子数组的和的最大值.要求时间复杂度为O(n). 二.结对要求 2.1两人结对完成编程任务. 2.2一人主要负责程序分析,代码编程. 2.3一人负责代码复审和代码测试计划. 2.4发表一篇博客文章讲述两人合作中的过程.体会以及如何解决冲突(附结对开发的工作照). 三.设计过程 上次已经算过二维数组中

3月10号周二课堂练习:关于自动生成四则运算题目的程序的延伸

对题目要求进行初步的分析: 1.判断两次随机数是否相同    将产生的题目保存(循环)下来,然后将结果进行(循环)比较. 2.多加入一个变量Num,来控制题目数量 3.在每一个switch选择的语句,进行选择判断  3.1选择是否有乘除法,  3.2是否有括号 判断是否加减乘除是否都存在,加减在算式中的位置,然后进行选择是否添加括号 3.3数值范围 主要控制随机数产生器模余的大小(如a=rand()%n,n可以取任意值)    3.4加减有无负数 比较减数和被减数的大小  3.5除法有无余数 将

4月17号周五课堂练习:电梯最优问题

一.题目要求 石家庄铁道大学基础大楼一共有四部电梯,每层都有人上下,电梯在每层都停.信1201-1班的张一东觉得在每层都停觉得不耐烦. 由于楼层不太高,在上下课高峰期时时,电梯从一层上行,但只允许停在某一楼层.在一楼时,每个乘客选择自己的目的层,电梯则自动计算出应停的楼层. 问电梯停在那一楼层,能够保证这次乘坐电梯的所有乘客爬楼梯的层数之和最少. 二.设计思想设第一个人按l1楼层,第二个人按l2楼层……第n个人按ln楼层.设最优的层数为x设计思路一:求绝对值得最小值min=|l1-x|+|l2-

6月14号=》136页-145页

6.3.6 包含选择器 代码示范: //该样式仅对该父元素所指定的子元素起作用 父元素 父元素包含的元素{ 定义对该元素起作用的css样式 } 6.3.7 css3新增的兄弟选择器 代码示范: //该样式仅对某元素后面的兄弟元素起作用 某元素 ~ 某元素后面的兄弟元素{ 定义对该元素起作用的css样式 } 6.3.8 选择器组合 代码示范: //该样式对下列所有指定的元素起作用 元素1,元素2,元素3,元素4,元素5,{ 定义对该元素起作用的css样式 } 6.4 伪元素选择器 伪元素选择器并不