服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - C语言围圈报数题目代码实现

C语言围圈报数题目代码实现

2022-08-05 11:28我說 C/C++

大家好,本篇文章主要讲的是C语言围圈报数题目代码实现,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览

围圈报数 题目

C语言围圈报数题目代码实现

解题步骤

一.整体逻辑

1.从第1个人开始报数,
2.数到第m个人出列,
3.然后从出列的下一个人开始报数,
4.数到第m个人又出列,…,如此反复到所有的人全部出列为止。

二.逻辑的实现

1.创造一个数组来记录人的信息
2.利用循环依次报数(当只剩下一个人的时候,循环结束(因为不需要报数了,直接输出就可以了))
3.输出报到m的人,并且将他标记起来(表示此人已出列)
4.最后输出剩下的那个人

三.代码的实现

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include<stdio.h>
#include<string.h>
#pragma warning(disable:4996)
int main()
{
    int n, m;
    scanf("%d %d", &n,& m);
    int* arr = (int*)malloc(sizeof(int) * (n+1));  //创造一个数组
    for (int i = 0; i <= n; i++)
    {
        arr[i] = i ;                      
    }
    int number = 0;//出列的人数
    int k = 0;
    int j = 1;
    while (number < n - 1)  //当只剩下一个人的时候推出
    {
        if (arr[j] != 0)//报数
        {
            k++;
        }  
        if (k == m)
        {
            printf("%d ", arr[j]);
            arr[j] = 0; //出列的人标记起来
            number++;
            k = 0;
        }
        j++;
        if (j == n+1)        //当最后一个人报完的时候,回到第一个人
            j = 1;
    }
    for (int i = 1; i <= n; i++)
    {
        if (arr[i] != 0)
            printf("%d", arr[i]);  //最后打印出剩下的一个人
    }
    return 0;
}

感悟

最近过得十分的压抑,感觉胸上压了块石头一样,我觉得根本上还是自己太堕落了,没有去努力,跟没有去朝着能实现自己人生目标和价值的方向去奋斗,所以才导致自己莫名的低落。所以我决定以后每天写一到两篇博客,即是对自己的督促,也是对知识的巩固!

这个题本质上还是借助了链表的概念,创造一个数组也就是创造一个链表来保存队伍的信息。
一开始我并没有想到能直接创造一个数组来实现,导致想得过于复杂了。
以后在学数据结构的时候也要多做总结和归纳,吸取里面宝贵的技巧,不能写了一题忘了一题。

到此这篇关于C语言围圈报数题目代码实现的文章就介绍到这了,更多相关C语言围圈报数内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/m0_61719175/article/details/122231194

延伸 · 阅读

精彩推荐
  • C/C++在Ubuntu中安装VSCode并配置C/C++开发环境的方法步骤

    在Ubuntu中安装VSCode并配置C/C++开发环境的方法步骤

    这篇文章主要介绍了在Ubuntu中安装VSCode并配置C/C++开发环境的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价...

    ChuanGod9282021-09-03
  • C/C++搭建C语言开发环境(Windows平台)汇总

    搭建C语言开发环境(Windows平台)汇总

    本文给大家汇总了5种在WIN平台下搭建C语言开发环境的方法,包括一、在Windows平台配置GNU环境,二、使用Sublime Test开发C语言程序,三、使用VisualStudio开发...

    C语言教程网5902021-03-15
  • C/C++C++实现多线程查找文件实例

    C++实现多线程查找文件实例

    这篇文章主要介绍了C++实现多线程查找文件实例,对于深入学习C++程序设计有着很好的参考借鉴价值,需要的朋友可以参考下...

    C++教程网4362021-02-06
  • C/C++VS2019配置OpenCV时找不到Microsoft.Cpp.x64.user的解决方法

    VS2019配置OpenCV时找不到Microsoft.Cpp.x64.user的解决方法

    这篇文章主要介绍了VS2019配置OpenCV时找不到Microsoft.Cpp.x64.user的解决方法,需要的朋友可以参考下...

    江小举4312021-08-17
  • C/C++C语言代码实现点餐系统

    C语言代码实现点餐系统

    这篇文章主要为大家详细介绍了C语言实现点餐系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    nefu_zc10562021-09-17
  • C/C++C语言使用链表实现学生信息管理系统

    C语言使用链表实现学生信息管理系统

    这篇文章主要为大家详细介绍了C语言使用链表实现学生信息管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一...

    Newtol12272021-08-11
  • C/C++Qt CEF融合技QCefView使用教程(推荐)

    Qt CEF融合技QCefView使用教程(推荐)

    QCefView是一个与Chromium Embedded Framework集成的Qt第三方开源库,LGPL许可,可以在项目中免费使用,功能类似CEF、QWebEngineView,提供C++和web交互的能力,本文给大...

    令狐掌门5882022-07-13
  • C/C++C++模板类的用法

    C++模板类的用法

    这篇文章主要介绍了C++模板类的用法,实例讲述了模板类的概念及相关用法,需要的朋友可以参考下...

    C++教程网5992021-02-14