您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 市场营销 > 用折半查找法猜篮球的价格
沈阳航院设计用纸I题目:用折半查找法猜篮球的价格一、课程设计时间2010~11第2学期第15周,共计1周,20学时。二、课程设计内容用C语言编写软件完成以下任务:用户从键盘输入篮球的价格(假设价格在1~200元之间,并且为整数),让计算器从1元开始用折半法猜测篮球的价格。若计算器的猜测价格偏高,用户输入“高”;若计算器的猜测价格偏低,用户就输入“低”;若计算器猜对了,则显示“正确”。三、课程设计要求1.程序质量:贯彻结构化的程序设计思想。用户界面友好,功能明确,操作方便。用户界面中的菜单至少应包括“输入篮球价格”、“计算器开始猜测”、“退出”3项。代码应适当缩进,并给出必要的注释,以增强程序的可读性。2.课程设计说明书:课程结束后,上交课程设计说明书和源程序。课程设计说明书的格式和内容参见提供的模板。四、指导教师和学生签字指导教师:________学生签名:________五、成绩:六、教师评语:沈阳航院设计用纸II目录一、需求分析............................................................1二、设计要求............................................................2三、主要界面截图....................................................4四、技术要点............................................................8五、个人总结............................................................9六、参考文献............................................................9七、源程序............................................................8沈阳航院设计用纸1一、需求分析经过对程序设计题目的分析可知,整个程序大致分为三个模块,其中每一个模块对应一个函数,实现一个功能,他们的功能分别是:篮球价格获取函数(get),出现目录的输出函数(menu),篮球价格猜测函数(guess),以及主函数(main)。1、篮球价格获取函数…主要实现程序最初运行时用户对篮球价格的设定(要求价格在1-200元之间,并且为整数,若超出范围则提示重新输入);2、目录输出函数…在程序运行时输出目录,使用户界面更加友好3、篮球价格猜测函数…实现的功能是让计算器从1元开始用折半法猜测篮球的价格。若计算器的猜测价格偏高,用户输入“g”;若计算器的猜测价格偏低,用户就输入“d”;若计算器猜对了,则显示“正确”。;沈阳航院设计用纸2二、设计分析1、程序总体结构图2、具体功能框图(1)篮球价格获取函数(get)定义变量初始化当输入价格不在1-200元以内提示用户输入篮球价格输入价格给变量price把price值返回给guess函数定义变量charc,intprice将getch()函数的返回值赋给cchoice=3choice=1否是是choice=2否输入篮球价格猜测价格退出main函数沈阳航院设计用纸3(2)篮球价格猜测函数(guess)变量初始化m=(l+h)/2;当赋给m的值不等于真实价格时输入字符串判断是否偏高“g”“d”把m-1的值赋值给h变量把m+1的值赋值给l变量沈阳航院设计用纸4三、主要界面截图输出“猜测正确”沈阳航院设计用纸5沈阳航院设计用纸6四、技术要点本程序主要由两个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。在这些函数当中,添加数据函数、删除数据函数和排序函数是程序中较为核心的部分,下面分别进行说明。1、篮球价格获取函数get由于在题设中对篮球的价格进行了设定,所以必须在此函数中进行对被输入的篮球价格作出判断,并提示用户重新输入一个符合条件的价格,因此在此处用一个while循环进行价格的获取,在最后将获取的价格返回给篮球价格猜测函数guess。具体程序段如下:intget(void)/*定义int格式的篮球价格输入函数*/{intprice;while(price1||price200){printf(请输入篮球价格(200元之内,并且要求为整数):);scanf(%d,&price);}return(price);}2、目录输出函数沈阳航院设计用纸7该函数没有具体的功能,只负责程序目录的输出:在被主函数调用后用一连串的printf函数进行输出,形成一个良好的用户界面。具体程序段如下:voidmenu(){printf(***********************欢迎使用折半法猜篮球价格程序****************************\n);printf(\n);printf(1.输入篮球价格\n);printf(2.开始猜测\n);printf(3.退出程序\n);printf(\n);printf(*******************************************************************************\n);printf(*****************************版权所有,仿冒必究*********************************\n);}3、篮球价格猜测函数guess题目要求的篮球价格猜测的方法是折半法,即先用一个处于比较范围中央的数值与被比较数值进行比较,由用户对比较结果作出判断,通过循环的多次比较、用户判断、程序自动赋值,最终找到与被比较数值相同的结果,在此函数中使用了strcmp函数对用户输入的判断结果进行判断后输出提示以进行下一步用户判断。具体的程序段如沈阳航院设计用纸8下:voidguess(intplace)/*篮球价格猜测函数,参数为int类型的place*/{intm,l=1,h=200;chars[30]={};while((m=(l+h)/2)!=place){printf(计算器猜测的价格是:%d\n,m);printf(如果价格高,请输入“g”;如果价格低,请输入“d”\n);fflush(stdin);if(strcmp(gets(s),g)==0)/*strcmp函数比较输入的字符与字符g的大小,并给以判断*/h=m-1;elseif(strcmp(s,d)==0)/*strcmp函数比较输入的字符与字符d的大小,并给以判断*/l=m+1;}printf(计算器所猜的结果为%d,猜测结果正确!\n,m);}五、个人总结通过20个学时的努力,我完成了这次的C语言程序设计任务。以往我们只进行单一功能、单一片段的程序编写,任务简单。而这次的任务给了我们一个全新的视角,让我们进行一个全局性的“小”工程,从而完成一个多功能、各部分联系紧密的功能性程序体,实现了由部分到整体的飞跃,让我获益匪浅。沈阳航院设计用纸9六、参考文献谭浩强.C程序设计.北京:清华大学出版社,2005七、源程序#includestdio.h#includestring.h#includestdlib.h/*为exit函数所在的头文件*/#includeconio.h/*为getch函数所在的头文件*/voidmenu();intget(void)/*定义int格式的篮球价格输入函数*/{intprice;while(price1||price200){printf(请输入篮球价格(200元之内,并且要求为整数):);scanf(%d,&price);}return(price);}voidmenu(){printf(***********************欢迎使用折半法猜篮球价格程序****************************\n);printf(\n);printf(1.输入篮球价格\n);printf(2.开始猜测\n);printf(3.退出程序\n);printf(\n);沈阳航院设计用纸10printf(*******************************************************************************\n);printf(*****************************版权所有,仿冒必究*********************************\n);}voidguess(intplace)/*篮球价格猜测函数,参数为int类型的place*/{intm,l=1,h=200;chars[30]={};while((m=(l+h)/2)!=place){printf(计算器猜测的价格是:%d\n,m);printf(如果价格高,请输入“g”;如果价格低,请输入“d”\n);fflush(stdin);if(strcmp(gets(s),g)==0)/*strcmp函数比较输入的字符与字符g的大小,并给以判断*/h=m-1;elseif(strcmp(s,d)==0)/*strcmp函数比较输入的字符与字符d的大小,并给以判断*/l=m+1;}printf(计算器所猜的结果为%d,猜测结果正确!\n,m);}main(){charc;intprice;menu();c=getch();while(1)switch(getch()){case'1':price=get();break;沈阳航院设计用纸11case'2':guess(price);break;case'3':exit(0);}menu();c=getch();}
本文标题:用折半查找法猜篮球的价格
链接地址:https://www.777doc.com/doc-1458423 .html