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);
}
}
为什么输出不了结果啊? 展开
/* 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);
}
}
为什么输出不了结果啊? 展开
2个回答
展开全部
看代码比写代码麻烦,写一个你作参考……
//#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;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询