C语言实现 Josegh()函数

2023-05-16

问题

设有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数,报数到第m个人,此人出圈,再从他的下一个人重新开始1到m的报数,如此下去直到所有的人都出圈为止。现要求按出圈次序,每10人一组,给出这n个人的顺序表。请编制函数Josegh ()实现此功能。

源代码

#include <stdio.h>
//N为总人数,可以改动
#define N 30

void Josegh(int p[],int n,int s,int m)
{
	int s1 = s;
	int w;
	//对数组进行初始化,将1到n个人的序号存到数组中去
	for(int i = 0;i < N;i++)
		p[i] = i + 1;
	//进行出圈
	for(int i = N ;i >= 2;i--)
	{
		//s1为报数后出圈的人的下标
		s1 = (s1 + m - 1) % i;
		//因为报数时可能正好报完,所以需要判断s1为零的情况
		if(s1 == 0)
			s1 = i;
		//用w记下出圈的人的序号
		w = p[s1 - 1];
		//将出圈以后的所用人向前移动
		for(int j = s1;j < i;j++)
			p[j - 1] = p[j];
			//将出圈的人的序号记到从数组末尾往前的对应位置
		p[i - 1] = w;
	}
}



int main()
{
	int i,p[N];
	int s,m;
	printf("请输入s和m:");
	scanf("%d%d",&s,&m);
	Josegh(p,N,s,m);
	printf("这些人的出圈顺序为:\n");
	//从末尾开始输出出圈的人的序号,并10个人分为一组
	for(i = N -1;i >= 0;i--)
	{
		printf("%4d",p[i]);
		if(i % 10 == 0)
			printf("\n");
	}
	return 0;
}

解析

(1)将1到n个人的序号存入一维数组p中;
(2)若第i个人报数后出圈,则将p置于数组的倒数第i个位置上,而原来第i+1个至倒数第i个元素依次向前移动一个位置;
(3)重复步骤(2),直至圈中只剩下p[1]为止。
在函数 Josegh中第一个for循环是先对数组p赋初值。在第二个for循环中用i来控制没出圈的总人数,s1=(s1+m-1) %i的作用是找出报数后出圈人的下标,其中对i求余的作用是使报数按圈进行(即报到尾后又从头报),该算法在很多题目中都用到。由于求余的作用当报数正好到最后一个时s1为0,故而要进行if(s1==0)的判断。内嵌的for循环是将出圈以后的人依次往前移。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言实现 Josegh()函数 的相关文章

  • C语言实现strlen()函数

    方式一 xff1a span class token macro property span class token directive keyword define span CRT SECURE NO WARNINGS span spa
  • 操作系统动态优先级调度算法C语言实现

    动态优先级算法 动态优先数是指在进程创建时先确定一个初始优先数 xff0c 以后在进程运行中随着进程特性的改变不断修改优先数 xff0c 这样 xff0c 由于开始优先数很低而得不到CPU的进程 xff0c 就能因为等待时间的增长而优先数变
  • 选择排序算法(C语言实现)

    include lt stdio h gt void choice int a int n int i j temp for i 61 0 i lt n 1 i 43 43 for j 61 i 43 1 j lt n j 43 43 if
  • (c语言实现)数据结构链表oj题(2)

    前言 x1f388 个人主页 x1f388 初阶牛 x1f43b 推荐专栏 x1f354 x1f35f x1f32f C语言进阶 x1f511 个人信条 x1f335 知行合一 x1f349 本篇简介 gt 分析力扣中有关链表的部分题目 目
  • 用c语言实现 将src指向的字符串追加到dest指向字符串的后面

    实现char my strcat char dest char src 函数 返回 xff1a dest字符串的地址 功能 xff1a 将src指向的字符串追加到dest指向字符串的后面 例如 xff1a char dest 10 61 3
  • 贝叶斯网络python实现_朴素贝叶斯和贝叶斯网络算法及其R语言实现

    原标题 xff1a 朴素贝叶斯和贝叶斯网络算法及其R语言实现 作者 xff1a 鲁伟 一个数据科学践行者的学习日记 数据挖掘与机器学习 xff0c R与Python xff0c 理论与实践并行 个人公众号 xff1a 数据科学家养成记 微信
  • C语言实现 Josegh()函数

    问题 设有n个人围坐一圈并按顺时针方向从1到n编号 xff0c 从第s个人开始进行1到m的报数 xff0c 报数到第m个人 xff0c 此人出圈 xff0c 再从他的下一个人重新开始1到m的报数 xff0c 如此下去直到所有的人都出圈为止
  • C语言实现16进制数与10进制数的转化

    C语言实现16进制数与10进制数的转化 这里有两种情况 xff1a 第一种情况 xff1a 如果我得到的是一个16进制数 xff0c 我通过肉眼看到的就是16进制显示 xff08 这里看到的肯定打印结果 xff09 xff0c 比如85 x
  • C语言实现Split函数

    借助C语言的动态内存分配 xff0c 实现类似VB中Split函数的效果 结构体介绍 xff1a IString xff1a 参数 str 字符串数组的指针 参数 num 字符串个数 函数介绍 功能 xff1a 按一个字符来拆分字符串 参数
  • 无名的ADRC的C语言实现

    分为ADRC h和ADRC c 确实看头文件有用 xff0c 有哪些变量都一目了然 和ACfly一样的是比如都有beta这个参数 ADRC c 本程序只供购买者学习使用 xff0c 版权著作权属于无名科创团队 xff0c 无名科创团队将飞控
  • 用c语言实现adrc算法

    ADRC Adaptive Dynamic Range Control 算法是一种用于自动调节动态范围的方法 在 C 语言中实现 ADRC 算法 xff0c 您需要首先了解 ADRC 算法的基本原理 xff0c 然后根据公式把算法按照 C
  • C语言实现TCP通信

    如果想要自己写一个服务器和客户端 xff0c 我们需要掌握一定的网络编程技术 xff0c 个人认为 xff0c 网络编程中最关键的就是这个东西 socket 套接字 socket 套接字 xff1a 简单来讲 xff0c socket就是用
  • TCP通信模型(C语言实现)

    大家好 xff0c 我是练习编程时长两年半的个人练习生昆工第一ikun xff0c 今天我们来分享TCP通信模型 xff0c 并且用C语言实现它 目录 一 我们将实现三个示例功能 xff1a 二 TCP服务器搭建流程 xff08 1 xff
  • C语言实现UDP通信

    UDP通信 UDP是一种无连接的尽最大努力交付的不可靠连接 xff0c 通信之前无需先建立连接 xff0c 自然而然 xff0c 通信之后也就无需再释放连接 通信的套接字 UDP所采用的通信接口与前面讲过的TCP通信接口相同 xff0c 只
  • C语言实现“井字棋”游戏(三子棋)人机对弈

    井字棋游戏 xff1a 即三子棋 xff0c 英文名叫Tic Tac Tic xff0c 是一种在3 3格子上进行的连珠游戏 xff0c 和五子棋比较类似 xff0c 由于棋盘一般不画边线框 xff0c 格线排成井字故得名 题目分析 xff
  • c 语言udp方式连接代码,C语言实现UDP连接的参考代码

    C语言实现UDP连接的参考代码 xff0c Client连接上Server后将自己所在目录下的 34 liu 34 文件中的前三行文字发送到Server端去 xff0c 然后Server负责接收和显示 server c include in
  • C语言实现HTTP的GET和POST请求

    HTTP请求和IP TCP 所谓的HTTP协议是基于IP TCP协议的 xff0c 所以要获取远端的html数据只要创建socket对象就足够了 xff1b HTTP是基于IP TCP加上了网络请求的固定格式 get 请求 include
  • C语言实现Windows下的socket编程

    一 UDP 数据报 协议 UDP User Datagram Protocol的简称 xff0c 中文名是用户数据报协议 xff0c 是OSI Open System Interconnection xff0c 开放式系统互联 参考模型中一
  • C语言实现TCP通信

    C语言通过socket编程实现TCP通信 服务端客户端通信例子 xff1a socket tcp 通信1 xff0c socket tcp通信2 xff0c udp使用讲解 xff0c socket udp通信例子 TCP IP协议 叫做传
  • 二叉树递归遍历(C语言实现)

    span class token macro property span class token directive hash span span class token directive keyword include span spa

随机推荐

  • 第六章总结(创建与使用存储过程)

    一 MySQL的存储过程 xff08 1 存储过程是一组为了完成特定功能的SQL语句块 xff0c 经编译后存储在数据库中 xff0c 用户通过指定存储过程的名称并给定参数 xff08 如果该存储过程带有参数 xff09 来调用并执行它 x
  • 第七章总结(创建与使用触发器)

    定义 xff1a 触发器是特殊的存储过程 xff0c 是一个被指定关联到数据表上的数据库对象 xff0c 可以看作数据表定义的一部分 xff0c 可用于实现数据库中数据的完整性 普通的存储过程通过Call命令调用 xff0c 而触发器的调用
  • 第八章总结(数据库的安全性维护)

    insert语句创建用户 insert into user hostuser passwordssl cipherx509 issuer x509 subject values 34 主机号 34 xff0c 34 用户名 34 xff0c
  • 输入10个数字,找出其中的最大值,最小值,并输出。

    include lt stdio h gt main int i float max min a printf 请输入10个数字 scanf 34 f 34 amp a max 61 min 61 a for i 61 1 i lt 61
  • 项目五总结:创建视图

    视图是一个从或多个表中导出来的表 xff0c 它是一种虚拟存在的表 xff0c 并且表的结构和数据都依赖于基本表 xff0c 通过视图不仅可以看到存放在基本表中的数据 xff0c 还可以像操作基本表一样 xff0c 对视图中存放的数据进行查
  • 如何在macOS上查找和删除重复文件

    电脑用多了文件自然就多了 xff0c 重复文件也多了 xff0c 浪费了很多磁盘空间 xff0c 特别是重复的视频文件更是浪费空间的大户 导致Mac越来越慢 xff0c 那么如何在macOS上查找并删除重复文件 xff0c 就成了人们关注的
  • C++实训练习册(C++之基础语法进阶练习题)

    第1关 xff1a 相同数字不同位数之和 任务描述 本关任务 xff1a 编写一个能计算相同数字不同位数之和 的小程序 编程要求 求s 61 a 43 aa 43 aaa 43 aaaa 43 aa a的值 xff0c 其中a是一个数字 x
  • 百钱买百鸡问题与百钱兑换问题(C与C++)经典编程算法

    百钱兑换问题提供了两种思路 xff0c 最精彩的在最下面的代码 xff0c 供大佬参考 xff0c 优美的代码赏心悦目 xff08 附有详细思路 xff0c 记得点赞 xff01 xff01 xff01 xff09 1 首先 xff0c 让
  • 【C语言典例】——day3:设计魔方阵(数组)

    大家好 xff01 我是同学 森 xff0c 一名计算机爱好者 xff0c 今天让我们进入刷题模式 若有错误 xff0c 请多多指教 x1f44d 点赞 收藏 x1f4dd 留言 都是我创作的最大的动力 xff01 目录 魔方阵 xff08
  • CUDA 11.1+VS2019安装使用

    首先确定自己适配的CUDA版本 win xff0b r 输入 cmd cuda 版本号是11 1 在搜索框输入https developer nvidia cn cuda 11 1 1 download archive 下载好安装包后 再下
  • 【ROS小记】树莓派ubuntu mate20.04换源

    根据网上教程更换软件源时发现报错 错误 8 http ppa launchpad net ubuntu desktop ubuntu make ubuntu focal Release 404 Not Found 以及 仓库 34 34 无
  • 【科技小作品】Arduino计数储蓄罐的制作教程

    效果图 1 材料准备 母头杜邦线若干测速传感器模块 槽型光耦 一个四位数码管模块 x1 arduino R3主板 x1 电池盒 x1 USB 方口打印数据连接线 x1 硬纸板一张 xff0c 厚度自定 尺寸 45x35 热胶枪 x1 热熔胶
  • 【C++】1049:晶晶赴约会(信息学奥赛)

    好了 xff0c 今天的内容就是晶晶赴约会了 xff0c 内容的详细意思也就是根据输入的表示星期几的数字 xff0c 对应输出它的英文名称 xff08 博主正在冲200粉丝 xff0c 喜欢的赶紧关注 xff01 xff01 xff01 x
  • 头插法建立单链表

    头插法建立单链表的方法是将新结点插入到当前链表的表头结点之后 用头插法建立的单链表的逻辑顺序与输入元素的顺序相反 如图所示 具体算法如下 xff1a span class token keyword struct span span cla
  • Visual Studio 2022中kbhit()函数与getch()函数的书写问题

    1 kbhit 函数 kbhit 函数的作用是检查控制台窗口的按键是否被按下 如果在调用函数时 xff0c 有按键被按下 xff0c 则返回值为一个非0的值 xff0c 否则该函数的返回值是0 kbhit 函数一般与getch 函数和get
  • 【无标题】C语言实现幻方

    什么是幻方 幻方 xff08 Magic Square xff09 是一种将数字安排在正方形格子中 xff0c 使每行 列和对角线上的数字和都相等的方法 幻方也是一种中国传统游戏 旧时在官府 学堂多见 它是将从一到若干个连续的自然数排成纵横
  • CMake vs Make对比

    程序员现在已经使用了CMake和Make了很久 当您加入大公司或开始使用大型代码库开发项目时 xff0c 您需要处理所有这些构建 你必须看到这些 CMakeLists txt 文件浮动 你应该在终端上运行 cmake 和 make 命令 很
  • C语言头插法尾插法创建单链表

    前言 链表 Linked List xff1a 链表是由一组不必相连 不必相连 xff1a 可以连续也可以不连续 的内存结构 节点 xff0c 按特定的顺序链接在一起的抽象数据类型 下面介绍单链表的创建 xff1a 创建节点 链表是由一个个
  • 洛谷P1089津津的储蓄计划

    题目描述 津津的零花钱一直都是自己管理 每个月的月初妈妈给津津 300 元钱 xff0c 津津会预算这个月的花销 xff0c 并且总能做到实际花销和预算的相同 为了让津津学习如何储蓄 xff0c 妈妈提出 xff0c 津津可以随时把整百的钱
  • C语言实现 Josegh()函数

    问题 设有n个人围坐一圈并按顺时针方向从1到n编号 xff0c 从第s个人开始进行1到m的报数 xff0c 报数到第m个人 xff0c 此人出圈 xff0c 再从他的下一个人重新开始1到m的报数 xff0c 如此下去直到所有的人都出圈为止