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、C++系列-1】C语言实现:寻找[1,100]之间的素数

    C C 43 43 系列 1 C语言实现 xff1a 寻找 1 100 之间的素数 1 问题 C语言实现 xff1a 寻找 1 100 之间的素数 2 实现代码 span class token comment 寻找 1 100 之间的素数
  • Linux下生产者消费者问题的C语言实现

    注 xff1a 查看全文请关注作者 xff0c 或点击前往 xff1a 生产者 消费者问题的C语言实现 实验六 生产者 消费者问题实现 实验题目 要求 在Linux操作系统下用C实现经典同步问题 xff1a 生产者 消费者 xff0c 具体
  • n阶行列式计算Python和C语言实现

    行列式在数学中 xff0c 是一个函数 xff0c 其定义域为det的矩阵A xff0c 取值为一个标量 xff0c 写作det A 或 A 无论是在线性代数 多项式理论 xff0c 还是在微积分学中 xff08 比如说换元积分法中 xff
  • R语言实战——主成分分析理论推导与R语言实现

    目录 1 总体主成分1 1 主成分的定义与导出1 2 主成分的性质1 3 从相关矩阵出发求主成分 2 样本主成分2 1 从S出发求主成分2 2 从R出发求主成分 3 相关的R函数以及实例3 1 96 princomp 96 函数3 2 96
  • 用c语言实现 将src指向的字符串追加到dest指向字符串的后面

    实现char my strcat char dest char src 函数 返回 xff1a dest字符串的地址 功能 xff1a 将src指向的字符串追加到dest指向字符串的后面 例如 xff1a char dest 10 61 3
  • 数组排序(C 语言实现)

    本文主要包含常见的数组排序方法 选择排序 原理 在原始数组中取未排序的首元素 xff0c 与其后方所有元素比较 xff0c 不满足顺序 xff0c 则交换首元素此时满足条件 xff0c 未排序部分后移重复上述操作 代码实现 include
  • C语言实现16进制数与10进制数的转化

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

    题目描述 在一个二维数组中 xff0c 每一行都按照从左到右递增的顺序排序 xff0c 每一列都按照从上到下递增的顺序排序 请完成一个函数 xff0c 输入这样的一个二维数组和一个整数 xff0c 判断数组中是否含有该整数 思考 xff1a
  • C语言实现Split函数

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

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

    前言 一 汉诺塔圆盘的移动步数 二 汉诺塔圆盘移动步骤 总结 前言 汉诺塔 xff08 Tower of Hanoi xff09 xff0c 又称河内塔 xff0c 是一个源于印度古老传说的益智玩具 大梵天创造世界的时候做了三根金刚石柱子
  • C语言实现FTP文件传输

    一 要求 FTP实则为两个程序的互相交流 xff0c 把信息指令相互发送并处理 1 客户端请求下载文件 把文件名发送给服务器 2 服务器接收客户端发送的文件名 根据文件名找到文件 xff0c 把文件大小发送给客户端 3 客户端接收到文件大小
  • C语言实现mavlink库与px4通信仿真

    参照网址 http mavlink io en mavgen c 首先从github上下载对应的C uart interface example 对应的github仓库网址为https github com mavlink c uart i
  • C语言实现UDP通信

    UDP通信 UDP是一种无连接的尽最大努力交付的不可靠连接 xff0c 通信之前无需先建立连接 xff0c 自然而然 xff0c 通信之后也就无需再释放连接 通信的套接字 UDP所采用的通信接口与前面讲过的TCP通信接口相同 xff0c 只
  • C语言实现http post请求和get请求,post请求可以上传图片和文件

    文章目录 1 http协议简介2 http协议分析2 1 http请求2 1 1 请求行2 1 1 1 请求方法2 1 1 2 URL2 1 1 3 协议版本2 1 1 4 请求行总结 2 1 2 请求头部2 1 3 请求数据 2 2 ht
  • C语言实现“井字棋”游戏(三子棋)人机对弈

    井字棋游戏 xff1a 即三子棋 xff0c 英文名叫Tic Tac Tic xff0c 是一种在3 3格子上进行的连珠游戏 xff0c 和五子棋比较类似 xff0c 由于棋盘一般不画边线框 xff0c 格线排成井字故得名 题目分析 xff
  • C语言实现1/1-1/2+1/3-...-1/100求和

    观察题目要求可以看出 xff0c 底数为奇数是前面符号为正 xff0c 偶数是则为负 那么我们可以考虑使用一下方式完成求解 解法一 xff1a span class token macro property span class token
  • Linux下的UDP服务器客户端的搭建(C语言实现)

    大家好 xff0c 我是练习编程时长两年半的个人练习生昆工第一ikun xff0c 昨天我们说了搭建TCP的服务器和客户端 xff0c 今天我们就来分享一下UDP的服务器和客户端搭建 UDP的特点是无连接 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 如此下去直到所有的人都出圈为止