南昌航空大学历届C语言课设选题.docx
- 文档编号:25759358
- 上传时间:2023-06-13
- 格式:DOCX
- 页数:39
- 大小:66.01KB
南昌航空大学历届C语言课设选题.docx
《南昌航空大学历届C语言课设选题.docx》由会员分享,可在线阅读,更多相关《南昌航空大学历届C语言课设选题.docx(39页珍藏版)》请在冰豆网上搜索。
南昌航空大学历届C语言课设选题
C语言课程设计选题
1.俄罗斯方块游戏(难度系数:
A)
实现传统的俄罗斯方块游戏基本功能:
随机产生下一方块,方块移动、旋转、消行等操作
(1)系统变量(基本)
屏幕宽度(横向最多方块数)inti_screen_width(暂定10)
屏幕高度(纵向最多方块数)inti_screen_height(暂定20)
屏幕上方块数组:
inta_screen[i_screen_width][i_screen_height](a_screen[i][j]等于1表示该位置有方块,如果没有,表示没有方块)
方块类型数:
inti_number(暂定7种方块)
方块类型数组:
inta_block[i_number*4](每种方块最多4种位置)
方块类型对应屏幕位置数组:
inta_block_pos[i_number*4][2](每种方块最多4种位置,每个位置由2个坐标表示X与Y,0<=X 当前方块ID: inti_cur_block(0<=i_cur_block 下一方块ID: inti_next_block(0<=i_next_block 当前得分: intl_score (2)待实现的函数(基本) 方法名称 方法声明 方法作用 初始化 voidinit() 初始化屏幕数组、当前方块、下一方块等相关变量 随机产生下一方块 intget_next_block() 随机产生下一方块,并返回下一方块ID 判断当前屏幕是否能消行 intmerge() 判断当前屏幕有哪些能消的行,如果有则消除该行,并将消行的上面所有行下移,并记录得分 移动屏幕上多行方块 intmove_lines(intfrom_line) 将屏幕上从from_line行开始(包括该行)以上所有的行向下移一行,移动成功返回1,移动不成功返回0 移动屏幕上多行方块(可移多行) intmove_lines(intfrom_line,intlines) 将屏幕上从from_line行开始(包括该行)以上所有的行向下移lines行 下移当前方块 intblock_down() 当前方块下移一行,下移成功返回1,下移不成功返回0 左移当前方块 intblock_left() 当前方块左移一行,左移成功返回1,不成功返回0 右移当前方块 intblock_right() 当前广场右移一行,右移成功返回1,不成功返回0 变形方块 inttransform(intblock_id) 将block_id所代表的方块向右旋转一次,返回旋转成功之后的方块ID 判断方块是否到底 intstop_drop(intblock_id) 判断block_id所代表的方块是否移动到底,如果移动到底,则返回1,否则返回0 存储当前得分 intsave(char*filename) 将当前得分存储到文件(filename)中,存储成功返回1,存储不成功返回0 屏幕显示 主函数 2.五子棋游戏(难度系数: B) (1)系统变量(基本) 棋盘宽度: inti_width(暂定20) 棋盘高度: inti_height(暂定20) 棋盘数组: inta_board[i_width][i_height](a[i][j]等于1表示该位置是白棋,等于2表示该位置是黑棋,等于0表示没有棋子) 当前下棋方: inti_cur_side(等于1表示等待白棋下子,等于2表示等待黑棋下子) 棋局记录数组: inta_board_record[steps][i_width][i_height](a[i][j][k]表示该棋局中第i步的棋盘位置是a[j][k] (2)待实现的函数(基本) 方法名称 方法声明 方法作用 初始化 voidinit() 初始化棋盘数组、当前下棋方等相关变量 下棋 intplace_chess(intx,inty,intsize) 在x,y坐标放置一颗side方的棋子,能放则返回1,否则返回0 判断横向连成五子 intis_cross_x(intx,inty) 判断在x,y位置的棋子是否与左右的棋子连成五子,能连则返回1,否则返回0 判断纵向连成五子 intis_cross_y(intx,inty) 判断在x,y位置的棋子是否与上下的棋子连成五子,能连则返回1,否则返回0 判断左上到右下的斜线是否连成五子 intis_cross_lt(intx,inty) 判断在x,y位置的棋子是否与左上右下斜线位置上的棋子连成五子,能连则返回1,否则返回0 判断右上到左下的斜线是否连成五子 intis_cross_rd(intx,inty) 判断在x,y位置的棋子是否与右上左下斜线位置上的棋子连成五子,能连则返回1,否则返回0 记录当前棋局 intrecord() 记录当前棋盘上的棋子位置信息到棋局记录数组,记录成功返回1,不成功返回0 悔棋 introllback() 悔一步棋,悔棋成功返回1,悔棋不成功返回0 悔多步棋 introllback(intsteps) 悔多步棋,悔棋成功返回1,悔棋不成功返回0 复盘 voidplay(intstep_id) 显示第step_id步的棋盘所有棋子位置 存储棋局 voidsave(char*filename) 将当前棋局存储到文件(filename)中,存储成功返回1,存储不成功返回0 屏幕显示 主函数 3.21点游戏(难度系数: A) (1)系统变量(基本) 纸牌类型: inti_type(暂定4种,黑桃、红心、梅花、方块) 纸牌点数: inti_card(0<=i_card<13) 当前局牌库: intcards[i_card*i_type](当前待发的牌) 当前纸牌: inti_cur_card(0<=i_cur_card 当前比赛选手数: 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数据
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 南昌 航空 大学 历届 语言 选题
![提示](https://static.bdocx.com/images/bang_tan.gif)