题目:

15个人围成一圈报数,顺序从1到15编号。
从第一个人开始报数,凡报到n的人退出圈子。
输出最后留在圈子里的人的编号。

做题的时候写到了这道题,尝试着用数组实现了一下。全程没有借助链表和指针。
虽然这个方法既繁琐又容易出错,但我觉得对于理解循环的嵌套和数组下标有很大帮助。
最简单的方法应该还是循环链表。在这里仅供参考。

定义报数函数CountNum:

#include<stdio.h>void CountNum(int a[]){int n;printf("报数到n退出圈子,n=:\n",n);scanf("%d",&n);int count=15;//剩余人数 int i=0;for(i;i<15;i++){a[i]=1;//赋初值 }i=0;//统计总人数(已退出的人不参与报数但仍占位,防止顺序混乱) int j=0;//统计仍剩下的人数(可以参与报数) while(count>1){while(j<n){//没有报数到n时,继续报数if(a[i]!=0) j++; i++;if(i==15)    i=0;//报数超过人数时(转完一圈),从头开始 }//找上一个退出的数时,可能正好转完一圈,这时i=0,上一个数是a[14]//此时需要区分,否则会出现给a[-1]赋值为0的情况if(i==0) a[14]=0;else   a[i-1]=0;if(i==0)    printf("退出的人是a[14]\n");else   printf("退出的人是a[%d]\n",i-1); j=0;//下一轮开始报数,要从头开始统计报数的人数 //i不置为0,下一轮开始继续上一轮位置报数 count--;//有人退出时,人数减一 }//报数完成,只剩一个人没有报数到n过i=0;printf("\n"); for(i;i<15;i++){//找出这个人 if(a[i]==1)   printf("剩下的人是a[%d]\n",i); }
}

在main函数中调用

int main(void){int a[15];CountNum(a);return 0;
}

输出结果

约瑟夫环 有15个人围成一圈,按顺序淘汰相关推荐

  1. c语言约瑟夫环问题,C++_详解约瑟夫环问题及其相关的C语言算法实现,约瑟夫环问题 N个人围成一圈 - phpStudy...

    详解约瑟夫环问题及其相关的C语言算法实现 约瑟夫环问题 N个人围成一圈顺序编号,从1号开始按1.2.3......顺序报数,报p者退出圈外,其余的人再从1.2.3开始报数,报p的人再退出圈外,以此类推 ...

  2. 约瑟夫环问题:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。...

    首先,我最大的学习来源不是百度而是我群友~~在这里表白一波我热爱学习的群友们! 然后今天群里突然有人提出了题目的这个问题: 有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人 ...

  3. 约瑟夫环问题:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。

    题目:     有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位. 解题思路:     利用数组的"0"和&qu ...

  4. 1056: 约瑟夫问题【n人围成一圈,报数为3的人退出圈子,问最后留下的人原来的编号。】

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

  5. c语言报数问题程序,转圈报数问题(C语言):有n个人围成一圈,顺序排号……...

    问题描述: 有n个人围成一圈,顺序排号.从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号那位. 题目分析: 这道题目是我们在日常生活中也能经常见到的一种报数小游戏.首 ...

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

    面试的时候碰到这道题,后来百度了一下感觉答案不对,而且也比较缺少java版本.就自己写了下. 题目描述:有 n 个人围成一圈,顺序排号.从第一个人开始报数(从 1 到 3 报数),凡报到 3的人退出圈 ...

  7. 转圈报数问题(C语言):有n个人围成一圈,顺序排号……

    问题描述: 有n个人围成一圈,顺序排号.从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号那位. 题目分析: 这道题目是我们在日常生活中也能经常见到的一种报数小游戏.首 ...

  8. ACMNO.38 C语言-报数 有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。

    题目描述 有n人围成一圈,顺序排号. 从第1个人开始报数(从1到3报数),凡报到3的人退出圈子.`在这里插入代码片` 问最后留下的是原来的第几号的那位. 输入 初始人数n 输出 最后一人的初始编号 样 ...

  9. python n个人围成一圈,Python练习代码实例69-有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的...

    Python 练习实例69 题目:有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位. 程序分析:无. 程序源代码:#!/usr/bi ...

最新文章

  1. [MySQL Reference Manual] 7 备份和恢复
  2. android的dmtracedump工具生成trace文件图片 'dot' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
  3. [转]WebPack 常用功能介绍
  4. 有100名考生参加C语言测验,全国计算机一级考试模拟试题及答案(1-100)
  5. 软件开发基本原则(一)—— 策略和因素 (转)
  6. 关系到了冰点_疫情下半场,如何修复跌至冰点的亲子关系,让自己和家人活出幸福感?...
  7. 2018 blockchain innovation final round of the chain valley
  8. 64位jdk连接32位的mysql_在64位客户端使用32位的ODBC配置
  9. 【Visual C++】游戏开发笔记之八——基础动画显示(二)游戏循环的使用
  10. Linux epoll的用法
  11. 微服务架构设计思维导图总结
  12. 计算机信息计量单位中的1k代表多少字节,1k等于多少字节
  13. 衣带渐宽终不悔,为伊消得人憔悴--DbHelper增强版
  14. matlab eig函数_MATLAB作图实例:14:绘制虚数和复数图
  15. (干货,建议收藏)备战2021年软考中级网络工程师-02操作系统
  16. 打造企业级云深度学习平台——小米云深度学习平台的架构设计与实现
  17. 复杂的世界 简单的规律 —— 2021年诺贝尔物理奖科学背景介绍及解读
  18. 史上最全Lambda 钱包使用教程
  19. (root用户)bash: ./xx: Permission denied解决方法
  20. Excel中杂乱的图片,一键就可以让它们对齐行

热门文章

  1. java linest_Java STLineSpacingRule類代碼示例
  2. MyEclipse中怎么修改项目访问路径
  3. 百度map的简单例子
  4. word删除空白页面
  5. 05、解决chunk-elementUI.3d5a4739.js 过大导致网页打开慢
  6. Android 解决TextView排版参差不齐的问题
  7. 【机器学习】数值分析02——任意方程求根
  8. 能用网络但是个个计算机不能连上,为什么无线网络连接上却不能上网,小编教你电脑连上无线网却不能上网怎么办...
  9. 基金经理做场外期权的法律风险分析
  10. 满庭芳国色 高清剪图 桃红 下