c语言机器人猜价格游戏.docx
《c语言机器人猜价格游戏.docx》由会员分享,可在线阅读,更多相关《c语言机器人猜价格游戏.docx(11页珍藏版)》请在冰豆网上搜索。
c语言机器人猜价格游戏
沈阳航空工业学院
课程设计
学号
班级
姓名
指导教师
年月日
沈阳航空工业学院
课程设计任务书
一、课程设计题目:
机器人猜价格游戏
二、课程设计工作自
三、课程设计内容:
用户从键盘输入一商品及其价格信息(假设价格在1~200元之间,并且为整数),让计算器从1元开始猜测价格。
若计算器的猜测价格偏高,用户输入“高”;若计算器的猜测价格偏低,用户就输入“低”;若计算器猜对了,则显示“正确”。
(建议用折半查找法)。
四、课程设计要求:
程序质量:
●用户界面中的菜单至少应包括“输入商品及其价格”、“计算器开始猜测”、“退出”3项
●在代码中给出必要的注释,以增强程序的可读性。
课程设计说明书:
课程结束后,上交课程设计说明书和源程序。
课程设计说明书的内容如下:
●封面
●课程设计任务书
●目录
●需求分析(分析题目的要求)
●程序流程图(总体流程图和主要功能模块流程图)
●核心技术的实现说明及相应程序段
●个人总结
●参考资料
●源程序及适当的注释
指导教师:
学生签名:
目录
一、需求分析……………………………………1
二、程序流程图…………………………………2
三、核心技术的实现说明及相应程序段………3
四、个人总结……………………………………5
五、参考文献……………………………………6
六、源程序………………………………………6
一、需求分析
1、显示菜单函数主要实现显示程序设计的总体步骤和功能,还有接下来显示的分步骤用来实现各个函数的具体功能,以便实现其它各自定义函数的作用。
2输入商品价格函数是用户给商品的一个真实价格,为下一步计算机猜测商品价格提供数据依据。
3、猜测商品价格函数计算机对商品价格进行猜测,通过用户输入的“高”和“低”给计算机运用折半查找法提供大方向,进行多次循环,最终达到猜测出商品真实价格的目的。
除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行
二、设计方案
1、总体设计
2、程序流程图
(1)显示菜单函数
定义变量初始化
fhasdfasdffsdfasdf
(2)输入商品价格函数
定义变量初始化
当输入价格不在1-200元以内
提示用户输入商品价格
输入价格给变量price
把price值带回
(3)猜测商品价格函数
变量初始化
mid=(low+high)/2;当赋给mid的值不等于真实价格时
输入字符串判断是否偏高
否
是
把mid+1的值赋值
给low变量
把mid-1的值赋值
给high变量
三、核心技术的实现说明及相应程序段
本程序主要由一个主函数和三个自定义函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。
下面分别对各个自定义函数进行说明。
1、显示菜单函数
定义整型的选择变量,这是一个主菜单(MenuChoice()),数字变量(ret),输入整型的ret值,并返回给主函数中的(choice=MenuChoice()),当返回的ret值等于3时,直接跳出当前函数。
当ret值为1时,进入“输入商品价格”函数,当ret值为2时,进入“猜测篮球价格”函数。
这是一个菜单函数包含的:
/*显示菜单0*/
intMenuChoice(void)
{
intret;
printf("1-输入篮球价格\n2-计算器开始猜测\n3-退出\n");
scanf("%d",&ret);
return(ret);
}
2、输入商品价格函数
用户输入一个价格,对这个PRICE进行讨论。
while(price<1||price>200),这是一个把价格限制在1—200内的函数,如不在这个范围内的话会输出:
Entertheprice:
:
直到输入的在1-200之间才会进行运算。
/*得到商品的实际价格*/
intGetPrice(void)
{
intprice;
while(price<1||price>200)
printf("Entertheprice:
");
scanf("%d",&price);
}
return(price);
}
3、猜测商品价格函数
定义了两个整型变量,low,high.这分别是1,200。
用折半法来运算:
while((mid=(low+high)/2)!
=price),如果猜测的比实际的高了。
你就输入HIGH,若低了你就输入LOW,
if(strcmp(gets(s),"high")==0)
high=mid-1;
elseif(strcmp(s,"low")==0)
low=mid+1;
/*猜测商品的价格*/
voidGuessPrice(intplace)
{
intmid,low=1,high=200;
chars[30]={""};
while((mid=(low+high)/2)!
=place){
printf("Thepriceis:
%d\n",mid);/*显示计算机预计的价格*/
if(strcmp(gets(s),"high")==0)/*如果价格高,用户就输入"high"*/
high=mid-1;
elseif(strcmp(s,"low")==0)/*如果价格低,用户就输入"low"*/
low=mid+1;
}
}
四、个人总结
通过这次课设让我懂得了如何在面对问题时保持冷静,如何在有很多不明白的时候去找到自己会的地方,从而一点点的理解,一点点的击破.而且还要请教同学和老师.
这次课设让我解决问题的能力提高了,不仅如此,我觉得我有了很大的进步,这不仅仅体现在知识上.而且我终于意识到如果知识不扎实,就会在很多细节问题上遇到刺.我对今后的生活充满了信心,再遇到困难时,只要想起这次课设所遇到的难题,我就不会畏缩.总之,这次课设让我受益匪浅.
五、参考文献
1谭浩强.C程序设计.北京:
清华大学出版社,2005
2刘成等.C语言程序设计实验指导与习题集.北京:
中国铁道出版社,2006
六、源程序
#include"stdio.h"
#include"string.h"
intprice;
intGetPrice();/*输入价格函数*/
voidGuessPrice();/*猜价格函数*/
main()
{
intret;
while
(1)
{
printf("1-输入商品价格\n2-计算机开始猜测\n3-结束\n");/*显示菜单*/
printf("pleasechice:
");
scanf("%d",&ret);
switch(ret)
{
case1:
GetPrice();break;/*输入价格*/
case2:
GuessPrice();break;/*猜价格*/
case3:
exit(0);/*退出*/
}
}
}
intGetPrice(void)
{
do
{
printf("/nEntertheprice:
");
scanf("%d",&price);
}
while(price<1||price>200);
return(price);
}
voidGuessPrice(price)
{
intmid,low=1,high=200;
chars[30]={""};
while((mid=(low+high)/2)!
=price){
printf("Thepriceis:
%d\n",mid);/**/
if(strcmp(gets(s),"high")==0)/*电脑给出价格过高*/
high=mid-1;
elseif(strcmp(s,"low")==0)/*电脑给出价格过低*/
low=mid+1;
else{printf("Right\n");break;}/*价格正确*/
}
}