问题 5168 --我是大赢家

5168: 我是大赢家★★★

时间限制: 1 Sec  内存限制: 128 MB
提交: 197  解决: 46
[提交][状态][命题人:]

题目描述

临近年关,学校为活跃新年气氛,举办迎新年联欢活动,最后一个节目为“我是大赢家”抽奖活动,为增强互动效果,最后中大奖的中奖者由教师们自已互动产生,游戏规则是:全校所有教工,每人获得一个随机编号,编号不重复,然后按照编号大小顺时针手拉手围成一个圈,最后一个老师与第一个老师手拉手,接下来由第1个人指定 m 的值,从编号为1的人开始报数(1,2,3…),报到 m 的人出圈,不再参加互动游戏,接着再由出圈人的上一位老师新指定 m 的值,并重新开始报数,逆时针报到 m 的人出列,游戏过程中出圈的人由老师们自已决定,如此继续,顺时针出一个人,逆时针出一个人,直到圈中只剩下一个人,他就是今天的最大赢家。小明编写了一个程序实现上述功能,程序运行时,输入参加游戏的人数,每次有人出圈后,再输入下一个要出圈的人数。

#include<bits/stdc++.h>
using namespace std;
//删除索引为p的游戏者 
int delete_(int a[110][3], int head, int p) 
{
	if (a[p][1] != -1) 
		a[a[p][1]][2] = a[p][2];
	if (a[p][2] != -1) 
		_____(1)_______;
	if (head == p) 
		head = a[head][2];
	return head;
}

int main() 
{
	int a[110][3];
	cout << "请输入参与游戏的人数 ";
	int n;
	cin >> n;
	for (int i = 0; i < n; i++) 
	{
		a[i][0] = i + 1;
		a[i][1] = i - 1;
		a[i][2] = i + 1;
	}
  	a[0][1] = n - 1;
  	a[n - 1][2] = 0;
  	int p, head;
  	p = head = 0;
  	while (_____(2)________) 
	{
	    cout << "请输入顺时针数第几位人出局 ";
	    int m;
	    cin >> m;
	    for (int i = 0; i < m - 1; i++) 
			_____(3)________;
	    head = delete_(a, head, p);
	    p = a[p][1];//退回到上一位游戏者 
	    if (a[head][1] != head) 
		{
	      cout << "请输入逆时针数第几位人出局 ";
	      cin >> m;
	      for (int i = 0; i < m - 1; i++) 
			p = a[p][1];
	      head = delete_(a, head, p);
	      ______(4)________;//退回到上一位游戏者 
	    }
  	}
  	cout <<______(5)________;
}

输入

输出

1)第1空的选项答案为_______

A. a[a[p][2]][1] = a[p][1]     B.a[a[p][2]][1]=-1     C.a[p][2]=1     D.a[p][2]=-1

2)第2空的选项答案为_______

A. a[head][0] != -1     B.a[head][1] == -1     C.a[head][1] != head     D.a[head][2] != head

3)第3空的选项答案为_______

A. p = a[p][0]     B.p = a[p][1]     C.p = a[p][2]     D. p = m + 1

4)第4空的选项答案为_______

A. p = a[head][1]     B.p = a[p][1]     C.p=a[p][2]     D. p = a[head][2]

5)第5空的选项答案为_______

A. a[head][0]     B. a[head][1]     C. a[head][2]     D. a[head]

提示

只需提交5个选项的答案,一行一个,均为大写字母。代码格式如下:

#include<iostream>
using namespace std;
int main()
{
	cout<<"A\n";
	cout<<"A\n";
	cout<<"A\n";
	cout<<"A\n";
	cout<<"A\n";
 	return 0;
}

来源

[提交][状态]