程序设计说明书
姓名:_________________
班级:_________________
学号:_________________
20151227
AHAC语言程序设计作业求
作业目
1 掌握C语言进行程序设计基方法
2 熟练掌握window控制台应程序编写
3 初步完成应程序设计编码调试解程序设计程锻炼实际应力
二作业容
猜数字游戏:
计算机机生成没重复n数户键盘输入猜测数猜次电脑出提示信息果户输入数计算机生成数数值位置完全相等胜出
基功求:
1 机生成没重复4数(数字09范围)
2 户键盘输入4重复数程序户输入数机生成数进行匹配出提示信息: x数数值位置相 y数数值相位置
3 控制户尝试次数10次
4 计算输出保存户分计分规:总分100分失败次扣10分
5 操作菜单根选择运行功:1:开始游戏2:查次成绩3:输出帮助信息0:退出程序
扩展功求:
1 户输入数字进行检查果户输入重复数出提示求重新输入
2 游戏进行设置:操作菜单中增加相应选项:4:系统设置
(1) 修改猜数字数n根修改n值计算机机生成n数户进行n数猜测游戏
(2) 修改尝试次数
3 游戏胜出成绩前五名输入记录应户姓名添加积分榜中操作菜单中相应选项改2:积分榜积分榜中保存前五名成绩户姓名显示出
4 积分榜成绩进行排序输出
提示:(1)生成0~9机数rand函数:
#include
#include
#include
int main()
{ int a
srand(time(0)) 生成种子整程序写次
arand()10 生成机数
printf(d\na)
return 0
}
(2)保证生成n数重复:
数组记录生成数生成数前已生成进行较果相 重新生成直相
三作业求
1 位学独立完成
2 开发台:VC++ 60建立Win32 Console Application
3 提交时间:第17周周二前(12月29日)提交
4 提交容:印版程序设计说明书 电子版程序代码
5 提交具体求:
() 程序代码求:程序求够正常运行少实现基功求完成扩展功求较高分数
(二) 程序设计说明书求:(少3000字)
(1) 正文分章节正文5号宋体
(2) 容:
1) 概述:开发环境种功完成情况(已实现功功未实现什运行错误)
2) 程序概设计:程序流程什(画出流程图)函数实现什功等
3) 程序详细设计:关键代码分析(写详细)设计中疑难问题解决
4) 情况:展示种功运行情况(必须截图说明)
5) 总结:分析程序优点足遇困难解决问题总结收获
6) 参考目录
6 评分标准:
程序60程序设计说明书40
发现拷贝抄袭(抄抄者)程序基功未实现说明书体现设计程均法通课程
程序设计说明书
第章 概述 3
11 开发环境 3
12 种功完成情 3
13 存运行错误 3
第二章 程序概设计 5
21 整体流程 5
22 整体程序流程图 6
23 模块 7
24 函数实现功 11
第三章 程序详细设计 12
31关键代码分析 12
32设计程中疑难 18
第四章 情况 20
第五章 总结 27
第六章 参考资料 27
第章
概述
1 开发环境:啊哈C20
2 种功完成情况:
1)游戏操作菜单
2)基游戏功:户键盘输入4重复数程序户输入数机生成数进行匹配出提示信息: x数数值位置相 y数数值相位置
3)积分榜功:记录前五名玩家分数姓名分数高低输入
4)帮助信息功:出户猜数字游戏规游戏中相关提示含义
5)系统修改功:玩家行修改猜游戏数字数尝试次数
6)退出程序功:玩家菜单中退出程序
7)输入数字检查:果户输入重复数出提示求重新输入
8)返回功:完成游戏者完成设置玩家意键返回菜单
9)错误提示功:选择菜单时键提示选择错误求重新选择
10)清排行榜功
3 存运行错误:
游戏开始果户输入数字时误操作输入字母符号者字符程序陷入死循环
第二章
程序概设计
1整体流程
① 程序显示菜单
② 提示玩家输入选择输入
1) 游戏体
2) 查积分榜
3) 帮助信息
4) 系统设置
0) 退出程序
③ 判断玩家输入进入相应模块选择提示选择错误返回②
④ 判断变量q否等1
1) 等1结束程序
2) 等返回①
2整体程序流程图:
功菜单
输入选择
q否等1
结束程序
开始游戏
查积分榜
帮助信息
系统设置
退出程序
no
yes
1
2
3
4
5
输入
提示输入错误
判读输入
3模块
1) 游戏模块
① 产生机数:系统机产生09重复四数作游戏原始数字供玩家进行猜数字游戏
② 玩家输入4数
③ 判读玩家输入数字否重复
:重新输入否:继续输入
④ 判读输入4数原始数较提示玩家数值位置全数字数数值位置数字数
⑤ 判读数字否全
:提示胜利判断分数否进排行榜记录进入排行榜玩家分姓名
分数姓名排序
否:继续运行
⑥ 输入次数加1
⑦ 判断输入次数否等10
:提示失败退出输入意键返回菜单
否:返回②继续输入
流程图:
1
Yes
lose
记录
分数
姓名
排序
产生机数a[i]
玩家输入b[i]
b[i] b[j] ?
(输入否重复)
b[i] a[i]
g[i] > g[5]
判断分数
游戏次数n 加1
b[i]a[i]
提示
输入id
意键
提示重新输入
Yes
No
n10
No
Yes
No
Yes
Win
Win
q1
菜单
No
No
2)积分榜模块
调游戏模块中记录分数玩家姓名印出排行榜意键返回菜单
3)帮助信息模块
直接印出帮助信息输入意键返回菜单
4)系统设置模块
① 进入子菜单
② 输入选择123
③ 判断玩家选择进入相应模块
1. 修改猜数字数n
2. 修改尝试次数
3. 恢复默认值
4. 清排行榜
0 提示选择错误返回②
⑤ 输入修改数值
⑥ 变量w等1
⑦ 判断w否等1
:返回菜单
否:返回菜单
系统设置流程图:
子菜单
执行输入
玩家输入
1
2
3
提示错误
修改数值
w1
修改数值
w1
w1
意键
菜单
No
Yes
4
0
5)退出程序模块
玩家菜单选择0q1检测判断q1程序运行结束退出关闭
4函数实现功
1) while 函数:利whie函数进入死循环进行系列操作条件满足时跳出while实现菜单返回效果
2) for函数:产生原始数玩家输入数字分数较等
3) scanf函数:输入09数
4) getch:字符输入带回显实现菜单选择
5) strcpy函数:实现玩家姓名排行榜排序
6) rand():产生机数
7) srand((unsigned)time(NULL)):利系统时钟设定种子rand()函数产生种子产生机数
8) fflush(stdin):清scanf输入时留回车缓存
第三章
程序详细设计
1关键代码分析:
体游戏部分:
1 原始机数产生
srand((unsigned)time(NULL)) 时间种子
for(i0i
a[i]rand()10次产生09范围意数机数存数组a中
限制重复数生成数前已生成进行较果相 重新生成直相
for(j0j
if(a[j]a[i])
{
i1出现重复数令i0
a[i]rand()10重新产生机数
}
}
}
2户输入数字
for(i0i
scanf(d&b[i])
判断输入否重复
for(j0j
if(b[j]b[i]) 检测输入数字否重复原理1
{
printf(输入数字重复请重新输入\n)
i1
break
}
}
}
3 判断部分
判断
cnt1cnt20
判断输入b[i]否原始数a[i]相等判断数值位置相数
for(i0i
if(b[i]a[i])
{
cnt1++
}
判断数值相位置数
for(j0j
if(ij && b[i]a[j])
{
cnt2++
break
}
}
}
4 胜利模块排序
if(cnt1t)胜利条件
{
printf(\n恭喜猜\n)
printf(分:d\n\n10010*n)分
s10010*n计算分
g[x]s数组记录分
if(g[x]>g[5])判断分数否进入前5名
{
printf(恭喜进入前五名请输入名称(力限仅仅支持英文名回车确认):\n)
fflush(stdin) 清scnaf留回车缓存 方法2scanf面加getch
gets(m[x])数组记录玩家姓名
}
x++游戏胜利次数
分数玩家姓名排序
for(i0i
for(ji+1j
if(g[j]>g[i])
{
tempg[i]g[i]g[j]g[j]temp
strcpy(temp2m[i]) 姓名着g[i]交换
strcpy(m[i]m[j])
strcpy(m[j]temp2)
}
}
}
二 排行榜模块
调游戏模块排序分数数组分名字数组直接印显示
for(i0i<5i++)
{
输出分数
printf( ★第d名成绩:03d i+1g[i])
printf(玩家:)
puts(m[i])输出玩家名字
printf(\n)
}
printf( )
三 帮助模块
Printf函数直接输出帮助信息
四 系统设置模块
while(4)子菜单循环
{
if(ch'4')
{
system(cls)
印子菜单
printf(\n①修改猜数字数(默认4)\n\n)
printf(②修改尝试次数(默认10)\n\n)
printf(③返回菜单\n\n\n)
while(4)子菜单循环
{
printf(\n\n请选择需操作:)
ch3getch()
if(ch3'1'||ch3'2'||ch3'3’||ch4’4’||ch3’5’)
{
if(ch3'1') 选择1
{
system(cls)
printf(请输入修改猜数字数:\n)
while(5)限制修改次数1~10
{
scanf(d&t1)
if(t1>10)
{printf(输入错误请输入1~10间数\n)}
else
{break}
}
tt1更新次数游戏模块猜数字数
printf(已修改请意键返回菜单)
w1返回菜单条件
break跳出子菜单循环
}
if(ch3'2') 选择2
{
system(cls)
printf(请输入修改尝试次数:\n)
scanf(d&h1)
hh1更新游戏模块中尝试次数
w1返回菜单条件
printf(已修改请意键返回菜单)
break跳出子菜单循环
}
if(ch3'3')
{
system(cls)
t4h10恢复
w1返回菜单条件
printf(已恢复默认请意键返回菜单)
break跳出子菜单循环
}
if(ch3'4')
{
system(cls)
for(i0i<100i++)
{
g[i]0清记录
strcpy(m[i]p[i])清姓名
}
w1返回菜单条件
printf(已清请意键返回菜单)
break跳出子菜单循环
}
if(ch3'5') 选择返回菜单
{
break
}
}
else
printf(\n菜单选择错误请重新选择:\n)
}
菜单返回模块
if(w1)
{
ch2getch()
}
w0条件复位
system(cls)
break跳出菜单选择循环while2
菜单返回模块end
}
五 程序跳出模块
if(q1) 判断标志位q否等1跳出二层while2循环层循环检测q1
{ 结束程序
break 跳出while1
}
六 菜单循环模块
while(1)
{
printf( ) 显示菜单详情源程序
while(2)菜单选择循环
{
if(ch'1'||ch'2'||ch'3'||ch'4'||ch'0')
{
system(color 7)
if(ch'1')游戏体
1游戏模块
{
}
if(ch'2')
2积分榜模块
{
}
if(ch'3')
3帮助信息模块
{
}
if(ch'4')
4系统设置模块
{
}
if(ch'0')
0退出模块
{
}
}
else
printf(\n菜单选择错误请重新选择:\n)
}while2
if(q1)
{
break跳出while1
}
}while1
七 意键返回模块
while 菜单子菜单循环详情见源程序
{
… 代表意模块
…
…
printf(请意键返回菜单)
ch2getch() 输入意字符
system(cls)
break跳出菜单选择循环
}
2设计程中疑难:
疑难:
限制重复数设计开始时陷入类似代码错误思路中:
错误思路代码 :
①for(i0i<4i++)
{
for(j0j<4j++)
{
while((ij) && (a[i]a[j]))
{
a[j]rand()10
}
}
}
②for(i0i<4i++)
{
a[i]rand()10
for(j0j<4j++)限制重复数
{
if(a[j]a[i])
a[i]rand()10
}
}
错误原:
出现重复数前数没i置回a[i]rand()10产生机数进入次i++样a[i]rand()10产生机会产生前数相数
解决方法:
产生机数时进入判断重复数 i置回i1(i1)产生机数进入判断直没机数止
疑难二:
记录玩家姓名时gets函数程序没显示输入字符直接显示语句
原:
gets函数会首先读取缓存区容前面scanf函数输入完毕回车确认会缓存区留回车字符运行面gets函数时动输入回车接着运行语句
解决方法:
前面scanf函数面家getch()吸收回车键者面gets函数前加fflush(stdin)函数清scanf输入时留回车缓存 (查百度出解决方法)
疑难三:
排行榜姓名记录
解决方法
分数数组g[i]记录选择排序玩家姓名m[i]着着g[i]strcpy函数选择排序
第四章
情况
种功运行情况展示:
游戏初始画面:
游戏系统判断算法测试:
提示重复数:
果连续四次输入错误出现结果出现提示:
排行榜记录功展示:
系统功展示:
子菜单:
输入修改:
错误提示:
修改成功:
帮助信息:
退出程序:
第五章
总结
程序缺点:
程序够简练没高级函数函数调排行榜模块结构体定义函数记录玩家分数姓名定义变量编写时易混淆
优点:
体结构明确模块分工明确程序语句排版清晰明确容易读懂
遇困难解决问题:
编写程中遇问题说数胜数前面说限制重复数排行榜排序问题外游戏判断部分等等然遇困断思考总结遇问题基解决
收获:
猜数字游戏似简单需C语言知识进行应尤循环语句数组进行量应
首先次作业前学知识巩固进步提高认识已知识更进步理解认识次课程设计中碰问题通钻研逐击破然通次作业发现身足处
外学知识转换东西时心中知时种莫名动力电脑前面坐时次作业仅巩固前学知识更获书没学知识通次课程设计逻辑力提高正书封面写乔布斯句话应该学会编程教会思考
学方法学中时候起着关重作尤次游戏设计程中深深体会善总结学程中缺少重环节次完成编程务完成段代码应目踪该程序调试运行状况时总结找错误足处样编写程序逐步提高
第六章
参考资料
1.啊哈C
2c语言典编程282例
— END —
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档