c++初学者 开关问题 代码哪里不对

本人初学者,这个代码哪里出问题,为什么运行是错的? 题目:n盏灯,编号为1~n。1号将灯全部打开,2将按下所有为2的倍数的开关,(这些灯将被关掉)第3个人按下所有编号为3的倍数的开关(该灯如为打开的, 则将它关闭;如关闭的,则将它打开)。
//以此类推,一共有m个人,最后有哪些灯开着?(m<=n<100)

img

初始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;
}

img

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632