约瑟夫环
问题描述:
输入一个由随机数组成的数列(数列中每个数均是大于0的整数,长度已知),和初始计数值m。从数列首位置开始计数,计数到m后,将数列该位置数值替换计数值m,并将数列该位置数值出列,然后从下一位置从新开始计数,直到数列所有数值出列为止。如果计数到达数列尾段,则返回数列首位置继续计数。请编程实现上述计数过程,同时输出数值出列的顺序
比如: 输入的随机数列为:3,1,2,4,初始计数值m=7,从数列首位置开始计数(数值3所在位置)
第一轮计数出列数字为2,计数值更新m=2,出列后数列为3,1,4,从数值4所在位置从新开始计数
第二轮计数出列数字为3,计数值更新m=3,出列后数列为1,4,从数值1所在位置开始计数
第三轮计数出列数字为1,计数值更新m=1,出列后数列为4,从数值4所在位置开始计数
最后一轮计数出列数字为4,计数过程完成。
输出数值出列顺序为:2,3,1,4。
要求实现函数:
void array_iterate(int len, int input_array[], int m, int output_array[])
【输入】 int len:输入数列的长度;
int intput_array[]:输入的初始数列
int m:初始计数值
【输出】 int output_array[]:输出的数值出列顺序
【返回】 无
示例
输入:int input_array[] = {3,1,2,4},int len = 4, m=7
输出:output_array[] = {2,3,1,4}
#include <stdio.h> #include <string.h> void array_iterate(int len, int input_array[], int m, int output_array[]) { int i, j, pos = -1, count = 0; int flag[100] = {0}; for(i = 0; i < len; i++) { for(j = 0; j < m; j++) { do { pos = (pos + 1) % len; } while(flag[pos] == 1); //pos = (pos + 1) % len; printf("当前位置: %d\n", input_array[pos]); } printf("第%d次出列的是:%d\n", i + 1, input_array[pos]); flag[pos] = 1; output_array[count++] = input_array[pos]; m = input_array[pos]; } } int main() { int input_array[4] = {3, 1, 2, 4}; int m = 7, i; int output_array[4] = {0}; array_iterate(4, input_array, m, output_array); for(i = 0; i < 4; i++) { printf("%d ", output_array[i]); } printf("\n"); return 0; }
相关推荐
《C# OOP内部测试机试题2》是一个针对北大青鸟C#面向对象编程(OOP)学习者的内部测试资源。这个压缩包包含了与C# OOP相关的练习题,旨在帮助学员深入理解和掌握面向对象编程的核心概念和技术。下面将详细阐述C# OOP...
【ACCP-S1结业考试机试题2】是针对ACCP(北大青鸟APTECH计算机教育课程体系)初级阶段学员的一次考核,由田超凡原创并已申请版权保护,旨在检验学员在该阶段所学的IT基础知识,特别是编程语言、计算机原理以及软件...
【标题】"在线培训2.ACCP4.0_S2_.NET_内部测试机试题" 涉及的是一个专门针对ACCP(阿普索普认证计算机程序员)4.0第二阶段.NET技术的在线培训测试内容。这个标题揭示了几个关键信息点: 1. **ACCP4.0**:这是阿普...
【标题】"Y2结业机试题"涉及的是北大青鸟教育机构Y2阶段的Java编程结业考核,这是一套包含答案的测试题目。Y2通常指的是学习过程中的第二个阶段,意味着学员已经具备了一定的基础知识,正在进一步提升技能。 【描述...
在准备全国计算机等级考试二级C语言机试的过程中,掌握相关知识点是至关重要的。这涉及到对C语言基础语法、数据类型、运算符、控制结构、数组、指针、函数、结构体与联合体、预处理以及文件操作等多个方面的深入理解...
ACCP6.0Y2机试题仅供练习ACCP6.0Y2机试题仅供练习ACCP6.0Y2机试题仅供练习
每个文件"5.0_S1_Java内部测试机试题2.doc"、"5.0_S1_Java内部测试机试题3.doc"、"5.0_S1_Java内部测试机试题1.doc"都可能包含上述一个或多个知识点的测试题目,而"答案.java"则提供了解答,方便考生核对和学习。...
【标题】:“Volvo挖掘机试题资料”是一套专注于Volvo挖掘机操作、维修和技术知识的测试题目集合,旨在帮助学习者深化对Volvo挖掘机的理解和掌握。这套资料可能涵盖了理论知识、实际操作技能、安全规程等多个方面,...
发音比较像“师弟”,自从入职培训自我介绍后,大家就称我为“二师弟”,我喜欢看科幻小说,也喜欢做梦,有一次梦到外星球,发现外星人使用的并非10进制/16进制等,有些星球居然使用N进制(据统计N都在2~35之间),...
ASP.NET 机试题知识点总结 一、ASP.NET 概述 ASP.NET 是微软公司推出的一个基于WEB的应用程序开发框架,使用C#或VB.NET等语言开发,能够快速构建动态网站和Web应用程序。ASP.NET 提供了许多强大的功能,如数据绑定...
在Java机试题中,你可能会遇到排序算法(如冒泡排序、快速排序、归并排序)、查找算法(线性查找、二分查找)、递归和动态规划等问题。熟悉这些算法的实现方式和时间复杂度分析,能显著提高你的编程效率。 此外,...
标题"2019南京大学考研复试机试题.zip"明确指出这是一个与2019年南京大学硕士研究生入学考试复试相关的资料压缩包。"机试题"通常指的是计算机科学或相关专业在复试阶段可能会遇到的上机编程题目,考生需要在规定时间...
Java面向对象编程测试机试题 本资源是Java面向对象编程的测试机试题,旨在考察初学者对Java语言和面向对象编程的理解和掌握情况。该资源共有七个部分,分别是语言和环境、功能要求、类的设计、具体要求及推荐实现...
本资料包可能包含的是针对JSP技术的机试题及其答案,旨在帮助学习者掌握JSP的核心概念和技术。 **JSP基础知识** 1. **JSP生命周期**:JSP页面经历三个主要阶段:翻译、初始化和响应。在翻译阶段,JSP会被转换成...
"Java考试机试题"通常涵盖Java的基础语法、面向对象编程、异常处理、集合框架、多线程、输入输出流、数据库连接等核心知识点。 1. **Java基础语法**:这包括变量声明、数据类型(如基本类型和引用类型)、运算符、...
【标题】"2012北大青鸟Y2考试题(机试题)" 是一份针对北大青鸟计算机教育Y2阶段学员的机考测试题目。这个标题暗示了这是一份计算机科学和技术相关的考试,可能涵盖了该阶段学员需要掌握的核心概念、技术和编程技能。...
【Java开发机试题详解】 Java开发机试题是面试过程中常见的一种考核方式,旨在评估候选人的基础知识、编程能力和问题解决能力。以下是对部分题目的详细解释: 1. 数据库系统的恢复通常依赖于日志记录,日志应包含...
【华为机试题合集】是针对想要参加华为公司面试,特别是C语言方面考核的求职者们的一份宝贵资源。这份合集涵盖了多个方面的知识点,旨在帮助考生熟悉华为的机试流程,提高通过率。以下是对这些机试题目的详细解读: ...
北大青鸟Y2机试题,北大青鸟Y2机试题,北大青鸟Y2机试题
Java 机试题解析 Java 机试题是一份涵盖多个领域的编程题目,旨在考察 Java 初学者的基础编程能力。本文将对题目逐一进行解析,并提供相应的知识点。 1. 闰年判断 本题要求从控制台输入一个年份,然后判断是否是...