围圈报数c语言编程,C语言编程:有n个人围成一圈,顺序排号。从第一个人开始报数......
题目:有N个人,从1到N编号,按照编号顺序围成一圈。从第一个人开始报数(从1报到3),凡报到3的人退出圈子。
问:最后留下的人的编号是几号。
==============================
这是百度知道中,很常见的题目,多数都有了正确答案。
如:
http://zhidao.baidu.com/question/95065794.html
http://zhidao.baidu.com/question/211023828.html
http://zhidao.baidu.com/question/341545042.html
http://zhidao.baidu.com/question/353160064.html
……
但是,看这些答案的程序,太麻烦的居多。
做而论道针对这个问题,写了一个程序,自我感觉是最简短的。呵呵,欢迎网友拍砖。
程序如下:
==============================
#include
#define N 5 //人数
void main()
{
int a[N] = {0}, i = 0, call_n = 0, out_n = 0;
while (1) { //循环报数
if(a[i] == 0) { //如果健在
if (out_n == (N - 1)) break; //如果仅剩一人
call_n++; //报数
call_n %= 3; //最大为3,到了3就从0开始
if(call_n == 0) {a[i] = 1; out_n++;} //为0(即3)出局
}
i++; i %= N; //循环转向下一人
}
printf("最后剩余者的编号是:%d\n", i + 1);
}//------------------完
==============================
有些题目中,要求使用指针,其实也不难,指针和数组是统一的,程序如下:
==============================
#include
#define N 5 //人数
void main()
{
int a[N] = {0}, i = 0, out_n = 0, call_n = 0, *p;
p = a;
while (1) { //循环报数
if(*p == 0) { //如果健在
if (out_n == (N - 1)) break; //如果仅剩一人
call_n++; //报数
call_n %= 3; //最大为3,到了3就从0开始
if(call_n == 0) {*p = 1; out_n++;} //为0(即3)出局
}
p++; if (p == a + N) p = a; //循环转向下一人
}
printf("最后剩余者的编号是:%d\n", p + 1 - a);
}//------------------完
==============================
围圈报数c语言编程,C语言编程:有n个人围成一圈,顺序排号。从第一个人开始报数......相关推荐
- 题目:有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后最后留下的是原来第几号的那位. 提示:用数组完成
题目:有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后最后留下的是原来第几号的那位. 提示:用数组完成 #include <stdio.h> in ...
- 有n个人围一圈,顺序排号,报号游戏
网上关于这个问题的解法已经有很多了,我现在是把网上的一些加上自己的理解,套用为一个固定写法,当然理解最重要啦! 我也是最近才开始学指针的,欢迎大家留言学习讨论 报数游戏的普遍说法: 有10个人围一圈, ...
- ACMNO.38 C语言-报数 有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。
题目描述 有n人围成一圈,顺序排号. 从第1个人开始报数(从1到3报数),凡报到3的人退出圈子.`在这里插入代码片` 问最后留下的是原来的第几号的那位. 输入 初始人数n 输出 最后一人的初始编号 样 ...
- c语言报数问题程序,转圈报数问题(C语言):有n个人围成一圈,顺序排号……...
问题描述: 有n个人围成一圈,顺序排号.从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号那位. 题目分析: 这道题目是我们在日常生活中也能经常见到的一种报数小游戏.首 ...
- 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡是报到3的人退出圈子,问最后留下来的是原来的第几位(指针方法处理)。——C语言
1 概述 有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡是报到3的人退出圈子,问最后留下来的是原来的第几位(指针方法处理).--C语言 2 解法 //C程序设计第五版(谭浩强) / ...
- 转圈报数问题(C语言):有n个人围成一圈,顺序排号……
问题描述: 有n个人围成一圈,顺序排号.从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号那位. 题目分析: 这道题目是我们在日常生活中也能经常见到的一种报数小游戏.首 ...
- (C语言)有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。
题目描述 有n人围成一圈,顺序排号.从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位. 输入 初始人数n 输出 最后一人的初始编号 样例输入 3 样例输出 2 ...
- 详细讲解C语言经典例题:有n个人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子, 问最后留下的是原来第几号的那位
有n个人围成一圈,顺序排号.从第1个人开始报数(从1到3报数),凡报到3的人退出圈子, 问最后留下的是原来第几号的那位 如题,相信很多人都和我一样,当时看到根本不知道从何下手.那么我们先不看代码,画图 ...
- C语言学习笔记——n个小孩围成一圈,顺序排号,报数报到5的出局...
问题描述:n个小孩围成一圈,顺序排号,从第一个人开始报数(从1报到5),凡是报到5的都要出局,求最后留下的人的号码. #include<stdio.h> void Game(int n) ...
- C语言 | n个人围成一圈,顺序排号
例77:n个人围成一圈,C语言进行顺序排号,要求用指针. 解题思路:从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的使原来第几号的那位. C语言源代码演示: #include&l ...
最新文章
- 神经网络基础及逻辑回归实现
- JavaScript 对象的遍历以及判断方法
- CMAKE_CURRENT_BINARY_DIR
- OSSIM中配置网络资产监控
- HDU 5371 Manacher Hotaru's problem
- CIKONSS-纯CSS实现的响应式Icon
- python的动态参数
- Gartner:克服SIEM部署失败的通病
- 阿里“10”年软件测试经验,面试官通常...........
- linux下ip地址转换整形,Linux中ip地址结构和ip地址的转换
- 如何在HTMl网页中插入百度地图
- Android架构纵横谈之——软件自愈能力(转载)
- Unity制作九宫格手机手势解锁密码
- BigDecimal.divide异常 ArithmeticException
- 听音测试电脑软件,主观听音测试
- Could not build url for endpoint ‘http://127.0.0.1:5000/ ‘.
- 计算机综合能力描述,计算机综合应用能力实训报告
- linux 应用层gpio中断_树莓派官方自带gpio中断驱动bcm2708_gpio.c原理分析 linux 中断架构 中断子系统...
- 第一次用gcc命令时报错:gcc: 未找到命令...
- Linux 文件系统只读
热门文章
- 关于集团高校宣讲流程
- 如何开发微信小程序(一)
- PLook——记录你的知识
- 有关Trojan-Downloader.Win32.QQHelper.**文件删除
- 文盘Rust -- 领域交互模式如何实现
- “中信碳账户”开户量突破350万,发布首支低碳生活主题音乐故事片
- 接线端子名PH,XH,ZH的区别
- myeclipse 自动退出后提示 “Problematic frame: C [libx...
- Excel对不等的合并单元格进行多列数据求和操作
- 7-1 藏尾诗 (20 分)