
第一类题目 应用类:
题目1:年历显示
功能要求:
(1)输入一个年份,输出是在屏幕上显示该年的日历。假定输入的年份在1940-2040年之间。
(2)输入年月,输出该月的日历。
(3)输入年月日,输出距今天还有多少天,星期几,是否是公历节日。
题目2:小学生测验
面向小学1~2年级学生,随机选择两个整数和加减法形成算式要求学生解答。
功能要求:
(1)电脑随机出10道题,每题10分,程序结束时显示学生得分;
(2)确保算式没有超出1~2年级的水平,只允许进行50以内的加减法,不允许两数之和或之差超出0~50的范围,负数更是不允许的;
(3)每道题学生有三次机会输入答案,当学生输入错误答案时,提醒学生重新输入,如果三次机会结束则输出正确答案;
(4)对于每道题,学生第一次输入正确答案得10分,第二次输入正确答案得7分,第三次输入正确答案得5分,否则不得分;
(5)总成绩90以上显示“SMART”
,80-90显示“GOOD”,70-80显示“OK”,60-70显示“PASS”,60以下“TRY AGAIN”
。
题目3:运动会比赛计分系统
要求:初始化输入:N-参赛学校总数,M-男子竞赛项目数,W-女子竞赛项目数
各项目名次取法有如下几种:
取前5名:第一名得分7分,第二名得分5,第三名得分3,第四名得分2,第五名得分1;取前3名:第一名得分5,第二名得分3,第三名得分2;
功能要求:
(1)系统以菜单方式工作
(2)由程序提醒用户填写比赛结果,输入各项目获奖运动员信息。
(3)所有信息记录完毕后,用户可以查询各个学校的比赛成绩
(4)查看参赛学校信息和比赛项目信息等。
题目4:学生学籍管理系统
用数据文件存放学生的学籍,可对学生学籍进行注册,登录,修改,删除,查找,统计,学籍变化等操作。
功能要求:
(1)系统以菜单方式工作。
(2)登记学生的学号,姓名,性别,年龄,籍贯,系别,专业,班级;修改已知学号的学生信息;
(3)删除已知学号的学生信息;
(4)查找已知学号的学生信息;
(5)按学号,专业输出学生籍贯表。
(6)查询学生学籍变化,比如入学,转专业,退学,降级,休学,毕业。
题目5:排班系统
学校实验楼有7名保安人员:钱、赵、孙、李、周、吴、陈。由于工作需要进行轮休制度,一星期中每人休息一天。预先让每一个人选择自己认为合适的休息日。请编制程序,打印轮休的所有可能方案。当然使每个人都满意,例如每人选择的休息日如下:
钱:星期一、星期六
赵:星期二、星期四
孙:星期三、星期日
李:星期五
周:星期一、星期四、星期六
吴:星期二、星期五
陈:星期三、星期六、星期日
运行结果:
Solution: 1
赵 钱 孙 李 周 吴 陈
=============================================================
星期四 星期一 星期三 星期五 星期六 星期二 星期日
Solution: 2
赵 钱 孙 李 周 吴 陈
=============================================================
星期四 星期一 星期日 星期五 星期六 星期二 星期三
Solution: 3
赵 钱 孙 李 周 吴 陈
=============================================================
星期四 星期六 星期三 星期五 星期一 星期二 星期日
Solution: 4
赵 钱 孙 李 周 吴 陈
=============================================================
星期四 星期六 星期日 星期五 星期一 星期二 星期三
题目6:通讯录程序设计
设计一个实用的小型通讯录程序,具有添加,查询和删除功能。由姓名,籍贯,电话号码1,电话号码2,电子邮箱组成,姓名可以由字符和数字混合编码。电话号码可由字符和数字组成。实现功能:
(1)系统以菜单方式工作
(2)信息录入功能
(3)信息浏览功能
(4)信息查询功能
(5)信息修改功能
(6)系统退出功能
题目7:学生选课系统
假定有n门课程,每门课程有课程编号,课程名称,课程性质,学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于15)自由选课。试设计一个选修课程系统,使之能提供以下功能:
(1)系统以菜单方式工作
(2)课程信息和学生选课信息录入功能(课程信息用文件保存)
(3)课程信息浏览功能
(4)查询功能
(5)按学分查询
(6)某门课程学生选修情况(可选项)
题目8:机房收费管理系统
(1)输入功能:输入30名学生的学号、班级、姓名、上机起始时间。
(2)计算功能:计算每个下机学生的上机费用,每小时1元。
(上机费用=上机时间* 1.0/h ,不足一小时按一小时计算)
(3)查询功能:按条件(班级、学号、姓名)显示学生的上机时间。
(4)机器使用情况的显示(显示方式不限但要一目了然)
题目9:班级成绩管理系统
对一个有N个学生的班级,每个学生有M门课程。该系统实现对班级成绩的录入、显示、修改、排序、保存等操作的管理。功能要求:
(1)本系统采用一个结构体数组,每个数据的结构应当包括:学号、姓名、M门课程名称。
(2)本系统显示这样的菜单:
请选择系统功能项:
a、成绩录入
b、成绩显示
c、成绩保存
d、成绩排序
e、成绩修改(要求先输入密码)
f、成绩统计
1)显示每门课程成绩最高的学生的基本信息
2)显示每门课程的平均成绩
3)显示超过某门课程平均成绩的学生人数
g、退出系统
(3)执行一个具体的功能之后,程序将重新显示菜单。
(4)将学生成绩保存到文件中。
题目10:机房机位预定系统
20台机器,编号1到20,从早八点到晚八点。两小时一个时间段,每次可预定一个时间段。功能要求:
(1)系统以菜单方式工作
(2)查询,根据输入时间,输出机位信息。
(3)机位预定,根据输入的时间查询是否有空机位,若有则预约,若无则提供最近的时间段,另:若用户在非空时间上机,则将用户信息列入等待列表。
(4)退出预定,根据输入的时间,机器号撤销该事件的预定!
(5)查询是否有等待信息,若有则提供最优解决方案(等待时间尽量短),若无则显示提示信息。
题目11:班级档案管理系统
对一个有N个学生的班级,通过该系统实现对该班级学生的基本信息进行录入、显示、修改、删除、保存等操作的管理。
功能要求:
(1)本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:学号、姓名、性别、年龄、备注。
(2)本系统显示这样的菜单:
请选择系统功能项:
a 学生基本信息录入
b 学生基本信息显示
c 学生基本信息保存
d 学生基本信息删除
e 学生基本信息修改(要求先输入密码)
f 学生基本信息查询
(1)按学号查询
(2)按姓名查询
(3)按性别查询
(4)按年龄查询
g. 退出系统
(3)执行一个具体的功能之后,程序将重新显示菜单。
(4)将学生基本信息保存到文件中。
(5)进入系统之前要先输入密码。
题目12:职工工资管理系统
功能设计要求
1. 输入记录:将每一个职工的姓名、ID号以及基本工资、职务工资、岗位津贴、医疗保险、公积金的数据作为一个记录。该软件能建立一个新的数据文件或给已建立好的数据文件增加记录。
2. 显示记录:根据用户提供的记录或者根据职工姓名显示一个或几个职工的各项工资和平均工资。
3. 修改记录:可以对数据文件的任意记录的数据进行修改并在修改前后对记录内容进行显示。
4.查找记录:可以对数据文件的任意记录的数据进行查找并在查找前后对记录内容进行显示。
5. 删除记录:可删除数据文件中的任一记录。
6. 统计: (A)计算各项工资平均工资及总工资, (B)统计符合指定条件(如职工工资前三项之和在3000元以上、3000~2000元、2000~1000元) 以内的工资职工人数及占总职工人数的百分比。(C)按字符表格形式打印全部职工工资信息表及平均工资(包括各项总的平均工资)。
7.保存数据文件功能。
例如:职工工资信息表
ID号 姓名 基本工资 职务工资 津贴 医疗保险- 公积金- 总工资
01 张望 1286 794 198 109 135 2034
02 李明 1185 628 135 94 114 1740
03 王小民 5 438 98 73 1294
04 张效章 1350 868 210 116 150 2162
05 彭山 745 398 84 61 68 1098
各项平均工资 1092.2 625.2 145 88.8 108
题目13:工资纳税系统
个人所得税每月交一次,底线是1600元/月,也就是超过了1600元的月薪才开始计收个人所得税。个人所得税税率表一(工资、薪金所得适用)
级数----------全月应纳税所得额----------税率(%)
1--------------不超过500元的--------------------------5
2----------超过500元至2000元的部分------------10
3----------超过2000元至5000元的部分----------15
4----------超过5000元至20000元的部分---------20
5----------超过20000元至40000元的部分-------25
6----------超过40000元至60000元的部分-------30
7----------超过60000元至80000元的部分-------35
8----------超过80000元至100000元的部分------40
9----------超过100000元的部分---------------------45
表中的应纳税所得额是指以每月收入额减除1600元后的余额。
例如:计算为:2500-1600=900
应纳个人所得税额=500×5%+400×10% =65
再比如:我们用一个大额工资计算,25000元
应纳税所得额=25000-1600=23400
应纳个人所得税税额=500×5%+1500×10%+3000×15%+15000×20%+3400×25%=4475
要求:输入工资计算出纳税金额。
题目14:歌手比赛系统
对一次歌手比赛的成绩进行管理,功能要求:1、输入每个选手的数据包括编号、姓名、十个评委的成绩,根据输入计算出总成绩和平均成绩(去掉最高分,去掉最低分)。2、显示主菜单如下:1)输入选手数据 2)评委打分 3)成绩排序(按平均分)4)数据查询 5)追加学生数据 6)写入数据文件7)退出系统。
题目15:用英文单词模拟数学计算
读入两个小于100的正整数A和B,计算A+B。需要注意的是:A和B的每一位数字由对应的英文单词给出。
具体的输入输出格式规定如下:
输入格式:测试输入包含若干测试用例,每个测试用例占一行,格式为 "A + B = ",相邻两字符串有一个空格间隔。当A和B同时为zero时输入结束,相应的结果不要输出。
输出格式:对每个测试用例输出1行,即A+B的值。
输入样例:
one + two =
three four + five six =
zero seven + eight nine =
zero + zero =
输出样例:
three
nine zero
nine six
题目16:万年历查询程序
功能要求:
(1)提供菜单方式选择
(2)输入年份、月份、日期,计算得到的是这一天据今天有多少天,星期几;
(3)输入公历的年月日,输出农历年月日。
(4)输入农历节气,输出当年农历的年月日及公历年月日。可以假定只涉及年份是1940年到2040年。
题目17:用C语言设计一个简单的计算器
要求能够对输入的数
1.进行+,-,*,/,运算;
2.可以带括号( );
3.不限定运算式的输入长度.
(参考编译技术中语法分析原理)
第二类题目 小游戏和图形处理
题目18:图形时钟
功能要求:
在屏幕上显示一个图形时钟(用程序绘制一个与时钟样式相似即可),时间与系统时间一致,且要随着时间的走动准确的走动。
题目19:五子棋游戏
在一个方阵上通过两人对弈的形式,依次在棋盘上放置两种颜色的棋子,哪一方先让五个棋子形成一条直线(包括横、竖、对角线3个方向),即为获胜,本程序实现用键盘控制的五子棋游戏。游戏初始运行界面应为如下:
游戏操作规则:
按左右上下方向键移动棋子
按空格键确定落棋子
禁止在棋盘外按空格
你是否接受上述的游戏规则(Y/N)
如果输入Y,才可以进行游戏,进入正式的游戏界面,要绘制五子棋的棋盘,设置棋子颜色。
题目20:计算24游戏
要求:输入四个数通过加减乘除计算出24,显示计算过程,并提示成功信息。
题目22:输入盘子数(2个以上有效),移动速度,开始演示汉诺塔移动的步骤,要求:盘子,A,B,C柱需要自己绘制,初始时盘子在A柱上通过B柱最终移动到C柱上,显示出盘子在几个柱之间的移动过程。
题目21:井子棋游戏
1.目的与要求
(1)设计一个程序实现人与计算机玩井子棋游戏,假设计算机画×,人画O,人可选择是否先走。
(2)显示3×3方格的棋盘,一个玩家选择一个棋格画×,紧接着另一个玩家选择一个空棋格画O,双方轮流走棋,直到一个玩家占领一行,一列或一条对角线获胜,这时比赛结束。
(3)输出参考格式:
| 是否先走(Y/N)?y |
| 输入要走的棋格行号和列号:1,1 |
| +------+------+------+ |
| | | | | |
| +------+------+------+ |
| | | O | | |
| +------+------+------+ |
| | | | | |
| +------+------+------+ |
| 计算机选手走的棋格是:0,0 |
(1)选手及棋局状态:可以采用枚举类型定义选手{Human,Computer};选手棋局状态{WIN(胜),LOSE(负),TIE(平),UNEND(还没结束)}
(2)棋格位置:用棋格的行号和列号来表示
(3)棋格打分规则:
1如果棋盘上有棋子,则得0分;
2如果棋盘上没有棋子,但棋格所在行,列或对角线有两个×,则得6分;
3如果棋盘上没有棋子,但棋格所在行,列或对角线有两个O,则得5分;
4如果棋盘上没有棋子,但棋格所在行,列或对角线其他棋格有一个×和一个没有棋子,则得4分;
5如果棋盘上没有棋子,但棋格所在行,列或对角线其他棋格有一个O和一个没有棋子,则得3分;
6如果棋盘上没有棋子,但棋格所在行,列或对角线没有棋子,则得2分;
7如果棋盘上没有棋子,但棋格所在行,列或对角线有一个×和一个O,则得1分。
(4)选手走棋规则:选择分值最高值为计算机的走棋,如果有多个棋格的分值都为最高分,则随机选择一个分值最高的棋格作为计算机的走棋。
题目22:在屏幕上绘制国际象棋棋盘
题目23:在屏幕上绘制围棋棋盘
题目24:在屏幕上绘制中国象棋棋盘
题目25:五子棋游戏(MFC)
1.目的与要求
(1)游戏规则:传统五子棋的棋具与围棋相同,棋子分为黑白两色,盘为19×19,棋子放置于棋盘线交叉点上。两人对局,各执一色,轮流下一子。如果某一方下棋的棋子最先5子连续连成一线(行、列、对角线),则该方为赢家,游戏一局结束;如果棋盘下满未定胜负则为平局,游戏一局结束。
(2)功能模块:将程序分为图形显示、玩家控制、胜负判断和玩家计分四个模块。
1图形显示模块:程序开始运行时,给出欢迎及帮助界面;游戏开始后要求生成19×19的棋盘图像,并在棋盘上方提示当前落子方棋子颜色,游戏进行过程中,要求实时显示棋盘上已落下的棋子;分出胜负后,要求给出游戏结束画面。
2玩家控制模块:程序开始时,需玩家确定而后开始游戏;游戏过程中,两个玩家通过不同的按键移动光标,选择落子;游戏结束时,有玩家选择是否开始新棋局。
3胜负判断模块:实时监测棋盘上棋子,一旦某一色棋子出现五子连线,终止游戏程序,并着色连成一线的五子,弹出该色玩家胜出界面。
4玩家计分模块:一方玩家再胜利后通过对文件的操作进行计分,并输出于计分板上。
(3)其他要求:
1进入演示程序后,即显示欢迎界面,按任何键进入帮助界面,再按任何键可以进入主界面开始游戏。
2棋子的移动与落子有键盘上按键控制,本程序选取1P按键为W、S、A、D和空格键,2P按键为↑、↓、←、→和回车键,分别代表上移、下移、左移、右移光标和落子。在光标移动的过程中,光标按照玩家按键移动;在玩家按下落子按键后,程序自动调用棋子显示子程序和判断胜负子程序。1P、2P的落子后,程序会为落子处的数组元素赋一个特定值,用于判定胜负。
3游戏中esc键可以直接退出游戏,backspace键可以操作进行悔棋。
4游戏过程中,如果玩家1或者玩家2有一方获得胜利后,程序自动将提示哪一方获得了胜利,并将着色构成连珠的5个子。
5游戏结束且玩家选择不再继续后,跳出结束界面。退出程序。
2.实现提示
(1)程序不涉及人机交互,算法较为简单。首先,以落子为出发点,分别沿着水平、竖直和两条对角线方向(分别为45°和135°)进行搜索,看在这四个方向是否最后落子的一方构成连续五个棋子。为了提高搜索速度,尽量减少搜索范围。以落子为中心两侧各判断四子共九子,判断这九子中是否有最后落子的一方的连续五个棋子。只要最后落子的一方在任一方向上有连续五个棋子,就表示该盘棋局已经分出胜负。
(2)监控键盘输入的函数及各键的ASCII码值;图形方式下的输入、输出及其相关的函数;判定五子成一线的方法,即矩阵中行向、列向、两条对角线方向上是否有连续五子;调用系统提供的声音函数等。
题目26:俄罗斯方块游戏(MFC)
1.目的与要求
(1)游戏规则:7种状态的方块(长条型、Z字型、反Z字型、田字型、7字型、反7字型、T字型)随机产生,自由下落,落下时可由玩家用上、下、左、右控制键控制翻转和移动,以便以万家所需要的形态和位置落下。如果落下时,方块的方格能填满某一行,则这一行可消去。消去一行后,游戏可给玩家加分,若由存在空格的方块填满整个窗口,则游戏失败。
(2)游戏界面:游戏的背景色是黑色,方块用蓝色,在一定区域内运动和变形,落下后的障碍物用黄色显示。
(3)游戏形状:由数组作为存储方块状态的数据结构,各个方块要能实现下落、移动、旋转,旋转可设为顺时针或逆时针变形,一般为逆时针,实现下落底部方块的处理。
(4)键盘处理:方块下落时,可通过键盘方向键(上、下、左、右键)对该方块进行向上(变形),向下(加速)、向左、向右移动。
(5)鼠标事件:通过点击菜单栏中相应的菜单项,可以实现游戏的开始、结束,方块形状的变换,分数、等级的显示,以及游戏帮助等功能。
(6)显示需求:当不同的方块填满一行时可以消行,剩余方块向下移动并统计分数。当达到一定分数的时候,会增加相应的等级。
2.实现提示
(1)方块如何实现旋转:通用的方法是旋转90度,还可以把每个方块各种变形的样子都用结构体定义好,形成一个封闭的链表,变形一次指针指向下一种形状。
(2)方块是否还能下落:用一个带有返回值的函数,若碰撞则说明不能下落,返回1;反则说明没有碰撞,返回0。即将整个4×4方块数组下落看成一个单位长度,与游戏空间数组有重叠的1,则在当前位置4×4数组是1的地方赋值给游戏空间对应的数组元素,表示停止下落,并画有1 的地方。对于左移、右移一个单位长度有重叠的1 ,则不允许左移、右移,继续自然下落。
(3)方块如何实现消行:先认为每一行都是满1的,从游戏空间的数组由上到下扫描,一旦测试到某一行中某个列元素为0,则认为这一行没满,跳出这行的扫描循环,进入下一行的扫描。若扫描完某一行的元素都没有发现0,则以这行以上的每一行完完整整地将上一行的元素赋值给下一行,这个过程以由下到上进行,然后将整个游戏空间画黒,再在有1的地方画小正方形。
第三类题目 数学计算
题目27:多项式乘法的实现
已知如下两个多项式
P(x)=PX+ PX+...+PX+P
Q(x)=qX+qX+...+qX+q
求它们的乘积多项式 S(x)=sX+...+sX+s。
可以定义两个一维数组p,q,按照次数从高到低存储两个多项式的系数,定义一维数组来s来存储结果;利用函数来完成对结果多项式各项系数的计算,最后在屏幕上计算结果。
题目28:实现带有括号的四则运算
输入是一个带有括号的四则运算表达式,输出是计算得出的正确计算结果。例如:输入:123+213-67*34+345/23*45*(34+34-345+245+567)回车,然后程序计算得出结果为:359183
题目29:线性方程组求解
输入是N(N<256)元线性方程组Ax=B,输出是方程组的解,也可能无解或有多组解。可以用高斯消去法求解,也可以采用其它方法。
题目30:n阶方阵求逆
输入是一个n(n<256)阶方阵A,输出是它的逆矩阵,要求还要再将得到的逆矩阵与原来的矩阵相乘,验证其结果是单位矩阵。
题目31:矩阵操作
1.目的与要求
(1)设有两个矩阵A=(aij)m×n,B=(bij)p×q。编写矩阵输入、输出、转置、求和、求差、求积等函数。
(2)设计一个菜单,具有求矩阵的转置、求矩阵的和、求矩阵的积、退出等基本的功能。在求矩阵的和或求矩阵的积时要求能够先提示输入两个矩阵的,然后再进行相应的操作。
2.实现提示
(1)利用循环语句和数组编写矩阵输入函数INPUT_MAT,通过该函数完成矩阵的输入并返回保存矩阵的三元组(不能使用全局变量);
(2)利用循环语句和数组编写矩阵输出函数OUTPUT_MAT,通过该函数完成矩阵的输出,输出的形式是标准的矩阵形式(即二维数组的形式);
(3)求矩阵的转置,矩阵的转置A’=(aji)n×m,转置前输出原矩阵,转置后输出转置矩阵;
(4)求矩阵A、B的和。矩阵A和B能够相加的条件是:m=p,n=q;矩阵A和B如果不能相加,请给出提示信息;若能够相加,则求和矩阵C并输出C;
C=A+B=(cij)m×n,其中cij=aij+bij
(5)求矩阵A、B的差。矩阵A和B能够相减的条件是:m=p,n=q;矩阵A和B如果不能相减,请给出提示信息;若能够相减,则求差矩阵C并输出C;
C=A-B=(cij)m×n,其中cij=aij-bij
(6)求矩阵A、B的积。矩阵A和B能够相乘的条件是:p=n;矩阵A和B如果不能相乘,请给出提示信息;若能够相乘,则求积矩阵D并输出D;
D=A×B=(dij)m×q,其中dij=∑aik×bkj,k=1,2,……,n
第四类题目 系统相关题目
题目32:设计一个模拟的时间条的程序
基本要求:一般我们在安装程序的时候,会经常看到有一个时间条表示程序安装的进度,这样用户就能够了解到安装还剩余多少时间。本程序实现的就是这个功能。当然,若要将其真正运用到某个程序中,还要加以修改,以便使之的进度能够真正的与应用程序的进度吻合。
创新要求:在基本要求达到后,进行创新设计。
题目33:电子英汉词典设计
一、问题描述
英汉词典作为一个常用的学习工具,是我们经常要使用的。该系统能完成一个简单的电子英汉词典的功能,如:单词的查找、增词、删除、修改和维护等工作。
二、功能描述
1.在计算机中建立有限规模的电子英汉词典(文件),利用程序实现电子英汉词典的查找、增词、删除、修改和维护工作。
2.词典的内容为:每行对应一个词条,每个词条由两个字符串组成,字符串用若干空格符分开;前一个是单词字符串(英文),后一个是释义字符串(中文),使用分号作为多个释义的分隔符(无空格)。
3.对单词和释义字符串长度的限定分别为不少于20个与40个字符,词条数限定为不少于200条。
4.采用菜单工作方式。在一个操作执行之后,程序询问是否继续执行该操作。如输入Y或y,则重复同一操作,不退回到菜单;如输入其它信息,则回到菜单等待另一次选择。仅当选择推出操作时,程序应询问是否将修改后的词典存盘,并根据用户选择存盘退出或不存盘退出。
题目34:文件加密
文件的传输会有明文和密文的区别,明文发送是不安全的,用一个程序实现发送文件的加密和解密操作。加密算法,密钥设计由同学自己选择现有的加密解密算法或是自己设计。
要求:
(1)对文件的字符根据加密算法,实现文件加密。
(2)对操作给出必要的提示。
(3) 对存在的file1.txt文件,必须先打开,后读写,最后关闭。加密后的文件放在file2.txt。
(4)解密文件保存在file3.txt中。
题目35:约瑟夫问题
1.目的与要求
一个旅行社要从m个游客中选出一名旅客,为他提供免费旅行服务,选择方法是让m个游客围成一个圆圈,然后从信封中取出一张纸条,用上面写着的正整数n作为报数值,第一个人从1开始一个人一个人按顺时针报数,报到第n个游客时,令其出列。然后再从下一个人开始,从1顺时针报数,报到第n个游客时,再令其出列……,直到圆圈中只剩一个人为止。此人即为优胜者,将获免费旅行服务,例如m=8,n=3,出列的顺序将为3,6,1,5,2,8,4,最初编号为7的游客获得免费旅行服务。
2.实现提示
(1)如何把报n值的人设置为不再参加游戏的人?
使用数组,a[1],a[2],…,a[m]分别存储1,2,…,m。在不断地1,2,…,n报数种,把凡报n者置为 0,不再参加报数游戏。
(2)当报到数组末的时候,如何再连接到头部?
使用判断语句,判断到了最后元素,下一个要从第1个元素开始。
(3)程序什么时候结束报数?
使用计数器,其初始值为m,每置一次0(也就是出圈一个人),就减1,直到为1时,报数过程结束。
(4)如何知道最后剩下元素的下标?
可以有很多方法,最简单的方法是报数结束后,再重新一一查找,查找到不为0的元素,就是剩下的元素;另外一种方法是,用一个标志lease,每报一个数,当这个数不是n时,就记下这个元素的下标。
