本人初学者,这个代码哪里出问题,为什么运行是错的? 题目:n盏灯,编号为1~n。1号将灯全部打开,2将按下所有为2的倍数的开关,(这些灯将被关掉)第3个人按下所有编号为3的倍数的开关(该灯如为打开的, 则将它关闭;如关闭的,则将它打开)。
//以此类推,一共有m个人,最后有哪些灯开着?(m<=n<100)
初始k数组的元素要全部赋值为1
你k[x] = 1;上一行少了 for (x = 1; x <= n; x++)
应该是
for (x = 1; x <= n; x++)
k[x] = 1;
你题目的解答代码如下:
#include<iostream>
using namespace std;
int main()
{
int m,n,i,x;
int k[100];
cin >> n >> m;
for (x = 1; x <= n; x++) //加上这个for
k[x] = 1;
for (i = 1; i <= m; i++)
{
for (x = 1; x <= n; x++)
{
if (x%i==0)
{
k[x] = (-1)*k[x];
}
}
}
for (x = 1; x <= n; x++)
{
if (k[x]==-1)
{
cout << x << '\t';
}
}
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!