C语言开灯问题就解释,题目什么意思?
答案:2 悬赏:0 手机版
解决时间 2021-03-24 13:06
- 提问者网友:精神病院里
- 2021-03-24 01:26
C语言开灯问题就解释,题目什么意思?
最佳答案
- 五星知识达人网友:荒野風
- 2021-03-24 01:33
6既是2的倍数也是3的倍数
所以被2号人关闭了之后,又被3号人打开了追问那程序应怎么写 能不能写出来 看看追答简单写一下
int i,j,n,k;
bool used[1005];
scanf("%d%d", &n, &k);
for(i = 1; i <= n; i++) used[i] = false;
for(i = 1; i <= k; i++)
for(j = 1; j*i <= n; j++)
used[j*i] = !used[j*i];//转换灯的状态
for(i = 1; i <= n; i++)
if(used[i])
printf("%d ", i);
所以被2号人关闭了之后,又被3号人打开了追问那程序应怎么写 能不能写出来 看看追答简单写一下
int i,j,n,k;
bool used[1005];
scanf("%d%d", &n, &k);
for(i = 1; i <= n; i++) used[i] = false;
for(i = 1; i <= k; i++)
for(j = 1; j*i <= n; j++)
used[j*i] = !used[j*i];//转换灯的状态
for(i = 1; i <= n; i++)
if(used[i])
printf("%d ", i);
全部回答
- 1楼网友:杯酒困英雄
- 2021-03-24 02:39
//我觉得7号灯肯定是在关闭状态
//因为第1个人把所有等打开,那么只有第7个人是7的倍数,
//所以第7个人会把第7个灯关闭掉,7号灯的状态肯定是关闭的
//所以说你这个输出有可能是错误的。
//给你写的完整代码,希望能帮到你。
#include
#define N 1000
struct Light
{
int num;
int onOff; //1打开 0关闭
};
int main()
{
int n,k,i;
Light light[N];
scanf("%d %d",&k,&n);
if(k>n||n>1000) //不符合条件的直接返回
return 0;
for(i=0;i {
light[i].onOff = 1;
light[i].num = i+1;
}
for(i=2;i<=k;i++) //从第2个人开始循环,一直到第k个
for(int j=0;j if(light[j].num%i==0&&light[j].num>=i) //如果灯的编号是人的编号的倍数,且灯号大于人号
{
if(light[j].onOff==1) //如果是开,就关闭,否则打开
light[j].onOff=0;
else light[j].onOff=1;
//输出信息
printf("i=%d 第%d号灯,状态:%d ",i,light[j].num,light[j].onOff);
}
for(i=0;i if(light[i].onOff==1)
printf("%d ",light[i].num);
printf(" ");
return 0;
}追问大哥 看来你也没有理解 那是标准输出追答题目要求:第1个人把所有灯打开,第2个人按下所有编号为2 的倍数的开关(这些灯将被关掉),第3 个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),依此类推。
先不看其他的输出结果,就单看 7号灯。
第1个人把所有灯打开。
第2个人把2、4、6、8。。。。。灯关闭
。。。
第7个人把7号灯关闭。
7号灯的最终状态肯定是关闭着的啊,这个我确实无法理解。
//因为第1个人把所有等打开,那么只有第7个人是7的倍数,
//所以第7个人会把第7个灯关闭掉,7号灯的状态肯定是关闭的
//所以说你这个输出有可能是错误的。
//给你写的完整代码,希望能帮到你。
#include
#define N 1000
struct Light
{
int num;
int onOff; //1打开 0关闭
};
int main()
{
int n,k,i;
Light light[N];
scanf("%d %d",&k,&n);
if(k>n||n>1000) //不符合条件的直接返回
return 0;
for(i=0;i
light[i].onOff = 1;
light[i].num = i+1;
}
for(i=2;i<=k;i++) //从第2个人开始循环,一直到第k个
for(int j=0;j
{
if(light[j].onOff==1) //如果是开,就关闭,否则打开
light[j].onOff=0;
else light[j].onOff=1;
//输出信息
printf("i=%d 第%d号灯,状态:%d ",i,light[j].num,light[j].onOff);
}
for(i=0;i
printf("%d ",light[i].num);
printf(" ");
return 0;
}追问大哥 看来你也没有理解 那是标准输出追答题目要求:第1个人把所有灯打开,第2个人按下所有编号为2 的倍数的开关(这些灯将被关掉),第3 个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),依此类推。
先不看其他的输出结果,就单看 7号灯。
第1个人把所有灯打开。
第2个人把2、4、6、8。。。。。灯关闭
。。。
第7个人把7号灯关闭。
7号灯的最终状态肯定是关闭着的啊,这个我确实无法理解。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯