本文主要是介绍C语言编写:有从1到n依次编号的n个同学和n盏灯。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1号同学将所有的灯都关掉;2号同学将编号为2的倍数的灯都打开;3号同学则将编号为3的倍数的灯作相反处理(该号灯如打开的,则关掉;如关闭的,则打开);以后的同学都将自己编号的倍数的灯,作相反处理。问经n个同学操作后,哪些灯是开着的?
算法如下:
#include <stdio.h>
int main()
{int a[1000] = {0};int n=0, m=0, i=0, j=0, t = 0;scanf("%d,%d", &n, &m);for (i = 2; i <= m; i++) for (j = i; j <= n; j = j + i) a[j] = (a[j] == 1 ? 0 : 1); for (i = 1; i <= n; i++)if (a[i] == 0) {if (t == 0){printf("有%d盏灯是开的\n", i);t = 1; }else printf("有%d盏灯是开的\n", i);}return 0;
}
运行结果如下:例如输入20个同学,20盏灯
这篇关于C语言编写:有从1到n依次编号的n个同学和n盏灯。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!