今天看了谭浩强的《c程序设计》的一个数小孩的算法,或许本人太菜,琢磨了半天才搞清楚,搞清楚之后试着自己把改算法描述清楚,发现也不是件简单的事情。
原题如下
有n个人围成一圈,顺序排号,从第一个人开始报数,1报到5,凡是报到5的的人退出圈子,问最后留下的是原来第几序号的人?
算法描述
使用一个数组储存每个小孩的序号,使用一个计数器,和一个游标,首先将游标移到第一个小孩位置,游标一次一次的从当前的小孩移到下一位小孩,游标每移到一次,计算器加一次,当游标遇到序号为0的小孩时,计数器不加,当计数器为5时,则将游标对应的小孩序号置为O并将计数器置0。最后剩下序号不为0的小孩即为最后留下的。
程序代码如下
“i”即为我所谓的游标,“count”为我所谓的计数器
void numoffLeave(int *p, int n)
{
int i, out,count;
i=0;
out=0;
count=0;
while(out < n-1)
{
if(*(p + i) != 0)
count ++;
if(count ==5)
{
*(p + i) = 0;
count = 0;
out++
}
i++;
if(i == n) i = 0;
}
}
如图为16个小孩围成的一个圈,外环为计数器的数值
分享到:
相关推荐
无意间在百度文库中看到一篇“C语言经典算法100例”的文稿,因为现在主要是做php开发,因而就有了这个想法,把这100个算法用php实现一遍。众所周知C语言是过程化语言,php起初也是过程化语言,现在逐渐加入了oop的...
171 小孩吃梨 172 删除字符串中的特定字符 173 求解符号方程 174 计算标准差 175 求取符合特定要求的素数 176 统计符合特定条件的数 177 字符串倒置 178 部分排序 179 产品销售记录处理 180 特定要求的字符...
小孩分糖果.txt 小明买书.txt 小白鼠钻迷宫.txt 带头结点双链循环线性表.txt 平方根.txt 建树和遍历.txt 建立链表1.txt 扫描码.txt 挽救软盘.txt 换位递归.txt 排序法.txt 推箱子.txt 数字移动.txt ...
小孩分糖果.txt 小明买书.txt 小白鼠钻迷宫.txt 带头结点双链循环线性表.txt 平方根.txt 建树和遍历.txt 建立链表1.txt 扫描码.txt 挽救软盘.txt 换位递归.txt 排序法.txt 推箱子.txt 数字移动.txt ...
c语言窗体实例.zip 傻瓜递归.c 冒泡法改进.c 小字库DIY-.c 小字库DIY.c 小白鼠钻迷宫.c 扫描码.C 挽救软盘.c 汉字字模.c 神经元模型.c 穷举搜索法.c 简单数据库.c 编程汉字问题.txt 编随机数.c 试题.C 递堆法.C ./...
掌握以上知识点是C语言学习的基础,通过深入理解和实践,你可以编写出功能丰富的程序,并为进一步学习操作系统、数据结构、算法等高级主题打下坚实的基础。大学里的C语言教程通常会结合实例和练习,帮助学生逐步掌握...
2. **模拟过程**:从指定的位置开始报数,每次报数到S时移除当前小孩,然后继续从下一个小孩开始报数。 3. **输出结果**:记录每个出列的小孩编号。 #### 示例代码框架 ```c #include #include typedef struct {...
### C语言程序设计经典习题集知识点解析 #### 1. 求最大数 - **知识点**: 数组遍历、条件判断、变量初始化。 - **解析**: 题目要求找出一个给定数的最大三位因数。此题可以通过循环遍历所有可能的因数,逐一检查...
在游戏的实现过程中,我们还使用了一些重要的数据结构和算法,例如数组和字符串。数组是游戏中的重要数据结构,用于存储游戏的数据。字符串是游戏中的重要数据类型,用于表示游戏中的数字。 C语言实现数字游戏是一...
标题中的“088 马克思手稿中的数学题 C语言源代码文件”提示我们,这可能是一个关于使用C语言解决数学问题的程序。马克思手稿中的数学题可能是指马克思在研究经济学或其他领域时遇到的数学问题,而这个项目可能是...
相比之下,C语言需要将数字转换为字符串再计算长度,过程相对复杂。 4. **问题四:打印九九乘法表** 此题利用两个嵌套`for`循环生成乘法表。JavaScript代码通过`document.write`将结果输出到页面上,而C语言可能会...
某教学大楼一层有n个教室,从左到右依次编号为1、2、…、n。现在要把一些课桌从某些教室搬到另外一些教室,每张桌子都是从编号较小的教室搬到编号较大的教室,每一趟,都是从左到右走,搬完一张课桌后,可以继续从...
《小孩分油问题的广度优先搜索算法及C++实现》 小孩分油问题是一个经典的逻辑谜题,它涉及到如何利用有限的资源精确地分配物品。在这个问题中,两个小孩只有一斤、七两和三两的三个瓶子,以及一斤的油。目标是将一...
21. **搬砖问题**:这是一个经典的线性规划问题,可以通过设立方程组来解决,找出男性、女性和小孩的人数分配。 以上就是这些C语言上机考试题目的核心知识点,每个题目都提供了练习和巩固C语言基础的机会,同时也...
例如,在计算学生的总成绩、求若干个数之和、迭代求根等问题中,循环算法都是必不可少的。循环算法可以分为穷举和迭代两类。穷举是一种重复型算法,它的基本思想是对问题的所有可能状态一一测试,直到找到解或将全部...
这些题目涵盖了C语言编程的多个基础知识点,包括循环结构、函数定义、数组操作、字符串处理、逻辑推理、数值计算和算法设计。以下是针对这些题目所涉及的C语言知识点的详细解释: 1. **循环和穷举法**:题目中的很...
使用贪心算法设计思想设计算法实现找零钱问题。一个小孩买了价值少于1美元的糖,并将1美元的钱交给售货员。...为保证算法的可行性(即:所给的零钱等于要找的零钱数),所选择的硬币不应使零钱总数超过最终所需的数目。
在本压缩包中,我们收集了32个C语言编程练习题目,涵盖了多个经典算法和概念,非常适合编程初学者进行学习和实践。以下是对每个题目及其相关知识点的详细解释: 1. **进制转换.cpp**:这个练习涉及到数字在不同进制...