c语言编程:n个人围成一圈,从第一个开始报数

n个人围成一圈,从第一个开始报数,第m个退出,再从下一个开始重新报数,如此直到全部退出,求这n个人退出的顺序。

1个回答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C++,n个人围成一圈,从第一个人开始报数……
1、2、3 凡报到3的退出圈子,问最后剩下的人在原来是第几号?
n个人围成一圈报数出列
题目:n个人围成一圈,并依次编号为1,2,3,……,n,并以m数顺序报数,报到m时,该人出列,然后从出列的下一位开始重新报数,以此类推,编写代码依次输出出列人编号的顺序以及最后留在圈内的人的编号。 思路:可以使用结构体来为每个人编号和确认下一位的编号,采用循环依次数数,每次数数判断下一位是否已经出列,是则选择跳过。数到m时,输出当前人的编号,同时将该人编号清零,作为已经出列的标志。最后输
N个人围成一圈报数淘汰问题
C语言——N个人围成一圈报数淘汰问题 有13个人围成一圈(编号为1~13),从第 1个人开始从 1报数, 凡报到 5的倍数的人离开圈子,然后再数下去,直到最后只剩下一个人为止。 问此人原来的位置是多少号? #include <stdio.h> #define N 13 struct mystruct { int num; int flag; }; typedef struct m...
C语言编程:有n个人围成一圈,顺序排号。从第一个人开始报数...
题目:有N个人,从1到N编号,按照编号顺序围成一圈。从第一个人开始报数(从1报到3),凡报到3的人退出圈子。问:最后留下的人的编号是几号。==============================这是百度知道中,很常见的题目,多数都有了正确答案。如:http://zhidao.baidu.com/question/95065794.htmlhttp://zhidao.baidu.com/ques
n人围成一圈报数
题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位 思路:用一个数组存这n个人,里面的初始状态全设为1,表示都还在圈子里面。 然后用q来记录报的号,因为每次报号报到3的人就得退出圈子,用j来表示圈子内剩余的人数。 每当有人报到3时,j-1,同时将数组中该元素的值标记为0,q清0。 这样while循环结
c语言编程:n个人围成一圈,从第一个开始报数,第m个退出,再从下一个开始重新报数
n个人围成一圈,从第一个开始报数,第m个退出,再从下一个开始重新报数,如此直到全部退出,求这n个人退出的顺序。
有n个人围成一圈,顺序排号,从第一个开始报数
有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后最后留下的是原来第几号的那位. 提示:用环形链表实现 #include #include struct student {     int num; struct student * next; }; typedef struct student Stu;
n个人围成一圈,从1开始数
n个人围成一圈 从1开始数 数到k的人出去 接着从1开始数 数到k出去 最后出来的人是谁 c语言程序设计教程(第二版)谭浩强 经典例题 对于学习c语言有很大帮助
n人围成一圈报数问题
题目  有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数), 凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 思路:假如是8人,则需要一个数组将8个人的从1到8依次记下每人位数,还需要一个模拟报数口令的变量该变量最初为0,从1到2在到3,当该变量为3时,此时对应编号的人就要退出 那么第一次报数,3号退出,6号退出,有一个问题就是当这些人第一次报数到最后一个人之后,肯定还有
n个人围成一圈报数,从1开始,凡是报到3的退出,最后留下的是几号?
题目:n个人围成一圈报数,从1开始,凡是报到3的推出,最后留下的是几号? 普通代码: public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("请输入总人数:"); int p = input.nextInt(); //初始化人数组 ...
多人围成一圈报数问题
题目出自谭浩强C语言程序设计第四版 题目是有n个人围成一圈报数,顺序排号,从第一个人开始报数(从1到3),如果报道三则退出,问最后留下来的是原来第几号的那位 思路:首先为n个数设置一个编号,目的是最后结果知道是开始的几号,然后如果要解决围成圈报数的问题,最好的办法就是建立一个变量,使该变量递增,在某些条件下,对该变量进行重置,在while条件下保证他的连续性,这样就可以保证在第一遍循环
设有n个人围成一圈,从第一个人开始报数,数到第m个人出列,然后从出列的下一个人开始报数...
Java编程实现:设有n个人围成一圈,从第一个人开始报数,数到第m个人出列,然后从出列的下一个人开始报数,数到第m个人又出列,...,如此反复到所有人出列为止。设n个人的编号为1到n,打印出出列的顺序。package test; public class Test { public static void main(String[] args) { play(10,7); } p
n个人围成一圈,顺序排号
/////n个人围成一圈,顺序排号,从第一个人开始报数,报到指定的数时推出圈子,问最后留下的是原来第几号的那位 #include #define N 8 #define M 3 int main() { int a[N]; for (int i = 0; i a[i] = i+1; int *p = a; int j = 0;//设置每次循环时计数变量,范围是0—N-1;
n个人围成一圈,第一个开始报数(1-3),凡报数3退出。问最后留下的人是原来第几号?
#include int main() {    int i=0,j=0,k=0,n,x;    int a[100];    printf("please input a nu :");    scanf("%d",&n);    for (x=0 ; x    {       a[x] = x+1;    }    while (n-k > 1)    {    
n个人围一圈报数问题
题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 运行结果: /** * @author Administrator *N个人由N个Int型数值表示,每个Int值代表一个人 *每个人报的数存放在Int值中,可能为1~COUNT *如果代表某人的Int值为COUNT,则表示退出圈子,不再参与报数 *一直循环,对所
有N个人围成一圈,从第一个人开始报数,数到3的人出列,直到最后一个人,问他的编号
一个经典的问题: 若干个人(设为N)围成一圈,每人依次编号,从第一个人开始报数,报到3的人出列,下一个人接着从1开始报数,周而复始,直到最后一人。 问最后这个人的编号是多少? 今天想着用Python把它实现出来,代码如下: ### 确定总人数 N = 4000 ### 声明一个数组,并赋值为True list = [] for i in range(N): list.appen...
有N个人围成一圈,第一个人从1开始报数,报到M的人出列,求最后一个出列的人
在浏览面试题的时候发现了这道题目,百度后整理了一下思绪,觉得网上写的有点繁琐,将自己写的整理如下: package com.dewen.project; /** * 有N个人围成一圈,第一个人从1开始报数,报到M的人出列,求最后一个出列的人 * @author Dewen.Liu * */ public class Play { public void playGame(int
n个人顺时针围成一圈,从第每个人开始,报到n退出
#includernvoid main()rnrn //......较为繁琐的方法,接近普通人的思维rn /*int per[100];rn int order[100];rn int i,m,n,count=100,loca=0;rn printf("起始位置m:报的数目n:\n");rn scanf("%d,%d",&m,&n);rn int flag=0,cnt=0;rn for(i=0;i<=99;i++)rn per[i]=1;rn per[(m+n-2)%100]=0;rn while(count>=1)rn rn for(i=0;i<100;i++)rn rn if(flag==0 && per[i]==0)rn rn rn count--;rn flag=1;rn order[cnt++]=i+1;rn rn else if(flag==1 && per[i]!=0)rn rn loca++;rn if(loca==n)rn rn count--;rn order[cnt++]=i+1;rn per[i]=0;rn loca=0;rn rnrn rn rn rn for(i=0;i<100;i++)rn rn printf("%4d",order[i]);rn if((i+1)%10==0)rn printf("\n");rn */rn //.......较为简便的算法..............rn int per[100];rn int begin,ord,w;rn printf("enter the beginning of order and order\n");rn scanf("%d,%d",&begin,&ord);rn int i,j;rn for(i=1;i<=100;i++)rn per[i-1]=i;rn for(i=100;i>=2;i--)rn rn begin=(begin+ord-1)%i;rn if(begin==0)rn begin=i;rn w=per[begin-1];rn for(j=begin;j<=i-1;j++)rn per[j-1]=per[j];rn per[i-1]=w;rn rn j=0;rn for(i=99;i>=0;i--)rn rn printf("%4d",per[i]);rn j++;rn if(j==10)rn rn printf("\n");rn j=0;rn rn rnrnrn
m个人围成一圈,按1234..n(n<=m)次序循环报数,报到n的离开,最后一个离开的是原先的第几个人? (最先开始报数的设为第一个)
写了段程序,好象不行,谢谢大家指点rn..rn...rn rn/*rn**初始化FLAG标记***rn**MAXNUM为原先人数,SELET为最大报号数...rnicheck为报到SELET的人数,当为MAXNUM-1时说明只剩最后一个人.rn最后flag数组中为0的项就是答案...rn*/rnrn....rn...rnj = -1;rnicheck = 0;rnfor(;i<=MAXNUM-1;i++)rn flag[i] = 0;rn rn rn while(1)rn if(icheck == (MAXNUM - 1))break;rn for(i = 1;i <= SELET;i++)rn if(j >= MAXNUM )rn j=0;rn elsern j++;rn while(flag[j] == 1)rn if(j >= MAXNUM )rn j=0;rn elsern j++;rn rn if(i == SELET)rn flag[j] = 1;rn icheck++;rn rn rn.......rn.......rn不知道哪里出问题,..题目应该简单的,就是出不来...谢谢大家.
有n个人围成一圈编号1~n,顺序排好,从第一个人开始1到3报数,凡是报到3的人退出圈子,C语言编程出圈顺序
//可以实现查找,还没有优化,有兴趣者可以试试 #include void out_loop(int n) {   int i = 0; int j; int flag = 1; int a[n]; int c = n; for(i = 0; i a[i] = i+1; } for(;;) {//死循环 for(i = 0; i if(a[
有 n 个人围成一圈,顺序排号,从第一个开始报数(从 1 到 3 报数),凡是遇到 3 的人退出圈子,打印最后留下的人的号数。
参考程序:运行示例:
有n个人围成一圈,顺序排号,从第一个人开始报数(1-3报数),凡是报数为3的人退出圈子,问最后留下的人原来的编号是多少?
有n个人围成一圈,顺序排号,从第一个人开始报数(1-3报数),凡是报数为3的人退出圈子,问最后留下的人原来的编号是多少? n=int(input(“请输入总人数(从一个报数开始以1编号,逐次递增):”)) a=list(range(1,n+1)) while len(a)&amp;amp;amp;amp;gt;2: c = len(a) % 3 b = [] if c == 0: for i in range(1, len(a...
关于n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子
看了几篇感觉关于它的算法难一点可以用指针或链表我写了简单的 #include&amp;amp;lt;stdio.h&amp;amp;gt; int main() { int k,i; int num=0,sum=0; bool key=true; scanf(&amp;quot;%d&amp;quot;,&amp;amp;amp;k); int a[k]; for(i=0;i&amp;amp;lt;k;i++) { a[i...
五十道编程小题目 --- 37 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子 java
【程序37】  题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下 的是原来第几号的那位。  import java.util.Arrays; import java.util.Scanner; import net.mindview.util.Print; public class Test37 { publi
约瑟夫环问题:n个人围成一圈,第一个人从1开始报数,每次报到M的人出列,然后从1开始重新报数,求最后一个出列的人。 ...
#include&amp;lt;stdio.h&amp;gt; #include&amp;lt;stdlib.h&amp;gt; //n个人坐一圈,从头开始数,每次数到M的出列,求最后出列的人 void loop(int n,int M) { int a[n],m=0,number=0; int i,j; for(j=0;j&amp;lt;n;j++) { ...
有n个人,按顺序围成一圈,从第1个开始报数,第m个出列,直至所有人都出列...
问题:有n个人,按顺序围成一圈,从第1个开始报数,第m个出列,直至所有人都出列。   1、设计思路 1) 使用集合存放n个值; 循环n次 {   每次获取第m个,并删除第m个 }   1.1)循环n次 通过for循环n次,或者通过while语句遍历集合至空为止   1.2)每次获取第m个,并删除第m个 循环查找,每次循环计数1,当计数值count==m时,获取值并删除...
n个人围成一圈,从1开始报数,每数到m号出去,问最后出去的应该是多少号?
兄弟们,能给出一个数学公式吗?拜托了
n个人围坐一圈
/************************************ n个人围坐一圈,编号从1到n。依次从第一人开始,一人出去,留下一人;再出去2人,留下一人;...出去k人,留下一人;...直至所有人出完。给定n,最后出去的人编号是多少?编写程序实现:输入n,返回编号。 */ #include <stdio.h>//*********************************** st
用C# 做的 n个人围成一圈 可视化出圈过程
这是可视化的作业,没有错误,绝对可以用,有问题来找我...........................
有n个人围成一圈,顺序排号的做题顺序
加循环但是不能排序 #include int main() { int a[10] = { 0,1,2,3,4,5,6,7,8,9 }; int i = 0, j = 0, n = 0, m, h = 10, r, s, t; for (r = 5; r > 0; r--) { i = 0; j = 0; m = 2; while (j < h) { a[i++]
n个人围成一圈,顺序排号,从第1个人开始报数(1到3报数),凡报到3的人退出圈子,问最后留下的是原来几号
n个人围成一圈,顺序排号,从第1个人开始报数(1到3报数),凡报到3的人退出圈子,问最后留下的是原来几号
N个人围成一圈报数,报到某一个数的就出局,问你最后剩下来的人的号码?
记得在哪本书上看过这个程序的算法,但怎么都想不起来了,哪位大虾能帮忙给出正确的程序?谢谢!
有m个人围成一圈,顺序编号,编号固定,从1道n循环报数,遇到n出圈,依次类推。。。。。
#include&amp;lt;iostream&amp;gt;#include&amp;lt;iomanip&amp;gt;using namespace std;int main(){int a[100],m,n,i,*p,call=0,out=0;p=a;cout&amp;lt;&amp;lt;&quot;请输入圈的大小m:&quot;;cin&amp;gt;&amp;gt;m;cout&amp;lt;&amp;lt;&quot;请输入报数n:&quot;;cin&amp;gt;&amp;gt;n;f
n个人围成一圈报数,报到某一个数的就出局,问你最后剩下来的人的号码?
有n个人围成一圈,顺序编号。从第一个人开始报数,凡报到m的人退出圈子,问最后剩下的人是多少号 ?在网上找了 几个典型的答案 但是没看懂是什么意思 哪位能帮忙解释解释啊 谢谢了。rn public static int removeNM(int n, int m) rn LinkedList ll = new LinkedList(); rn for(int i = 0; i < n; i++) rn ll.add(new Integer(i+1)); rn [color=#FF0000]int removed = -1; [/color] rn while(ll.size() > 1) rn [color=#FF0000]removed = (removed + m) % ll.size();[/color] rn ll.remove(removed--); rn rn return ((Integer)ll.get(0)).intValue(); rn rn public static void main(String[] args) rn System.out.println(removeNM(3,2)); rn rn
有n个人围成一圈,顺序排号,从第一个开始报数(从1到3),报到3的退出,问最后留下的是几号
#include   #define n 90 int main()     {    int a[100],i,quit_num,k;  for(i=0;i a[i]=i+1;  quit_num=0;      //初始化退出人数 i=0;  k=0;  while(quit_num { if(a[i]!=0)k++;  if(k==3)       //当报
有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,最后是谁
#include&amp;lt;stdio.h&amp;gt; int main() { int n; scanf(&quot;%d&quot;,&amp;amp;n); int a[n]; int i,j,h,f=0; for(i=0;i&amp;lt;n;i++) { a[i]=i+1; } j=0; for(i=0;
n个人围成一圈按照1,2,3..n报数,数到n的人依次站出来求站出来的人位置。
n个人围成一圈按照1,2,3..n报数,数到n的人依次站出来求站出来的人位置。
有100个人围成一个圈,从1开始报数,报到14的这个人就要退出
有100个人围成一个圈,从1开始报数,报到14的这个人就要退出,上传的资源位源码,运行测试没问题后上传
n个人一起围成一圈,从第s个人开始报数(从1开始),数到m的人退出。接着下一个人又从1开始报数,数到m的人退出,输出退出的人名。。。想问问题出在哪呢
///约瑟夫环问题(josephus problem) 问题在哪呢?? //Josephus问题 顺序表 #include&amp;amp;lt;stdio.h&amp;amp;gt; #include&amp;amp;lt;stdlib.h&amp;amp;gt; #define FALSE 0 #define TRUE 1 typedef char DataType; struct SeqList { int n,MAXNUM; /*...
N个人围成一圈,依次123报数,当报到3时小孩退列,而继续从1开始报数,直到最后一个小孩.问其序号
package baseExerciseProject; import java.util.Scanner; public class Call3AndOut { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int N = scanne...
相关热词 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法