报数游戏,从1报到20,每次晋级赛都输可以报一个或两个连续的数,最后报20为输,怎样报每次晋级赛都输都赢

&&问题点数:0&&回复次数:9&&&
有n个人a1,a2…,an围成一圈报数,每报到m的人就出队,请问最后一个出队的人编号是多少?
有n个人a1,a2…,an围成一圈报数,每报到m的人就出队,请问最后一个出队的人编号是多少。用数组编写一个函数模拟该过程。有请高手帮忙~~~
搜索更多相关主题的帖子:
等 级:新手上路
帖 子:83
可以用单循环链表
等 级:新手上路
帖 子:15
回复 2# 的帖子
如果不用链表呢?用的话怎么实现啊?
来 自:西安
等 级:新手上路
帖 子:12
约瑟夫环 的问题
等 级:新手上路
经典的问题 谭浩强的C书 里的习题里就有吧
来 自:水星
等 级:ID已被封
帖 子:1868
typedef struct node*
#include&stdlib.h&
struct node
main(int argc,char *argv[])
&&int i,N=atoi(argv[1]),M=atoi(argv[2]);
&&link t=malloc(sizeof *t),x=t;
&&t-&item=1;t-&next=t;//t/X-&□x-&□-&t
&&for(i=2;i&=N;i++)
&&& x=(x-&next=malloc(sizeof *x));
&&& x-&item=i;x-&next=t;
&&while(x!=x-&next)
&&& for(i=1;i&M;i++)x=x-&//x-&□□□□□□□□□
&&& x-&next=x-&next-&
&&printf(&%d\n&,x-&item);
//J(7)=J(111)-&111=7
//J(6)=J(110)-&101=5
[[it] 本帖最后由 liyanhong 于
16:50 编辑 [/it]]
爱上你 是 我的错&&可是离 开&&又舍不得&&听着你为我写的歌&&&&&好难过
如果说 我说如果&&我们还 能&&重新来过&&&不去计 较 谁对谁错&&会怎么做
等 级:新手上路
帖 子:85
这好像是个很经典的题目,但是不是为什么楼上的程序代码出现了不可识别的字符呢。
等 级:新手上路
写的好象有点问题
等 级:新手上路
#include&stdio.h&
#define N 100&&&&&&&&&&&&&&/*围成圈的最大人数*/
#define A 3&&&&&&&&&&&&&&&&&/*报数为A的人出列*/
void main()
{int i,km,n,num[N],*p;
printf(&input number of person n=&);
scanf(&%d&,&n);
for(i=0;i&n;i++)
*(p+i)=i+1;
i=0;k=0;m=0;
while(m&n-1)
{if(*p+i)!=0) k++;
{*(p+i)=0;k=0;m++;}
if(i==n) i=0;
while(*p==0) p++;
printf(&the last one is NO.%d\n&,*p);
等 级:业余侠客
帖 子:474
专家分:236
[bo][un]liyanhong[/un] 在
12:40 的发言:[/bo]
人家要数组的,你给链表的。
without further ado, let’s get started
版权所有,并保留所有权利。
Powered by , Processed in 0.022184 second(s), 7 queries.
Copyright&, BCCN.NET, All Rights Reserved6个人做游戏,从第一个人开始报数,从1开始报,第六个人报完以后又回到第一个人开始报数,请问谁报到3000_百度知道
6个人做游戏,从第一个人开始报数,从1开始报,第六个人报完以后又回到第一个人开始报数,请问谁报到3000
C语言流程图,
&#47,程序开始void main(){int a[5], &#47,内层循环,i,i&lt,&#47,变量while(j&lt,i++)&#47,打不出,&#47,h&#47,&#47,循环开始,&#47,=3000) &#47,i),报数人所报的数}}printf(&quot,当循环满足3000跳出{for(i=0,定义数组,程序也没编辑不知道对不对.不过大致思路是这样。,,
&#47,&#47,=5,查数的变量变化a[i]=j,&#47,打印结果流程图需要图形来画,控制数组{j++,
&#47,&#47,#include stdio,%d个人报到3000&quot,j=0,
其他类似问题
其他3条回答
能起什么作用呢。,每个人都重复报了500遍,
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁&&问题点数:0&&回复次数:15&&&
有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位
我自己写的程序如下,编译没问题,但得不到正确答案,希望帮忙纠错
#include&stdio.h&
#define N 20
int main()
&&& int i,s,a[N+1];
&&& a[0]=0;
&&& for(i=1;i&=N;i++)
&&& a[i]=i;
&&& for(i=1;i&=N;i++) {
&&& if(a[i]!=0)
&&&&&&{ s++;
&&&&&&&&if(s%3==0) a[i]=0; }
&&& if(i==N&&s==1)
&&& if(i==N) {i=0;s=s%3;}
&&& for(i=1;i&=N;i++)
&&& if(a[i]!=0)
&&& printf(&%d\n&,i);
&&& scanf(& &);
&&& return 0;
搜索更多相关主题的帖子:
来 自:水星
等 级:ID已被封
帖 子:1868
你怎么知道得出的不是正确答案??
爱上你 是 我的错&&可是离 开&&又舍不得&&听着你为我写的歌&&&&&好难过
如果说 我说如果&&我们还 能&&重新来过&&&不去计 较 谁对谁错&&会怎么做
等 级:新手上路
帖 子:11
运行之后什么都没有,只是光标在那闪
来 自:水星
等 级:ID已被封
帖 子:1868
#include&stdio.h&
#define N 20
&&&&&int i,j,k,n=20;
&&&&&int a[N];
&&&&&for(i=0;i&N;i++)
&&&&&& a[0]=i+1;
&&&&&while(j&N-1)
&&&&&& if(a[i]!=0)k++;
&&&&&& if(k==3)
&&&&&&&&&&&a[i]=0;
&&&&&&&&&&&k=0;
&&&&&&&&&&&j++;
&&&&&& i++;
&&&&&& if(i==N)i=0;
&&&&&for(i=0;i&N;i++)
&&&&&& if(a[i]!=0)
&&&&&&&&&printf(&%d\n&,i+1);
[[it] 本帖最后由 liyanhong 于
21:13 编辑 [/it]]
爱上你 是 我的错&&可是离 开&&又舍不得&&听着你为我写的歌&&&&&好难过
如果说 我说如果&&我们还 能&&重新来过&&&不去计 较 谁对谁错&&会怎么做
等 级:新手上路
帖 子:11
但我想问我的算法错在哪里
来 自:水星
等 级:ID已被封
帖 子:1868
//for(i=1;i&=N;i++)&&&&&&
//if(i==N) {i=0;s=s%3;}
你不觉别扭吗
//你的程序格式写的很糟糕
爱上你 是 我的错&&可是离 开&&又舍不得&&听着你为我写的歌&&&&&好难过
如果说 我说如果&&我们还 能&&重新来过&&&不去计 较 谁对谁错&&会怎么做
等 级:新手上路
帖 子:16
个人建议用链表操作
还有版主说的太对了。。
等 级:新手上路
帖 子:11
格式我会注意的
重点是我想知道错在哪,该怎么改
等 级:论坛游民
帖 子:428
专家分:28
建立一个循环链表就可以了
等 级:新手上路
帖 子:16
算法没错吧。。其实你那个跳出条件有问题。。。。把他放在第一行
if(i==N&&s==1)&&这个。。因为你到最后一个的时候你先改变S的值在判断了。。这个算是BUG吧。。
最后面到20时。。。I=20 S=1 由于a[20]是不等与零的。然后就跳入
if(a[i]!=0)
&&&&if(s%3==0)
&&&&a[i]=0;
}改变了S值然后就死循环了- -!
版权所有,并保留所有权利。
Powered by , Processed in 0.045622 second(s), 7 queries.
Copyright&, BCCN.NET, All Rights Reserved甲乙两人玩报数游戏,每人可以报一个数字或连续两个数字,从1报起,谁报到20就获胜,问先报者和后报者谁能获胜_百度知道
甲乙两人玩报数游戏,每人可以报一个数字或连续两个数字,从1报起,谁报到20就获胜,问先报者和后报者谁能获胜
提问者采纳
先报者获胜。A一开始报两个数字,此后若B报一个数字则A报两个数字,B报两个数字则A报一个数字,以此类推,A就能获胜
三人学号是7。8。9,你能否在523后添上3个数,是它能被三人学号(789)整除
是被789整除还是能被7.8.9整除?
不晓得呃,那就7。8。9,好了还有一个哦一个三位数abc能被9整除,交换a与c的位置,所得数能被5整除,求满足条件的最小三位数3Q3Q 快快啊
abc那个是504
有木有过程(怨恨老师ing)
..cba能被5整除则a为0或5,但abc是三位数,则a=5。500/9=55余5,495+9=504
谢谢,感激不尽,啦啦啦
还有一题就搞定了
还有第二道是523152,这个类似与第三道,7*8*9=504,;504=。+504=523152。
当然也可以是656)
提问者评价
谢谢谢谢啦啦啦啦
其他类似问题
其他2条回答
先报数者获胜,只有他能抢到“5、8、11、14、17”这几个数字。如果他抢到17则必是由他报数20.
先报者可以获胜。先报者第一次报2,剩余的是18=3*6这样,先报的只要保证和后报者报的时候成3就能保证获胜。
等待您来回答
您可能关注的推广
下载知道APP
随时随地咨询
出门在外也不愁当前位置: >
> 自己编了个约瑟夫问题,求问题出在哪问题:n个人围成一圈,从第一个人开始依次从1到m循环报数,当报到
自己编了个约瑟夫问题,求问题出在哪问题:n个人围成一圈,从第一个人开始依次从1到m循环报数,当报到
gyq513 & at
自己编了个约瑟夫问题,求问题出在哪!问题:n个人围成一圈,从第一个人开始依次从1到m循环报数,当报到m的时候此人出圈,然后从下一个人开始重新报数,直到圈中只剩一人为止.打印出最后一个人的原始编号。实现要求:& 采用数组模拟游戏过程参加游戏人数最多50人:即数组上限为50。可以输入参加游戏人数,以及报数上限这是我的程序#include&stdio.h&main(){ int a[50]={0},x,n,i,y,l; printf(&Please input 2 numbers:&); scanf(&%d%d&,&x,&n); for(i=n-1,l=0,y=0;;y++)
{ if(a[y]==1)
if(l==x-1)
if(y=x-1) y=0;
} for(i=0;;i++) {
if(a[i]==0)
} } printf(&The number is %d\n&,l); return 0;}
& 比如输入5,答案应该是3,不过这个程序是1
  C/C++ code  #include&stdio.h&
int a[50]={0},x,n,i,y,l;
printf(&Please input 2 numbers:&);
scanf(&%d%d&,&x,&n);
for(i=n-1,l=0,y=0;;y++)
if(a[y]==1)
这个不需要
表达现在位置的应该是y而不是i
if (++l==x-1)
在这里判断是否只剩下一个人了
这个也不需要,不是每次循环都有一个人被拉出去
//if(l==x-1)
这里移到上面去了
if(y==x-1)
这里的比较算符少打了一个等号
这里你是想把y指到开始位置,但你忘了循环体结束后它会被增量。你得让他再小点才行。
for(i=0;;i++)
if(a[i]==0)
printf(&The number is %d\n&,l);
}gys0283 & &
& & (0)(0)引用
本问题标题:
本问题地址:
温馨提示:本问答中心的任何言论仅代表发言者个人的观点,与希赛网立场无关。请对您的言论负责,遵守中华人民共和国有关法律、法规。如果您的言论违反希赛网问答中心的规则,将会被删除。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&&&增值电信业务经营许可证湘B2-

我要回帖

更多关于 报数三国 的文章

 

随机推荐