C#编程题·!!可追分

来源:百度知道 编辑:UC知道 时间:2024/09/23 23:14:56
1、有一个班采用民主投票方法推选班长,班长候选人共4位,每个人代号分别为1、2、3、4,每名同学填写一张选票,写上同意作为班长的候选人的代号。编写程序,输入每张选票所填的候选人代号,统计每一位候选人所得到的选票数,输出统计结果及哪位候选人当选,数字0作为输入终止标志,0、1、2、3、2、4以外的输入均为无效选票。求获得选票最多的候选人功能要求用自定义方法实现。
3、有一群人被困在了一个小岛上,他们只有一个竹排可以逃生,竹排只能坐一个人,于是他们决定通过玩退圈游戏来决定哪个人可以坐上竹排逃生。这些人围成了一个圆圈,从1开始每个人顺序编号,他们商定了一个不幸的数字unluckyNumber,然后从编号为1的数开始报数,报到unluckyNumber的倍数就退出游戏,直到最后剩一个人,这个人就可以得到竹排的人。编写程序,在Main()方法中输入玩游戏的人数和不幸的数字unluckyNumber,自定义Play()方法按游戏规则进行游戏,方法返回赢的人的编号。

static void Main()
{
int count = 10; //玩游戏的人数(自行设定)
int unluckyNumber = 7; //倒霉的数字(自行设定)
int luckyPeople; //幸运者的编号(设各玩家编号分别从1到count)
luckyPeople = Play(count, unluckyNumber);
}

//自定义Play()方法:(传入参数:玩游戏的人数及倒霉数字,返回幸运者的编号)
static int Play(int count, int unluckyNumber)
{
//把所有玩游戏的人从1开始按编号加入到集合里
for (int i = 1; i <= count; i++)
{
list.Add(i);
}

//每淘汰一个人后,重新开始报数的第一个人在集合里的下标(刚开始游戏时,默认第一个人开始报数,下标为 0)
int startIndex = 0;

//循环淘汰:因为参加的人数为count,所以要淘汰(count-1)个人。
for (int i = 1; i <= count - 1; i++)
{
//将要被淘汰的人在集合里的下标
int removeIndex = (startIndex+ unluckyNumber- 1)%list.Count;

//如果此轮被淘汰的人是集合中的最后一个,那么下一个报数的人就是集合中的第一个人
if (removeIndex + 1 == list.Count)
startIndex = 0;
//否则,下一个报数的人在集合里的下标将替代被淘汰者在集合中的下标
else
startIndex = removeIndex;

//根据下标,从集合里移除掉被淘汰的人
list.RemoveAt(removeIndex);
}