编写程序求解以下问题,现有运动会门票要赠与你们班(两个班各有67人,学号从1到67)的10个幸运儿,要求采用约瑟夫序列来抽签,全班以学号顺序排号围坐在一张圆桌周围。从编号为18的人开始顺序报数,数到18的那个人出列;他的下一个人又从1开始报数,数到18的那个人又出列;依此规律重复下去,直到圆桌周围的剩下10个人就是幸运儿。程序有如下要求:
a) 读取你们班名单文本文件的内容,存入一个单向链表,并以学号排序,节点要求保存学号,姓名和性别等信息。
b) 针对这个链表进行以上的问题求解。
c) 程序输出10个幸运儿的学号,姓名,性别这道题目用C可以做得出来,如果用C#,应该怎么做呢?求高手赐教!!
a) 读取你们班名单文本文件的内容,存入一个单向链表,并以学号排序,节点要求保存学号,姓名和性别等信息。
b) 针对这个链表进行以上的问题求解。
c) 程序输出10个幸运儿的学号,姓名,性别这道题目用C可以做得出来,如果用C#,应该怎么做呢?求高手赐教!!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace Difficult
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("请输入参加游戏的人数");
int num = int.Parse(Console.ReadLine());
Console.WriteLine("请输幸运的数字");
int unluck = int.Parse(Console.ReadLine()); int[] people = new int[num];
for (int i = 0; i < people.Length; i++)
{
people[i] = i + 1;
} int[] On = new int[num];
int sum = 1; int count = 0;
do
{
for (int i =0; i<people.Length; i++)
{
if(On[i] == 0){
if (sum % unluck == 0)
{
On[i] = 1;
count++;
}
sum++;
}
if (i == people.Length)
{
i = 0; }
}
}while (count < people.Length-10); Console.Write("获得票的人是:");
for (int i = 0; i < On.Length; i++)
{
if (On[i] == 0)
{
Console.Write(people[i]+"\t");
}
}
Console.ReadLine();
}
}
}