程序有错,我找不出来了~~请各位大侠指教

#include<stdio.h>main(){inti,j,n,m;inta[101];printf("请输入进入者的号数。\n");scanf("%d",n);for... #include<stdio.h>
main()
{
int i,j,n,m;
int a[101];
printf("请输入进入者的号数。\n");
scanf("%d",n);
for(m=1;m<=n;m++)
for(j=1;j<101;j++)
if(j%n==0)
{
if(a[j]==0) a[j]=1;
else a[j]=0;
}
printf("现在亮着的灯的编号是:\n");
for(j=1;j<101;j++)
{if(a[j]==1) printf("%4d",j);}
}

原题如下:开关灯问题
一条走廊里有100盏已经按1-100编好号码的灯,所有的灯都是关闭着的。有n个(n<=25)已同样按数字顺序编号的人按数字顺序依次进入走廊。当每个人进入走廊时,他将对所有编号为自身编号的整数倍的灯开关进行操作——将关着的灯打开,打开的灯关闭。编写程序,输出n为1-25之间任意一个值时,所有人进入走廊后灯的状态。
要求:当输入1-25之间任意一个数值时,输出亮着的灯的编号,用空格隔开。
例如:输入 2

则1号进入房间后,将所有灯都打开(因为所有灯编号都为1的倍数)
之后2进入房间,将所有偶数编号的灯开关都操作一次。所以:
输出:1 3 5 7 9 11…………97 99
展开
 我来答
terranlong
2011-11-28 · TA获得超过7295个赞
知道大有可为答主
回答量:2660
采纳率:66%
帮助的人:4284万
展开全部
已改,看注释
#include<stdio.h>
void main()
{
int i,j,n,m;
int a[101];
for(j=1;j<101;j++) //先给数组赋初值
{
a[j] = 0;
}
printf("请输入进入者的号数。\n");
scanf("%d",&n); //加个&
for(m=1;m<=n;m++)
for(j=1;j<101;j++)
if(j%m==0) //%m,不是%n
{
if(a[j]==0)
a[j]=1;
else
a[j]=0;
}
printf("现在亮着的灯的编号是:\n");
for(j=1;j<101;j++)
{
if(a[j]==1)
printf("%4d",j);
}
}
中智咨询
2024-08-28 广告
在当今竞争激烈的商业环境中,企业需要不断提高自身的竞争力,以保持市场份额和增加利润。通过人效提升,企业可以更有效地利用有限的资源,提高生产力和效益,从而实现盈利目标。中智咨询提供全方位的组织人效评价与诊断、人效提升方案等数据和管理咨询服务。... 点击进入详情页
本回答由中智咨询提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式