当前比赛选手数:
inti_player_number(0<=i_player_number<10,可在比赛开始时动态指定)
当前选手手中牌:
inta_players[i_player_number][10](每个选手当前手中的牌,players[1][10]表示选手2手中的牌,最多10张)
当前选手得分:
inta_scores[i_player_number](scores[2]表示选手3当前的总得分
当前下注:
inta_bets[i_player_number](bets[0]表示选手0当前局下注)
牌局记录:
inta_record_set[step][i_player_number][10](记录牌局)
(2)待实现的函数(基本)
方法名称
方法声明
方法作用
初始化
voidinit()
初始化当前选手、得分等相关变量
开局
voidbegin()
某一局的开始,初始化下注,牌库等信息
随机产生牌局
voidgenerate_cards()
随机产生当前牌库中的牌
发牌
voidassign_card(inti_player_number)
给选手i_player_number发一张牌
比较大小
intcompare(intplayer1_number,intplayer2_number)
比较选手player1_number与player2_number手中牌的点数大小,返回1—表示player1_number大;0—表示一样大;-1—表示player2_number大
记录选手得分
intwrite_score(intplayer_number,intscore)
为选手player_number的总得分加上当前得分
当前局评分
voideval()
当前局结束,为当前局的所有选手比较大小,并计算出各自的得分
记录当前牌局
voidrecord()
记录当前牌局
保存
voidsave(char*filename)
将当前牌局保存到文件filename中
读取牌局
voidread(char*filename)
将文件filename中保存的牌局读取到牌局记录a_record_set数组中
屏幕显示
主函数
4.中国象棋游戏(难度系数:
A)
(1)系统变量(基本)
棋盘宽度:
inti_board_width(固定的象棋棋盘宽度)
棋盘高度:
inti_board_height(固定的象棋棋盘高度)
棋盘上棋子位置:
inta_boards[i_board_width][i_board_height]
当前下棋方:
inti_cur_side(1—红方2–黑方)
上次移动棋子:
inti_chess(0–6分别代表红方的帅仕相车马炮兵,7-13分别代表黑方的将士象车马炮卒)
棋局记录:
int[step][i_board_width][i_board_height]记录棋局
胜方:
inti_success_side(1—红方2–黑方0–表示当前未结束棋局)
(2)待实现的函数(基本)
方法名称
方法声明
方法作用
初始化
voidinit()
初始化棋盘数组、当前下棋方等相关变量
下棋
intmove_chess(intchess,intx,inty,intx2,inty2)
将棋子从x,y位置移动到x2,y2,移动吃子则返回被吃掉子的id,没吃子则返回-1
判断移动规则
intcan_move(intchess,intx,inty,intx2,inty2)
判断棋子能否从x,y移动x2,y2,如果规则允许则返回1,否则返回0
判断胜负
intset_success(intside)
设置为side方胜利
记录当前棋局
intrecord()
记录当前棋盘上的棋子位置信息到棋局记录数组,记录成功返回1,不成功返回0
悔棋
introllback()
悔一步棋,悔棋成功返回1,悔棋不成功返回0
悔多步棋
introllback(intsteps)
悔多步棋,悔棋成功返回1,悔棋不成功返回0
复盘
voidplay(intstep_id)
显示第step_id步的棋盘所有棋子位置
存储棋局
voidsave(char*filename)
将当前棋局存储到文件(filename)中,存储成功返回1,存储不成功返回0
屏幕显示
主函数
5.贪吃蛇游戏(难度系数:
B)
(1)系统变量(基本)
屏幕宽度(横向最多方块数)inti_screen_width(暂定20)
屏幕高度(纵向最多方块数)inti_screen_height(暂定20)
当前蛇的方向:
inti_direction
当前蛇的长度:
inti_length
最大蛇身长度:
intMAX_LENGTH=30
当前蛇的位置:
inta_snakes[MAX_LENGTH]
当前产生的食物位置:
inta_pos[i_screen_width][i_screen_height]
当前速度:
floatf_speed
当前得分:
intl_score
(2)待实现的函数(基本)
方法名称
方法声明
方法作用
初始化
voidinit()
初始化屏幕数组、当前蛇的位置等相关变量
随机产生食物
intplace_food()
在屏幕上空白区域随机产生一个食物
判断是否出边界
intout_of_bound()
判断蛇头是否出边界
上移
intmove_up()
向上移一格,上移成功返回1,不成功返回0
下移
intmove_down()
向下移一格,下移成功返回1,下移不成功返回0
左移
intmove_left()
向左移一格,左移成功返回1,不成功返回0
右移
intmove_right()
向右移一格,右移成功返回1,不成功返回0
吃食物
inteat_food()
蛇吃掉当前食物
提高移动速度
intincrease_speed()
提高移动速度一级
降像移动速度
intdecrease_speed()
降低移动速度一级
存储得分
voidsave_score()
存储当前得分值
保存
intsave(char*filename)
将当前得分存储到文件(filename)中,存储成功返回1,存储不成功返回0
屏幕显示
主函数
6.数独游戏(难度系数:
B)
(1)系统变量(基本)
当前棋盘:
a_board[9][9](board[4][5]表示第5行第6列位置上的元素,值如果为0-8,表示该位置上已经填了数,如果为-1,则表示没有填数
(2)待实现的函数(基本)
方法名称
方法声明
方法作用
初始化
voidinit()
初始化棋盘数组等相关变量
随机生成棋盘
intgenerate_board()
随机生成初始棋盘
填数
intplace_number(intx,inty,intnumber)
在x,y坐标放置数字number,能放则返回1,否则返回0
判断横向冲突
intis_conflict_x(intx,inty)
判断在x,y位置的数字是否与左右的数字冲突,冲突则返回1,否则返回0
判断纵向冲突
intis_conflict_y(intx,inty)
判断在x,y位置的数字是否与上下的数字冲突,冲突则返回1,否则返回0
判断小九宫格内冲突
intis_conflict_area(intx,inty)
判断在x,y位置的数字是否与所在的小九宫格内其它数字冲突,冲突则返回1,否则返回0
擦除数
discard(intx,inty)
擦除x,y位置已填写的数字
判断游戏结束
intis_finished()
判断当前游戏是否结束
从文件中读取游戏
intread()
从文件中读取内容,读取成功返回1,不成功返回0
存储棋局
voidsave(char*filename)
将当前棋局存储到文件(filename)中,存储成功返回1,存储不成功返回0
屏幕显示
主函数
7.数字记忆游戏(难度系统数:
C)
根据游戏选择的难度,随机产生一串数字符串,要求用户记住并写出,然后进度比较,得出记忆能力。
(1)系统变量(基本)
当前数字长度inti_length(0<=i_length<30)
当前记忆数字序列:
inta_number[i_length]
回忆数字序列:
intinta_try_number[i_length]
猜中数字个数:
inti_success
总猜中数字个数:
inti_total
(2)待实现的函数(基本)
方法名称
方法声明
方法作用
初始化
voidinit()
初始化记忆和回忆数字序列等相关变量
随机产生数字序列
int[]generate()
产生0到i_length-1间不重复的数字序列
比对数字序列
intcompare(int[]a_src,int[]a_dst)
将a_src与a_dst数组相比较,返回其中各位置上相同的数字个数
清空数字序列
intclear(int[i_length])
计算记忆能力
floatcalc_ratio()
计算总记忆数字个数/总数字个数
记录操作日志
voidinfo(char*filename)
将每次用户的操作信息写到日志文件filename中
屏幕显示
主函数
8.数学计算工具(难度系数:
D)
小型整数、实数、复数计算器,设计并实现一个小型计算器,包括如下功能:
实现加减乘除等功能,并显示运算结果
(1)系统变量(基本)
暂无
(2)待实现的函数(基本)
方法名称
方法声明
方法作用
复数加法
intcomAdd(floata1,floatb1,floata2,floatb2)
两个复数的相加,a1和a2为实部,b1和b2为虚部,结果存在a1,b1中,计算成功返回1,否则返回0
复数减法
intcomSub(floata1,floatb1,floata2,floatb2)
两个复数的相减,a1和a2为实部,b1和b2为虚部,结果存在a1,b1中,计算成功返回1,否则返回0
复数乘法
intcomTimes(floata1,floatb1,floata2,floatb2)
两个复数的相乘,a1和a2为实部,b1和b2为虚部,结果存在a1,b1中,计算成功返回1,否则返回0
复数除法
intcomDevide(floata1,floatb1,floata2,floatb2)
两个复数的相除,a1和a2为实部,b1和b2为虚部,结果存在a1,b1中,计算成功返回1,否则返回0
阶乘
longfactorial(intn)
计算n的阶乘
指数
doubleexp(floatx)
计算e的x次方
乘方
doublepower(floatx,floaty)
计算x的y次方
开方
doubleextract(floatx,floaty)
计算x开y次方
对数
doublelg(floatx,intbase)
计算以base为基础x的对数
记录操作日志
voidinfo(char*filename)
将每次用户的操作信息写到日志文件filename中
屏幕显示(主菜单)
主函数
9.进制转换工作(难度系数:
B)
实现各种数制之间的转换
(1)系统变量(基本)
暂无
(2)待实现的函数(基本)
方法名称
方法声明
方法作用
10进制到2进制
char*dec2bin(char*d)
2进制到10进制
char*bin2dec(char*b)
10进制到8进制
char*dec2oct(char*o)
8进制到10进制
char*oct2dec(char*d)
10进制到16进制
char*dec2hex(char*d)
16进制到10进制
char*hex2dec(char*h)
任意进制转换
char*convert(char*x,inta,intb)
实现任意进制间的数的转换,base表示转换的基础,a表示源数制,b表示目标数制
记录操作日志
voidinfo(char*filename)
将每次用户的操作信息写到日志文件filename中
屏幕显示(主菜单)
主函数
10.矩阵计算工具(难度系数:
C)
定义一个多项式矩阵操作函数,实现多项式矩阵的操作
(1)系统变量(基本)
多项式行数inti_rows
多项式列数int_i_cols
多项式数据floata[i_rows][i_cols]
(2)待实现的函数(基本)
方法名称
方法声明
方法作用
多项式初始化
voidassign(a)
将多项式的值清空0
加法
a[][]add(b[][])
减法
a[][]minus(b[][])
乘法
a[][]times(a[][])
转置
a[][]transform(b[][])
求逆矩阵
a[][]revert(a[][])
记录操作日志
voidinfo(char*filename)
将每次用户的操作信息写到日志文件filename中
屏幕显示(主菜单)
主函数
11.大数加减法运算(难度系数:
B)
大数一般指30位以上的十字进数字,超过double和longlong数据类型的范围。
要求能实现以下功能:
Ø系统以文本菜单方式工作
Ø大数的输入
Ø大数的加法
Ø大数的减法
Ø运算结果的显示
Ø运算过程(输入和输出)写入到文件,并能查看
(1)系统变量(基本)
大数存储char*
(2)待实现的函数(基本)
方法名称
方法声明
方法作用
大数的输入
input(char*ch,intlen)
从输入获取一个大数
字符到10进制数转换
intchar_2_num(charch)
将某个字符转换成对应10进制数字
10进制数转成字符
charnum_2_char(intnum)
将某个数字转换成对应的字符
单个字符的加法
charchar_add(charch1,charch2,intflag)
对两个字符进行加法运算(ch1+ch2),返回加法后的结果,有进位flag变为1,无进位flag为0
单个字符的减法
charchar_sub(charch1,charch2,intflag)
对两个字符进行减法运算(ch1-ch2),返回减法后的结果,有借位flag变为1,无借位flag为0
字符串前补0
char*remark(char*num,intlen)
字符串长度不足len的在其前面补0,超过len的截取长度
比较两个多位字符的大小
intcompare(char*ch1,char*ch2)
ch1大于ch2返回1,ch1等于ch2返回0,ch1小于ch2返回-1
多位字符的加法
char*chars_add(char*ch1,char*ch2)
两个多位字符的加法,以十进制的运算法则,计算ch1和ch2的和
多位字符的减法
char*chars_sub(char*ch1,char*ch2)
两个多位字符的减法,以十进制的运算法则,计算ch1和ch2的差,如果结果为负,则结果中的第一位字符为负号
记录操作日志
voidinfo(char*filename)
将每次用户的操作信息写到日志文件filename中
屏幕显示(主菜单)
主函数
12.大数判断素数运算(难度系数:
A)
大数一般指50位以上的十字进数字,超过double和longlong数据