为什么c++程序运行没结果?

有n盏灯,编号为1~n。第一个人把所有灯打开,第二个人按下所有编号为2的倍数的开关(这些灯将被关掉),第三个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯... 有n盏灯,编号为1~n。第一个人把所有灯打开,第二个人按下所有编号为2的倍数的开关(这些灯将被关掉),第三个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关掉),以此类推。一共有k个人,问最后有那些灯开着?输入:n和k,输出开着灯的编号。k<=n<=1000。下面代码是算法书上抄下来的,但是Dev c++和visual c++都运行不出结果求大侠解决#include<stdio.h>#include<string.h>#define maxn 1010int a[maxn];int main(){int n,k,first=1;memset(a,false,sizeof(a));scanf("%d %d",&n,&k);for(int i=1;i<=k;i++)for(int j=1;i<=n;j++)if(j % i == 0) a[j]=!a[j];for(int i=1;i<=n;i++)if(a[i]){if(first) first=0; else printf(" ");printf("%d",i);}return 0;} 展开
 我来答
白狼圣狂
2019-03-13 · 超过52用户采纳过TA的回答
知道小有建树答主
回答量:131
采纳率:70%
帮助的人:32.9万
展开全部
同志,你确定第11行没写错?
你弄了个死循环啊!
把第11行的for(int j=1;i<=n;j++)改为for(int i=1;j<=n;j++).
我的电脑不一样,会因为越界产生错误乱码,再停止运行。
当程序发生越界异常时(超出下标),会启动错误捕捉处理程序,然后立即终止程序,所以你那个printf来不及运行前就被终止了。
CJJohn
2019-03-13 · Persistence is harder than eff...
CJJohn
采纳数:475 获赞数:1362

向TA提问 私信TA
展开全部
把a数组的类型从int改为bool
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式