折半查找法猜篮球的价格.docx
《折半查找法猜篮球的价格.docx》由会员分享,可在线阅读,更多相关《折半查找法猜篮球的价格.docx(12页珍藏版)》请在冰豆网上搜索。
折半查找法猜篮球的价格
课程设计
学号
班级
姓名
指导教师
2008年9月12日
课程设计任务书
题目:
用折半查找法猜篮球的价格
一、课程设计时间
2008年9月8日至2008年9月12日,共计1周,20学时。
二、课程设计内容
用C语言编写软件完成以下任务:
用户从键盘输入篮球的价格(假设价格在1~200元之间,并且为整数),让计算器从1元开始用折半法猜测篮球的价格。
若计算器的猜测价格偏高,用户输入“高”;若计算器的猜测价格偏低,用户就输入“低”;若计算器猜对了,则显示“正确”。
三、课程设计要求
1.程序质量:
✧贯彻结构化的程序设计思想。
✧用户界面友好,功能明确,操作方便。
✧用户界面中的菜单至少应包括“输入篮球价格”、“计算器开始猜测”、“退出”3项。
✧代码应适当缩进,并给出必要的注释,以增强程序的可读性。
2.课程设计说明书:
课程结束后,上交课程设计说明书和源程序。
课程设计说明书的格式和内容参见提供的模板。
四、指导教师和学生签字
指导教师:
________学生签名:
________
五、成绩:
六、教师评语:
目录
一、需求分析1
二、程序流程图2
三、核心技术的实现说明及相应程序段5
四、个人总结7
五、参考文献8
六、源程序8
一、需求分析
经过对程序设计题目的分析可知,整个程序的设计实现大致分为三个模块,其中每一个模块对应一个函数,他们的功能分别是:
输入篮球价格函数(getprice),猜测篮球价格函数(guessprice),以及主函数(main)。
1、输入篮球价格函数主要实现程序最初运行时用户对篮球价格的设定(价格在1-200元之间,并且为整数);
2、猜测篮球价格函数实现的功能是让计算器从1元开始用折半法猜测篮球的价格。
若计算器的猜测价格偏高,用户输入“高”;若计算器的猜测价格偏低,用户就输入“低”;若计算器猜对了,则显示“正确”。
;
3、主函数实现的是程序界面的打印,以及根据用户输入的指令实现功能函数的调用。
二、程序流程图
1、程序总体结构图
图1程序总体结构图
图1程序总体结构图
2、具体功能框图
(1)输入篮球价格函数(getprice)
定义变量初始化
当输入价格不在1-200元以内
提示用户输入篮球价格
输入价格给变量price
把price值带回主函数
图2添加学生数据函数
图2输入篮球价格函数流程图
(2)猜测篮球价格函数(guessprice)
变量初始化
mid=(low+high)/2;当赋给mid的值不等于真实价格时
输入字符串判断是否偏高
是
否
把mid+1的值赋值
给low变量
把mid-1的值赋值
给high变量
图3猜测篮球价格函数流程图
三、核心技术的实现说明及相应程序段
本程序主要由两个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其它函数来实现要求的所有功能。
在这些函数当中,输入篮球价格函数和猜测篮球价格函数是程序中较为核心的部分,下面进行说明。
1、输入篮球价格函数
用户输入一个价格,对这个PRICE进行讨论。
把价格限制在1—200内,如不在这个范围内的话会输出:
“请输入价格(在1~200元之间,并且为整数):
”直到输入的在1-200之间才会进行运算。
intgetprice(void)
{
intprice;
while(price<1||price>200)
{
printf("请输入价格(在1~200元之间,并且为整数):
");
scanf("%d",&price);
}
return(price);
}
图4程序主界面
2、猜测篮球价格函数
定义了两个整型变量,low,high.这分别是1,200。
用折半法来运算:
while((mid=(low+high)/2)!
=price),如果猜测的比实际的高了。
你就输入“高”,若低了你就输入“低”。
具体的程序段如下:
voidguessprice(intprice)
{
intmid,low=1,high=200;
chars[20]={""};
while((mid=(low+high)/2)!
=price)
{
printf("计算机猜测的价格是:
%d\n",mid);
printf("如果价格高,请输入“高”;如果价格低,请输入“低”\n");
if(strcmp(gets(s),"高")==0)
high=mid-1;
elseif(strcmp(s,"低")==0)
low=mid+1;
}
printf("猜测结果正确,篮球的价格是%d\n",mid);
}
图5程序运行截图
四、个人总结
在这次课设中我对计算机的c语言程序设计学习又有了更深的认识。
单独面对课题时根本没有思路,比如说什么叫折半法,是通过老师讲解才知道是什么原理,学会利用图书馆的相关资料去帮助我的题目,在老师的帮助和指导下,让我学到了程序的运行等等。
通过这次课设,让我知道计算机的程序还有很多要学习和理解的,它对日后的的毕业设计和工作都会有帮助的,我会继续努力的。
五、参考文献
1谭浩强.C程序设计.北京:
清华大学出版社,2007
2刘振安等.C程序课程设计.机械工业出版社.2004
六、源程序
#include
#include
#include/*为exit函数所在的头文件*/
#include/*为getch函数所在的头文件*/
voidmenu();
intgetprice(void)
{
intprice;
while(price<1||price>200)
{
printf("请输入价格(在1~200元之间,并且为整数):
");
scanf("%d",&price);
}
return(price);
}
voidguessprice(intprice)
{
intmid,low=1,high=200;
chars[20]={""};
while((mid=(low+high)/2)!
=price)
{
printf("计算机猜测的价格是:
%d\n",mid);
printf("如果价格高,请输入高;如果价格低,请输入低\n");
if(strcmp(gets(s),"高")==0)
high=mid-1;
elseif(strcmp(s,"低")==0)
low=mid+1;
}
printf("猜测结果正确,篮球的价格是%d\n",mid);
}
main()
{
intprice;
printf
("****************************************************\n"
"*****************************************************\n"
"***********欢迎使用折半查找法猜篮球价格程序**********\n"
"*****************************************************\n"
"******************输入s输入篮球价格*****************\n"
"********************输入u开始猜测*******************\n"
"********************输入n退出程序*******************\n"
"***************************************************\n");
while
(1)
switch(getch())
{
case's':
price=getprice();break;
case'u':
guessprice(price);break;
case'n':
exit(0);
}
}