《程序设计基础-c语言》杨莉 刘鸿翔
ISBN-978-7-03-032903-5
p138
习题5

9.假设有10个人围成一圈,从开始顺序编号。从第一个人开始报数,从1到3,凡是报出3的人出圈,问最后出圈的人是原来的几号。
//有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位

#include <stdio.h>
void main()
{int num[50],n,*p,j,loop,i,m,k;printf("请输入这一圈人的数量:\n");scanf("%d",&n);p=num;//开始给这些人编号for (j=0;j<n;j++){*(p+j)=j+1;}i=0;//i用于计数,即让指针后移m=0;//m记录退出圈子的人数k=0;//k报数1,2,3while(m<n-1)//当退出的人数不大于总人数时,即留下的人数至少是一个人//这句不能写成m<n,因为假设有8人,当退出了6人时,此时还是进行人数退出,即m++,//这时是7<8,剩下的一个人自己喊1,2,3那么他也就退出了,将不会有输出{if (*(p+i)!=0)//如果这个人的头上编号不是0就开始报数加1,这里采用的方法是报数为3的人头上编号重置为0{k++;}if (k==3){    k=0;    //报数清零,即下一个人从1开始报数*(p+i)=0;//将报数为3的人编号重置为0m++;    //退出人数加1}i++;      //指针后移if (i==n)//这句很关键,如果到了队尾,就要使指针重新指向对头//并且它只能放在i++后面,因为只有i++了才有可能i==n{i=0;}}printf("现在剩下的人是:");for (loop=0;loop<n;loop++){if (num[loop]!=0){printf("%2d号\n",num[loop]);}}}


Java版本

import java.util.Scanner;
public class Cycle {public static void main(String[] args) {System.out.println("input 人数:");Scanner sc_n=new Scanner(System.in);int n=sc_n.nextInt();System.out.println("输入要报的数:");Scanner sc_m=new Scanner(System.in);int m=sc_m.nextInt();int[] arr=new int[n];//开始编号for(int i=0;i<arr.length;i++) {arr[i]=i+1;}int exitnumber=0;//退出人数int countnumber=0;//计数int i=0;//退出人数剩最后一个人while(exitnumber<arr.length-1) {//          编号不为0,就计数+1if(arr[i%arr.length]!=0) {countnumber++;}if(countnumber==m) {countnumber=0;//报数清零arr[i%arr.length]=0;//编号清零exitnumber++;//退出人数+1}i++;}for(int j=0;j<arr.length;j++) {if(arr[j]!=0) {System.out.println("最后赢得胜利的是:"+arr[j]+"号");}}}
}

10个人围成一圈循环报数,输出最后出圈的人相关推荐

  1. 题目98-4:n个人(n<=100)围成一圈,从第一个人开始报数,数到m的人出列,再由下一个人重新从1开始报数,数到m的人再出圈,……,依次类推,直到所有的人都出圈,请输出依次出圈人的编号。

    题目转载:http://python.wzms.com/s/1/103 题目描述: n个人(n<=100)围成一圈,从第一个人开始报数,数到m的人出列,再由下一个人重新从1开始报数,数到m的人再 ...

  2. 题目98-3:围成一圈数三报数且出列——假设有10个人围成一圈,从1开始报数,数到3的人,让他出列,下一个人重新从1开始报数,数到3的人,让他出列……以此类推,把依次出列的9个人的编号打印出来

    题目转载:http://python.wzms.com/s/1/103 题目描述: n个人(n<=100)围成一圈,从第一个人开始报数,数到m的人出列,再由下一个人重新从1开始报数,数到m的人再 ...

  3. n个人围成一圈,从第一个人开始报数,数到m的人出列,再由下一个人重新从1开始报数, 数到m的人再出圈,……依次类推, 直到所有的人都出圈,请输出依次出圈人的编号.

    88,n个人围成一圈,从第一个人开始报数,数到m的人出列,再由下一个人重新从1开始报数, 数到m的人再出圈,--依次类推, 直到所有的人都出圈,请输出依次出圈人的编号. 输入 n m 输出 出圈的编号 ...

  4. 10个人围成一个圆圈做游戏,游戏的规则是:每个人心里都想好一个数,并把自己想好的数如实地告诉与他相邻的两个人,然后每个人将与他相邻的两个人告诉他的数的平均数报出来,若报出来的数如图所示

  5. C语言用数组1. 简单约瑟夫环问题: N个人,编号从1~N围成一圈,输入一个数T,从1号开始报数,报到T的人出圈;下一人又从1开始报数,下一个报到T的人出圈,输出出圈顺序。 考虑问实现约瑟夫环问题

    1. 简单约瑟夫环问题: N个人,编号从1~N围成一圈,输入一个数T,从1号开始报数,报到T的人出圈:下一人又从1开始报数,下一个报到T的人出圈,输出出圈顺序. 考虑问题: 报到T的人出圈,怎么表示出 ...

  6. 助教c/c++:n个人围成一圈报数问题

    以下三个问题都属于同类型的问题,其中两道题目是助教时的实验题,还有一道是华为在成都招聘时的机试题目. 在这三个问题中,问题1考虑的最简单,用指针实现:问题2考虑最全面,用结构体实现:问题3用到了函数. ...

  7. 约瑟夫环问题,n个人围成一圈,依次按1、2.....m来报数,报数值为m的人出圈,求最后出圈的人和出圈的序列

    约瑟夫环问题(有时也称为约瑟夫斯置换,是一个出现在计算机科学和数学中的问题.在计算机编程的算法中,类似问题又称为约瑟夫环.又称"丢手绢问题".),也就是如下图这个样子: 简单来讲就 ...

  8. 13个人围成一圈,从第1个人开始顺序报号1、2、3,凡报到3的人退出圈子。找出最后留在圈子里的人原来的序号。

    [绕圈报数] 1130 更新 ======== 一般化情况 13个人围成一圈,从第1个人开始顺序报号1.2.3,凡报到3的人退出圈子.找出最后留在圈子里的人原来的序号. 输出提示 "出圈成员 ...

  9. c语言出圈问题10人,第38套题:c语言出圈问题分析.doc

    第38套题:c语言出圈问题分析.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3 ...

最新文章

  1. GridView单元格取值显示为nbsp;
  2. 水晶报表printmode的ActiveX打印
  3. NCBI中SRA数据库简介
  4. 【论文解读】A Survey on Visual Transformer及引文理解
  5. 数据结构——树的简单操作集合
  6. 转JS总结1--(CSS书写规范和正则表达式)
  7. unable to launch什么意思_都表示太...以至于,so … that…?与too… to …有着明显区别...
  8. Ubuntu下C++代码调用可执行文件。
  9. JavaScript学习随记——对象
  10. 用c++自制词法分析器_编译原理笔记 02 词法分析
  11. springboot Cacheable(redis),解决key乱码问题
  12. 软件测试的知识点总结
  13. Python Intro - xrange obsoleted by Python3
  14. html5文档加载前调用函数,html调用javascript外部文件显示函数未定义
  15. Unity3D发布错误:could not allocate memery:system out of memery!
  16. Android平台的音乐资源管理与播放
  17. 这个Python自动扫雷算法写完了,估计看懂的人十不存一了吧
  18. 抖音带货平台怎么收费?抖音带货费用有哪些
  19. 电容笔和Apple pencil区别有什么?双十一值得入手的电容笔推荐
  20. php图片文字水印透明度,php图片水印 可以设置透明度

热门文章

  1. 已知某班学生的英语成绩按学号(从1开始)从小到大的顺序排列在tab表中,要查的学生学号放在变量no中,查表结果放在变量english中。
  2. R learning 十八讲 0018-R语言绘图基础
  3. 保存ip地址和计算机名称,批量设置IP地址和计算机名
  4. 地图上制作线路的动画_纯干货:动画制作的十二个法则(上)
  5. 2.合并区间(LeetCode第56题)
  6. MobileNet Unet
  7. 一致性直线提取--Coherent Line Drawing
  8. 图像分割--PixelNet: Representation of the pixels, by the pixels, and for the pixels
  9. Python 基础 一
  10. java判断两个int相等_Java 判断两个变量是否相等