使用C语言编写程序有 n 盏灯,编号为 1~n。第一个人把所有灯打开;第二个人按下所有编号为 2 的倍数的开关(这些灯将关掉);第三个人按下所有编号是 3 的倍数的开关(其中关掉的灯将被打开,开着的灯将被关掉);依次类推,一共有 k 个人,问最后有哪些灯开着,输入 n 和 k,输出开着的灯的编号。写出完整程序代码并给出相应代码注释
时间: 2023-03-12 11:22:36 浏览: 103
根据题意,可以编写如下C语言程序:/*
程序功能:输入 n 和 k,输出最后开着的灯的编号
*/
#include <stdio.h>int main(){
int n, k; // n 为灯的数量,k 为操作人数
int light[100] = {0}; // 用于存放灯的状态,1 为开,0 为关
int i, j;
printf("请输入灯的数量 n 和操作人数 k:\n");
scanf("%d%d", &n, &k);
// 把所有灯都打开
for(i = 1; i <= n; i++)
light[i] = 1;
// 按照题意操作灯
for (i = 1; i <= k; i++) {
for (j = 1; j <= n; j++) {
// 如果 j 是 i 的倍数,则改变灯的状态
if (j % i == 0) {
if (light[j] == 1)
light[j] = 0;
else
light[j] = 1;
}
}
}
// 打印出最后开着的灯的编号
printf("最后开着的灯的编号为:");
for (i = 1; i <= n; i++) {
if (light[i] == 1)
printf("%d ", i);
}
printf("\n");
return 0;
}
相关推荐
![c](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)