精华内容
下载资源
问答
  • 看了挺多博客感觉都挺复杂的,自己写这个自认为比较简单,也更灵活,希望可以帮到需要的人,... circle.append(circle.pop(0)) #把已报数的人取出放到队尾,以此实现围成圈循环往复 num+=1 if num==m: del circle[0]
  • 一、题目有n个人围成一圈,顺序排号。从第一个人开始进行报数,从1到3报数,凡是报到3的人就要退出圈子。这里的话问题就来了,请问,最后留下来的是原来第几号的那个人呢?注意了!题目一定要先看清楚,要理解,题目...

    下面给大家带来的这道编程题可以算得上是一道非常基础的java编程题目,刚刚开始接触java编程的小伙伴一起来看看具体的题目以及解题方法吧。

    下面是具体的题目,题目还是非常的简单的。

    一、题目

    有n个人围成一圈,顺序排号。

    从第一个人开始进行报数,从1到3报数,凡是报到3的人就要退出圈子。

    这里的话问题就来了,请问,最后留下来的是原来第几号的那个人呢?

    注意了!题目一定要先看清楚,要理解,题目究竟要你解决的是什么问题,看清楚理解了题目,再来想思路以及做解答。

    下面是这道题目的具体解法。

    二、代码实现import java.util.Scanner;

    public class Prog37

    {

    public static void main(String[] args)

    {

    System.out.print("请输入一个整数:");

    Scanner scan = new Scanner(System.in);

    int n = scan.nextInt();

    scan.close();

    //定义数组变量标识某人是否还在圈内

    boolean[] isIn = new boolean[n];

    for (int i = 0; i 

    isIn[i] = true;

    //定义圈内人数、报数、索引

    int inCount = n;

    int countNum = 0;

    int index = 0;

    while (inCount > 1)

    {

    if (isIn[index])

    {

    countNum++;

    if (countNum == 3)

    {

    countNum = 0;

    isIn[index] = false;

    inCount--;

    }

    }

    index++;

    if (index == n)

    index = 0;

    }

    for (int i = 0; i 

    if (isIn[i])

    System.out.println("留下的是:" + (i + 1));

    }

    }

    这道java入门编程还是非常的简单的,你理解了吗?

    假如你还想了解更多的java基础编程题,可以继续的关注本站的java实例栏目来进行了解呢。

    更多的例题可以分享给你,希望能够对你有所帮助哦。

    推荐阅读:

    展开全文
  • 小黄人.jpg有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。看完之后,是不是种瞬间蒙圈的赶脚?其实这道题考察的主要是Python当中的一个叫做...

    今天的这道题,还是有一些难度的,我们先来看一下题目。

    d73ae65582ed7b3a3c5de05e419b5219.png

    小黄人.jpg

    有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。

    看完之后,是不是有种瞬间蒙圈的赶脚?

    其实这道题考察的主要是Python当中的一个叫做pop()的函数,而这个函数也是在上一个实例当中使用到过的一个函数,明白了这个函数的用法之后,就能够比较轻松的将这道题目解答出来。

    pop()函数的主要作用可以详见下图:

    d9c9f019d20f9023986764b4e8facd47.png

    image.png

    下面我们来看一下代码:

    # 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。

    n = int(input("请输入人数:"))

    list = [] # 创建一个空列表

    count = 0 #创建一个计数的值

    for i in range(1,n+1): #创建一个循环,将列表当中的所有元素都添加进去

    list.append(i)

    while True: # 如果为真 创建一个条件循环

    if len(list) == 1: # 如果列表的长度为1

    print(list) # 打印出该列表的数字

    break

    else: #否则针对其余情况,单独创建一个如下的条件

    count += 1 # 记数加1

    pop = list[0] #取出列表当中的第一个元素,并赋值给pop

    list.pop(0) #移除列表当中的第一个元素

    if count == 3: # 如果count的数为3的时候

    count = 0 #count归0

    continue #并继续

    else: # 否则

    list.append(pop) #将移除的元素加入到list当中,如此循环往复

    print(list) # 最后打印出剩余在list中的元素

    我们再来看一下输出的结果:

    C:\Python\python.exe "C:/Users/Administrator/Desktop/Python 练习实例100题/Python69.py"

    请输入人数:34

    [10]

    [10]

    Process finished with exit code 0

    2020年4月1日(愚人节快乐!)

    北京市通州区京贸中心

    展开全文
  • 用C语言编写:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到m报数),凡报到m的人退出圈子,请输出报数出列圈及最后留下的数据和在原来位置的第几号?要求如下:(1)用函数来实现报数并退出(2)要求使用指针#...

    用C语言编写:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到m报数),凡报到m的人退出圈子,请输出报数出列圈及最后留下的数据和在原来位置的第几号?

    要求如下:

    (1)用函数来实现报数并退出

    (2)要求使用指针

    #include

    #include

    #include

    #include

    #include

    int main(int argc, char **argv)

    {

    int n, m;

    n = atoi(argv[1]);

    m = atoi(argv[2]);

    printf("n=%d, m=%d\n", n, m);

    int *arr;

    int i;

    //创建一个n字节大小的数组

    arr = (int *)malloc(n * sizeof(int));

    for(i=0; i

    {

    arr[i] = 1;

    }

    for(i=0; i

    printf("arr[%d] = %d\n", i, arr[i]);

    int next = 1;

    int index = 0;

    int count = n;

    //如果剩下的人数小于1,则报数完毕

    while(count > 1)

    {

    //在剩下的人中继续报数

    if(arr[index] == 1)

    {

    //从1报数到m的时候,T出去一个人

    if(next == m)

    {

    arr[index] = 0;

    --count;

    next = 1;

    printf("out num = %d\n", index);

    }

    else

    next++;

    }

    ++index;

    if(index == n)

    {

    index = 0;

    }

    }

    //查找到最后报数的人

    for(i=0; i

    {

    if(arr[i] == 1)

    {

    printf("the last number = %d\n", i+1);

    break;

    }

    }

    //回收内存

    free(arr);

    return 0;

    }

    展开全文
  • 来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2021/05/20 00:22:21C语言 有n个人围成一圈,按顺序从1到n编号.从第一个人开始报数,报数3的人退出圈子有n个人围成一圈,按顺序从1到n编号.从第一个人开始报数,报...

    来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2021/05/20 00:22:21

    C语言 有n个人围成一圈,按顺序从1到n编号.从第一个人开始报数,报数3的人退出圈子

    有n个人围成一圈,按顺序从1到n编号.从第一个人开始报数,报数3的人退出圈子,下一个人从1开始重新报数,报数3的人退出圈子.如此循环,直到留下最后一个人.问留下来的人的编号.

    【输入形式】

    考虑如下两种情况:

    如果n超出“n must be a natural number less than 10000”,则打印“n is out of range of valid values.”;其中n应该用如上输入的具体的n数值代替;换行;

    如果n是有效范围的数值,则打印“Last No.is:”;然后直接在冒号后面输出最后留下来的人的编号;换行;

    【运行时的输入输出样例1】(下划线部分表示输入)

    Input n(n must be a natural number less than 10000):5

    Last No.is:4

    【运行时的输入输出样例2】(下划线部分表示输入)

    Input n(n must be a natural number less than 10000):100000

    100000 is out of range of valid values.

    我的程序为什么死循环啊.刚学指针,求改正,

    #include

    #define N 9999

    int main()

    {

    \x05int n,a[N],*p,i=0,out=0,count=0;

    \x05printf("Input n(n must be a natural number less than 10000):");

    \x05scanf("%d",&n);

    \x05if(n>=10000)

    \x05\x05printf("n is out of range of valid values.");

    \x05else

    \x05{

    \x05\x05for(i=0;i

    #include

    #define N 9999

    int main()

    {

    int n,a[N],*p,i=0,out=0,count=0;

    printf("Input n(n must be a natural number less than 10000):");

    scanf("%d",&n);

    if(n>=10000)

    printf("n is out of range of valid values.");改为printf("%d is out of range of valid values.",n);

    else

    {

    for(i=0;i

    再问: 我重新根据你的改了下,还是死循环,逐步调试后,if(*p!=0)这个,全部被跳过了... 可是明明p是指向a[]的啊...然后就死循环了.. 还有那个for(;;)是什么意思,没有判断等语句,不是等于没有用么?.

    再答: 确实不行,因为*p==0的情况没有处理,这样遇到一个*p==0就一直死循环了 至于那个for循环的判断语句在循环里面,就是那个break;也可以用while(1)来代替 把p=a;改为p=&a[1];后面循环写成下面这样看看 while(out!=n-1) { while(1) { if(*p!=0) count++; if(p==&a[n]) p=&a[1]; else p++; if(count==3) { if(p==&a[1]) a[n]=0; else p--; out++; //在这儿家加上printf("%d->",*p);就可以把顺序打出来了 *p=0; break; } }结束while(1) count=0; }结束while(out!=n-1) for(i=1;i

    展开全文
  • 有n个人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号那位。 题目分析: 这道题目是我们在日常生活中也能经常见到的一种报数小游戏。首先我们先分析一下...
  • 问题:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。解题思路:假设一共n个人,则定义一个长度为n的boolean数组。全部元素的值为true。报...
  • 题目:有N个人,从1到N编号,按照编号顺序围成一圈。从第一个人开始报数(从1报到3),凡报到3的人退出圈子。问:最后留下的人的编号是几号。==============================这是百度知道中,很常见的题目,多数都了...
  • 然后今天群里突然人提出了题目的这个问题:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。冥思苦想半天(好吧我审完题就百度的),,然后查到...
  • 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几位。 案例实现 为方便大家理解,我详细说明一些函数的引用。如果觉得没必要,直接跳到最后代码页即可。...
  • C语言经典例69-有n个人围成一圈报数问题

    千次阅读 多人点赞 2020-02-17 13:53:59
    有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 2 分析 假设全部人都退圈,则最后一个退圈的人就是题目中留下的那一位,详细思路请见实现中...
  • public class Test {public static void main(String[] args) {// 测试数据ArrayList list = new ArrayList();list.add(1);list.add(2);list.add(3);list.add(4);list.add(5);list.add(6);list.add(7);...
  • 将这n个人加入到链表中,然后定义三个节点指针在链表上循环,移动跨度为3,利用链表的循环功能每次删除第三个节点,这边要注意的个问题就是你定义的是3个指针,且在循环中他们彼此也都是->next关系,一般我们...
  • C++编程,要求用指针或引用方法处理:有n个人围成一圈 顺序排号 从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的人原来排在第几号。以下是此题的【c++源代码】,需要【c源代码】请点击进入#...
  • https://www.cnblogs.com/xtuxiongda/p/8295690.html #include<stdio.h> int main() { int a[100]; int n; int i,j; scanf("%d",&n); j=n; for(i=0;i<n;i++) a[i]=...
  • 自己写的,是利用列表 仿照报数过程个把人踢出去最后得到结果:count = int(raw_input('Please input the count:'))li = []for i in range(count):li.append(i+1)times = count/3 +2count_tial = 0for i in ...
  • 【问题描述】有n个人围成一圈,按顺序从1到n编号。从第一个人开始报数,报数3的人退出圈子,下一个人从1开始重新报数,报数3的人退出圈子。如此循环,直到留下最后一个人。问留下来的人的编号。【输入形式】输入人数...
  • # 有n个人围成一圈,顺序排号。 # 从第一个人开始报数(从1到3报数), # 凡报到3的人退出圈子, # 问最后留下的是原来第几号的那位 n = int(input("请输入总人数:")) n_list = [] a = -1 flag = True for i in ...
  • Python 练习实例69题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。程序分析:无。程序源代码:#!/usr/bin/python# -*- coding: UTF-8 -*...
  • 该题本质为约瑟夫环,输入两个正整数 n 和 m( (1常用的三种解法1-数组、2-循环列表、3-递归。种解法:用数组来对约瑟夫环求解。思路:定义个数组,给其开辟空间,然后将编号放进数组中,即对数组初始化,遇到...
  • 题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。import java.util.Scanner;public class Ex37 {public static void main(String[] args)...
  • 这是今天老师给我们出的一道编程题,开始觉得挺简单的,直觉告诉我应该可以直接用数组进行判断。但是我没做出来,可能是我想得太复杂了,思路不够清晰,自己把自己搅进去了。然后我就用环形链表来做的,其实这样做...
  • 附加: 第个 while 循环跑的过程k = 1 [1,2,3,4,5,6,7,8,9,10] num[0] = 1 k +=1 i += 1 ==> k = 1 i = 1 m = 0k = 2 [1,2,3,4,5,6,7,8,9,10] num[1] = 2 k +=1 i += 1 ==> k = 2 i =...
  • 报数游戏是这样的:有n个人围成一圈,按顺序从1到n编好号。从第一个人开始报数,报到m(<n)的人退出圈子;下一个人从1开始报数,报到m的人退出圈子。如此下去,如此反复到所有人出列。设n个人的编号分别为1,2,...
  • 问题:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第 几号的那位。 解决思路: 我的解决思路是先给这n个人排序生成代表他们身份标记的列表,对列表进行...
  • 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号。 本程序使用链表类,原因:链表的插入、删除操作方便,效率高。 算法: * 1、使用链表类 * 2、...
  • 题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号(假设班上20人)。 思路:   首先:我们可以先将班上的人(20人)做标记装进一个数组里,...
  • 说明:本篇对标题所阐述的内容...题目1:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,将退出顺序依次输出。 C代码: #define _CRT_SECURE_NO_WARNINGS #include<stdi...
  • (C++)有n个人围成一圈,顺序排号。从第一个人开始报数(1~3报数),凡报到3的人退出圈子,问最后留下的人原来排在第几号。 #include<iostream> #include<iomanip> using namespace std; int main() {...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,399
精华内容 4,959
关键字:

有n个人围成一圈

友情链接: Matlab.rar