21xrx.com
2024-12-23 00:53:24 Monday
登录
文章检索 我的文章 写文章
关灯问题的c语言实现
2023-06-18 17:59:41 深夜i     --     --
关灯问题 c语言 数组 循环 条件

关灯问题是一个著名的数学思维题,现在我们可以使用c语言来实现这个问题。在这个问题中,有一排灯泡,一开始它们都是亮着的,然后人们逐个按下了一些灯泡的开关,使得它们的状态发生了改变。现在我们需要找出最终还亮着的灯泡的编号。

首先,我们可以通过创建一个布尔类型的数组来表示灯泡的状态。数组的初始值均为true,表示所有的灯泡都是亮着的。然后,我们按照题目所给的条件,依次改变相应灯泡的状态。最后,我们再扫描一遍数组,输出值为true(即亮着)的元素下标即可。

代码如下:


#include

#include

#define N 1000

int main()

{

  bool light[N] = { true };  // 初始化数组,全是true

  int n, k, i, j;

  scanf("%d%d", &n, &k);

  for (i = 1;i <= k;++i) // 模拟开关操作

  {

    for (j = 1;j <= n;++j)

    {

      if (j % i == 0) light[j] = !light[j]; // 改变相应灯泡的状态

    }

  }

  for (i = 1;i <= n;++i) // 输出结果

  {

    if (light[i]) printf("%d ", i);

  }

  return 0;

}

通过这个问题的实现,我们不仅可以熟悉c语言的数组和循环语句等基本语法,还能培养我们的动手能力和思维能力。

生成的

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复