高手进!!!帮忙!!!加急!!!
1. 约瑟夫(Josephus)环问题 问题描述:N个人的编号分别为1—N,他们按从1至N的顺序组成一个圆圈。从第一个人开始顺序循环数数,每数到M时输出该人的编号,并使此人退出圆圈。当此人退出圆圈后,报数的工作要从下一个人开始继续,剩下的人仍然是围成一个圆圈的。依次循环直至所有人退出圆圈为止。
程序输入:N和M的值。
程序输出:依次退出人员的编号,显示到屏幕上。
提示:对于所有人围成的圆圈所对应的数据结构可以采用一个不带头结点的循环链表来描述。为了记录退出人的先后顺序,可以采用一个顺序表进行存储。程序结束后再输出依次退出的人的编号即可。
2. 1--20的圈圈问题
问题描述: 1-20这20个整数排列成一个圈,要求每两个相连数的和都是素数,求这20个整数的排列顺序。
程序输入:无
程序输出:1-20这20个数的排列顺序。
提示:采用栈的形式可以方便进行穷举。若成功排成一个符合要求的圈圈,则栈满员,否则栈为空。
3. 学生成绩统计问题
问题描述:一个老师在一学期里教了N门课程,课程编号分别为A1,A2,…AN。每门课程有M个班选修,例如A1课程相应的班号为B11,B12,…B1M,相应的班级人数为m1,m2,…mM。随机给出每门课中每个班每个学生的成绩,成绩范围为0—100分。要求:1)编程统计每门课的平均成绩,每个班每门课的平均成绩。2)按成绩从大到小顺序输出每门课每个班的成绩和学生学号(例如1。。。m1)。3)给出一门课的编号Ai和一个班的编号Bij,并给出一个成绩,查找取得该成绩的学生人数。
程序输入:1、2) N、M以及m1,m2,…mM的值。3)Ai、Bij以及一个成绩。
程序输出:针对三道小题设计菜单选项;按照每道题目的要求给出相应的输出。
提示:第2)题考察的是排序方法,可以采用简单的冒泡排序;第3)题考察的是查找方法,可以采用经典的二分查找方法,但注意有多个同学成绩相同的情况下,可以多次查找或者判断找到原作元素的近邻位置。由于参数较多,注意程序界面的友好性。