1、用折半查找法猜篮球的价格 题目:用折半查找法猜篮球的价格一、课程设计时间201011 第2 学期 第15周,共计1周,20学时。二、课程设计内容用C语言编写软件完成以下任务:用户从键盘输入篮球的价格(假设价格在1200元之间,并且为整数),让计算器从1元开始用折半法猜测篮球的价格。若计算器的猜测价格偏高,用户输入“高”;若计算器的猜测价格偏低,用户就输入“低”;若计算器猜对了,则显示“正确”。三、课程设计要求1. 程序质量: 贯彻结构化的程序设计思想。 用户界面友好,功能明确,操作方便。 用户界面中的菜单至少应包括“输入篮球价格”、“计算器开始猜测”、“退出”3项。 代码应适当缩进,并给出必要
2、的注释,以增强程序的可读性。2. 课程设计说明书:课程结束后,上交课程设计说明书和源程序。课程设计说明书的格式和内容参见提供的模板。四、指导教师和学生签字指导教师:_ 学生签名:_五、成绩:六、教师评语: 七、源程序.8一、需求分析经过对程序设计题目的分析可知,整个程序大致分为三个模块,其中每一个模块对应一个函数,实现一个功能,他们的功能分别是:篮球价格获取函数(get),出现目录的输出函数(menu),篮球价格猜测函数(guess),以及主函数(main)。1、篮球价格获取函数主要实现程序最初运行时用户对篮球价格的设定(要求价格在1-200元之间,并且为整数,若超出范围则提示重新输入);2、
3、目录输出函数在程序运行时输出目录,使用户界面更加友好3、篮球价格猜测函数实现的功能是让计算器从1元开始用折半法猜测篮球的价格。若计算器的猜测价格偏高,用户输入“g”;若计算器的猜测价格偏低,用户就输入“d”;若计算器猜对了,则显示“正确”。;二、设计分析1、程序总体结构图2、具体功能框图(1)篮球价格获取函数(get)(2)篮球价格猜测函数(guess)三、主要界面截图四、技术要点本程序主要由两个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。在这些函数当中,添加数据函数、删除数据函数和排序函数是程序中较为核心的部分,下面分别进行说明。1、篮球价格获取函数g
4、et由于在题设中对篮球的价格进行了设定,所以必须在此函数中进行对被输入的篮球价格作出判断,并提示用户重新输入一个符合条件的价格,因此在此处用一个while循环进行价格的获取,在最后将获取的价格返回给篮球价格猜测函数guess。具体程序段如下:int get(void)/*定义int格式的篮球价格输入函数*/ int price; while (price 200) printf(请输入篮球价格(200元之内,并且要求为整数): ); scanf(%d, &price); return (price); 2、目录输出函数该函数没有具体的功能,只负责程序目录的输出:在被主函数调用后用一连串的pri
5、ntf函数进行输出,形成一个良好的用户界面。具体程序段如下:void menu() printf(*欢迎使用折半法猜篮球价格程序*n); printf( n); printf( 1.输入篮球价格 n); printf( 2.开始猜测 n); printf( 3.退出程序 n); printf( n); printf(*n); printf(*版权所有,仿冒必究*n);3、篮球价格猜测函数guess题目要求的篮球价格猜测的方法是折半法,即先用一个处于比较范围中央的数值与被比较数值进行比较,由用户对比较结果作出判断,通过循环的多次比较、用户判断、程序自动赋值,最终找到与被比较数值相同的结果,在此函
6、数中使用了strcmp函数对用户输入的判断结果进行判断后输出提示以进行下一步用户判断。具体的程序段如下:void guess(int place)/*篮球价格猜测函数,参数为int类型的place*/ int m, l = 1, h = 200; char s30 = ; while (m = (l + h) / 2) != place) printf(计算器猜测的价格是: %dn, m); printf(如果价格高,请输入“g”;如果价格低,请输入“d”n);fflush(stdin); if (strcmp(gets(s), g) = 0)/*strcmp函数比较输入的字符与字符g的大小,
7、并给以判断*/ h = m - 1; else if (strcmp(s, d) = 0)/*strcmp函数比较输入的字符与字符d的大小,并给以判断*/ l = m + 1; printf(计算器所猜的结果为%d,猜测结果正确!n,m);五、个人总结通过20个学时的努力,我完成了这次的C语言程序设计任务。以往我们只进行单一功能、单一片段的程序编写,任务简单。而这次的任务给了我们一个全新的视角,让我们进行一个全局性的“小”工程,从而完成一个多功能、各部分联系紧密的功能性程序体,实现了由部分到整体的飞跃,让我获益匪浅。六、参考文献谭浩强C程序设计北京:清华大学出版社,2005七、源程序#incl
8、ude #include #include /*为exit函数所在的头文件*/#include /*为getch函数所在的头文件*/void menu();int get(void)/*定义int格式的篮球价格输入函数*/ int price; while (price 200) printf(请输入篮球价格(200元之内,并且要求为整数): ); scanf(%d, &price); return (price); void menu() printf(*欢迎使用折半法猜篮球价格程序*n); printf( n); printf( 1.输入篮球价格 n); printf( 2.开始猜测 n)
9、; printf( 3.退出程序 n); printf( n); printf(*n); printf(*版权所有,仿冒必究*n);void guess(int place)/*篮球价格猜测函数,参数为int类型的place*/ int m, l = 1, h = 200; char s30 = ; while (m = (l + h) / 2) != place) printf(计算器猜测的价格是: %dn, m); printf(如果价格高,请输入“g”;如果价格低,请输入“d”n);fflush(stdin); if (strcmp(gets(s), g) = 0)/*strcmp函数比较输入的字符与字符g的大小,并给以判断*/ h = m - 1; else if (strcmp(s, d) = 0)/*strcmp函数比较输入的字符与字符d的大小,并给以判断*/ l = m + 1; printf(计算器所猜的结果为%d,猜测结果正确!n,m);main() char c; int price; menu(); c=getch(); while(1) switch(getch() case 1:price=get(); break; case 2:guess(price); break; case 3:exit(0); menu(); c=getch();
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2