C语言练习题!!求高手解答

2.a,b,c,d,e,f,g七个人围着一个桌子从a开始123报数,数到3的人退出最后剩一个人的时候结束,问最后剩下谁?编程实现谢谢回答可是我还没学函数·。。能不能不用函... 2. a,b,c,d,e,f,g七个人围着一个桌子
从a开始123报数,数到3的人退出
最后剩一个人的时候结束,问最后剩下谁?
编程实现
谢谢回答 可是 我还没学函数·。。能不能不用函数做出来啊·。 做出后给分

我的意思是我是初学者 只学了·循环 数组 剩下的 函数都没学

if for while 和数组 我学了这些就 。
你写的链表我不懂啊
展开
 我来答
白马相思白发生b
2010-07-03 · TA获得超过1752个赞
知道小有建树答主
回答量:735
采纳率:0%
帮助的人:913万
展开全部
#include "stdafx.h"
#include <iostream>
using namespace std;

struct child
{
int num;
child *link;
};

void init(int n); //初始化
void gamestart(int n,int m);//模拟游戏函数
child *head;//链表头
child *present; //当前结点
child *end;//链表尾

int main(int argc, char* argv[])
{
int m,n;
cout<<"请输入孩子的个数:"<<endl;
cin>>n;
cout<<"请输入正整数m"<<endl;
cin>>m;
init(n);
gamestart(n,m);
cout<<"第"<<present->num<<"个孩子获得胜利!"<<endl;
delete present;
return 0;
}

void init(int n)
{
head = new child;
head->num =1;
present=head;
for(int i=1;i<n;i++)
{
present->link=new child;
present->link->num=i+1;
present=present->link;
}
present->link=head;
end=present;
present=head;
}
void gamestart(int n,int m)
{
child *pGuard=end;
while(n!=1)
{
for(int j=1;j<m;j++)
{
pGuard=present;
present=present->link;
}
pGuard->link=present->link;
delete present;
present=pGuard->link;
n--;
}
}
sxltwx
2010-07-04 · TA获得超过183个赞
知道答主
回答量:35
采纳率:0%
帮助的人:45.6万
展开全部
这个问题是著名的约瑟夫问题的一个实例,你可以在百度百科上看一看这个问题的解答方案http://baike.baidu.com/view/213217.htm?fr=ala0_1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式