C语言有n个人围成一圈,顺序买房排号是什么意思。从第一个人开始报数(从1到3报 数)凡报到3的人退出圈子麻烦注释下代码

C语言:有N个人围成一个圈顺序编号,从第一个人开始报数(从1到M),凡报到M的人退出圈子,问最后一个_编程 - QQ志乐园
您的当前位置: &
C语言:有N个人围成一个圈顺序编号,从第一个人开始报数(从1到M),凡报到M的人退出圈子,问最后一个圈中的人的编号
来源: |人气:849 ℃|时间: 16:20:23
为了解决用户可能碰到关于"C语言:有N个人围成一个圈顺序编号,从第一个人开始报数(从1到M),凡报到M的人退出圈子,问最后一个圈中的人的编号"相关的问题,志乐园经过收集整理为用户提供相关的解决办法,请注意,解决办法仅供参考,不代表本网同意其意见,如有任何问题请与本网联系。"C语言:有N个人围成一个圈顺序编号,从第一个人开始报数(从1到M),凡报到M的人退出圈子,问最后一个圈中的人的编号"相关的详细问题如下:
急啊,帮个手!!~~#include &stdio.h&main(){int i,j,m,out,n,num[100],*p;printf("input nn"); /*输入n*/scanf("%d",&n);printf("input mn"); /*输入m*/scanf("%d",&m);p=for(i=0;i&n;i++)*(p+i)=i+1;i=0;j=0;out=0;while(out&n-1){if(*(p+i)!=0)j++;if(j==m){printf("%2dn",*(p+i)); /*依次打印退出人的编号*/*(p+i)=0;j=0;out++;}i++;if(i==n)i=0;}while(*p==0)p++;printf("%2dn",*p); /*最后打印剩下一人的编号*/}
再给你编个for循环的: main(){int m,n,a[100],out=0,i,j=0;scanf("%d%d",&n,&m); /*输入m,n*/for(i=0;i&n;i++)a[i]=i+1;while(out&n){for(i=0;i&n;i++){if(a[i]!=0)j++;if(j==m){printf("%dn",a[i]);out++;j=0;a[i]=0;} /*依次打印退出人的编号*/if(i==n-1)}}i=0;if(a[i]!=0){printf("%d",a[i]);i++;} /*最后打印剩下一人的编号*/}Mamakvoid Josegh(void){ int i,j,k,s1,w; s1=s; for(i=1;i&=n;i++) /*给n个人从1到n编号*/ p[i-1]=i; for(i=n;i&=2;i--) { s1=(s1+m-1)%i; /*下一个开始报数的人的编号是(s1+m-1)%i*/ if(s1==0) /*若s1为0,则说明要开始报数的是最后一个人*/ s1=i; w=p[s1-1]; /*将要出圈的人移至数组的最后*/ for(j=s1;j&=i-1;j++)
p[j-1]=p[j]; p[i-1]=w;
}}CBA0011如N:1~7个人,M为数如3;()中的数表退出1,2,(3),4,5,(6),7 ----第一次1,(2),4,5,(7) ---第二次1,4,(5)----第三次(1),4 ---第四次则剩下为4-------------------------------C程序代码:#include"stdio.h"#define MAX 10 void main() { int a[MAX+1]; int i,j,k; int n,m; scanf("%d %d",&n,&m); //n表示有多少人,m表示数几下就退出一个人 for (i=1;i&=n;i++) a[i]=1; i=1;j=0;k=0; while (1) //顺向思维算法 { if (a[i]==1) j++; if (j==m) {j=0;k++;a[i]=0;} if (k==n-1) i++; if (i&n) i=1; } for (i=0;i&=n;i++) if (a[i]==1) printf("%d",i); }------------------------------------懒猫
||||点击排行&1package&com.weidu.&2&3import&java.util.A&4import&java.util.S&5&6/**&*//**&7&*&@Title:&8&*&@Description:&9&*&@author&Afei10&*&@date:&日期:&时间:下午05:41:0411&*&@Copyright:西北师范大学纬度工作室&Copyright&(c)&201212&*&@version:1.013&*/14public&class&Qu3&{1516&&&&/**&*//**17&&&&&*&功能说明:1、&有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,&br&18&&&&&*&问最后留下的是原来第几号的那位。19&&&&&*&20&&&&&*&@Afei&21&&&&&*&@param&args22&&&&&*/2324&&&&public&static&void&main(String[]&args)&{25&&&&&&&&//&TODO&Auto-generated&method&stub26&&&&&&&&Scanner&input&=&new&Scanner(System.in);27&&&&&&&&System.out.print("请输入总人数:");28&&&&&&&&int&p&=&input.nextInt();29&&&&&&&&/**&*//****&初始化人员&***/30&&&&&&&&boolean[]&per&=&new&boolean[p];//&boolean数组表示站成一圈的人,false表示退出31&&&&&&&&for&(int&i&=&0;&i&&&per.&i++)&{32&&&&&&&&&&&&per[i]&=&true;33&&&&&&&&}3435&&&&&&&&/**&*//****&报号&***/36&&&&&&&&int&t&=&0,&len&=&per.37&&&&&&&&while&(len&&&1)&{38&&&&&&&&&&&&for&(int&i&=&0;&i&&&per.&i++)&{3940&&&&&&&&&&&&&&&&if&(per[i])&{41&&&&&&&&&&&&&&&&&&&&t++;42&&&&&&&&&&&&&&&&&&&&if&(t&==&3)&{43&&&&&&&&&&&&&&&&&&&&&&&&t&=&0;44&&&&&&&&&&&&&&&&&&&&&&&&per[i]&=&false;45&&&&&&&&&&&&&&&&&&&&&&&&len--;46&&&&&&&&&&&&&&&&&&&&}47&&&&&&&&&&&&&&&&}48&&&&&&&&&&&&}49&&&&&&&&}50&&&&&&&&/**&*//*****&结果&*****/51&&&&&&&&System.out.println("最后的情况:"&+&Arrays.toString(per));52&&&&&&&&for&(int&i&=&0;&i&&&per.&i++)&{53&&&&&&&&&&&&if&(per[i])&{54&&&&&&&&&&&&&&&&System.out.println("原来喊的数:"&+&(i&+&1)&%&3);55&&&&&&&&&&&&}56&&&&&&&&}57&&&&}58}59
&re: [java经典算法题]有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位?&&&&
@walnutprince
谢谢,学习了
&re: [java经典算法题]有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位?&&&&
Valuable information ..I am delighted to read this article..thank you for giving us this useful information. Great walk-through. I value this post.!!
&re: [java经典算法题]有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位?&&&&
@walnutprince和我的想法完全一样
&re: [java经典算法题]有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位?&&&&
下面那个递归resort方法有问题,如果刚好去除最后一个数,剩下的最后一个数的value是2的话,本来是1的第一个数会变成3被去除;需要加一个判断在resort方法里。输入的数大于等于7就会跟上一题不同的答案
&re: [java经典算法题]有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位?&&&&
@website design jp nagar
SB
&re: [java经典算法题]有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位?&&&&
谢谢分享!
阅读排行榜
评论排行榜温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
百度背信弃义,毫无理由关闭了所有的百度博客。
故此由原百度《做而论道》迁至此地。
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(288)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
在LOFTER的更多文章
loftPermalink:'',
id:'fks_',
blogTitle:'C语言编程:有n个人围成一圈,顺序排号。从第一个人开始报数...',
blogAbstract:' 题目:有N个人,从1到N编号,按照编号顺序围成一圈。从第一个人开始报数(从1报到3),凡报到3的人退出圈子。问:最后留下的人的编号是几号。==============================这是百度知道中,很常见的题目,多数都有了正确答案。如:'
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}一道c语言题目,数到三就退出题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出
   圈子,问最后留下的是原来第几号的那位。
  #include&stdio.h&
#include&stdlib.h&
int&main(void)
&&&&int&j=0,&k;
&&&&int&i,&n;
&&&&int&a[1024];
&&&&scanf("%d",&&n);
&&&&k&=&n;
&&&&for(i=0;i&n;i++)
&&&&&&&&a[i]=1;
&&&&for(;;)
&&&&&&&&for(i=0;i&=n;i++)
&&&&&&&&if(a[i]==0)
&&&&&&&&&&&&
&&&&&&&&j++;
&&&&&&&&if(j==3)
&&&&&&&&&&&&a[i]=0;
&&&&&&&&&&&&j=0;
&&&&&&&&&&&&k--;
&&&&&&&&if(k&==&1)
&&&&&&&&&&&&for(i=0;i&=n;i++)
&&&&&&&&&&&&if(a[i]==1)
&&&&&&&&&&&&&&&&printf("%d\n",&i+1);
&&&&&&&&&&&&exit(0);
&&&&&&&&if(i&==&n-1)
&&&&&&&&&&&&
&&&&return&0;
求助,这样的做法,为甚么输入的数在0~20之间是正确的,而超过20就会多出一个结果呢??
回答1:没有多一个结果啊。
ljhxiaolongxia
回答2:  //假设有n个人团团围做,从第1个人开始数数,数到第m个人时候,第m个人出列,
//然后继续从1开始数数,数到第m个人退出
#include&&stdio.h&
#include&&conio.h&
int&i,k,t;
static&char&f[1001];//0该座位未出圈,1该座位已出圈
void&main()&{
&&&&while&(1)&{
&&&&&&&&printf("Input&n&m(1000&=n&=m&=1):");
&&&&&&&&fflush(stdout);
&&&&&&&&rewind(stdin);
回答3:搜约瑟夫环。
回答4:F9设断点,F10/F11单步调试,跟踪变量的值,自己就能发现答案。
回答5:同意2L的,自己动手能真正学会
ljiajiaove

我要回帖

更多关于 海底捞微信排号 的文章

 

随机推荐