码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • C语言 开关灯实验


    实验说明
    有 n 盏灯,编号 1~n。第 1 个人把所有灯打开,第 2 个人按下所有编号为 2 的倍数的开关,第 3 个人按下所有编号为 3 的倍数的开关,依次类推。按开关时其中关掉的灯将被打开,开着的灯将被关闭。一共有 k 个人,输出最后开着的灯的编号。n 和 k 在运行时输入,1≤k≤n≤1000。输出的时候每行输出 10 个序号且利用输出格式实现左对齐。
    代码实现

    • 用 0 表示灯关着,1 表示灯开着。先定义一个数组,全部赋值为 0。
    • 用取余的方式判断第m个人是否要对第n个灯进行操作。
    • 摁过开关后 0 变成 1,1 变成 0。最后输出所有为 1 的元素。
    /*n人开关灯实验*/
    #include 
    #include 
    
    int main()
    {
        int arr[1000],lnum,pnum,count=0;
    
        printf("输入灯的数目:");
        scanf("%d",&lnum);
        for(int i=0;i<lnum;i++)   //赋初值
            arr[i]=0;
        printf("输入人的个数:");
        scanf("%d",&pnum);
        
        for(int m=1;m<=pnum;m++) //依次开关灯;
        {
            for(int n=1;n<=lnum;n++)
            {
                if(n%m==0)
                {
                    if(arr[n-1]) arr[n-1]=0;
                    else arr[n-1]=1;
                }
            }
        }
    
        for(int i=0;i<lnum;i++)  //输出开着的灯的编号
        {
            if (arr[i]!=0)
            {
                printf("%-4d",i+1);
                count++;
                if (count%10==0) printf("\n");
            }
        }
    
        return 0;
    }
    
    • 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

    实验结果
    输入灯的数目:200
    输入人的个数:10
    1 4 9 11 12 13 14 15 17 18
    19 20 21 23 27 29 31 35 37 41
    42 43 44 47 52 53 54 56 59 60
    61 67 68 70 71 72 73 75 76 79
    81 83 89 90 92 97 98 99 100 101
    103 107 109 112 113 116 117 121 124 127
    131 132 137 139 143 144 147 148 149 151
    153 154 156 157 162 163 164 165 167 168
    169 171 172 173 175 179 181 182 187 188
    191 193 195 197 198 199

  • 相关阅读:
    Java之stream流的详细解析
    力扣(518.377)补7.31
    React学习笔记
    IGraph使用实例——线性代数计算(blas)
    虚拟机批量备份时缩短备份窗口的方法之一:串/并行快照
    Python基础入门例程8-NP8 为整数增加小数点
    地铁大数据客流分析系统 设计与实现 计算机竞赛
    C专家编程 第7章 对内存的思考 7.8 轻松一下---“Thing King”和“页面游戏”
    使用android studio将h5项目打包成安卓app
    计算机网络——网络层(路由选择协议、路由器工作原理、IP多播、虚拟专用网和网络地址转换)
  • 原文地址:https://blog.csdn.net/weixin_42145554/article/details/128159118
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号