C语言开灯问题,有n(n<100)盏灯,编号为1~n。第一个人把所有灯都打开,第二个人按下所有

开灯问题,有n(n<100)盏灯,编号为1~n。第一个人把所有灯都打开,第二个人按下所有编号为2的倍数的开关(这些灯将被关掉),第三个人按下所有编号为3的倍数的开关(其中... 开灯问题,有n(n<100)盏灯,编号为1~n。第一个人把所有灯都打开,第二个人按下所有编号为2的倍数的开关(这些灯将被关掉),第三个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),以此类推。一共有k个人,问最后有哪些灯开着?输入n和k,输出开着的灯的编号
/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
/*0表示关灯,1表示开灯*/
int n,k,a[101],i,b,c,d;
printf("输入人数");
scanf("%d",&k);
printf("输入灯的数目");
scanf("%d",&n);
for(i=1;i<101;i++)
{
a[i]=0;

}

for(b=1;b<=k;k++)
{

for(c=1;c<=n;c++)
{

if(c%b==0)
{
if(a[c]==0)
{
a[c]=1;
}else
{
a[c]=0;
}

}

}

}
for(d=1;d<=n;d++)
if(a[d]==1){
printf("%d",d);
}

}
为什么输出不了结果啊?
展开
 我来答
White_MouseYBZ
推荐于2018-02-28 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6775万
展开全部

看代码比写代码麻烦,写一个你作参考……

//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
int main(void){
    char light[101];
    int n,k,i,j;
    while(1){
        printf("Input n & k(0<n<100 0<k<=n)...\nn=");
        if(scanf("%d%d",&n,&k) && n>0 && n<100 && k>0 && k<=n)
            break;
        printf("Error, redo: ");
    }
    for(i=1;i<=n;light[i++]=1);
    for(i=2;i<=k;i++)
        for(j=i;j<=n;j++)
            if(j%i==0)
                light[j]^=1;
    for(i=1;i<=n;i++)
        if(light[i])
            printf("%d ",i);
    printf("\n");
    return 0;
}
主愛我家CZ
2015-10-24 · 超过33用户采纳过TA的回答
知道答主
回答量:44
采纳率:0%
帮助的人:44.9万
展开全部
for (b = 1; b <= k; k++) 这里字母写错了吧,应该是for(b = 1; b <= k; b++)
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式