开灯问题用C语言中的数组怎么解决?
答案:5 悬赏:80 手机版
解决时间 2021-04-02 07:01
- 提问者网友:一抹荒凉废墟
- 2021-04-01 18:42
开灯问题用C语言中的数组怎么解决?
最佳答案
- 五星知识达人网友:风格不统一
- 2021-04-01 18:59
你这个只是一次循环而已,应该在外层嵌套一个循环,从1循环到100,表示这100个学生按灯,你的这个循环相当于是每个学生是怎么按灯的,是内层循环。
for(int k=1;k<=100;k++)
{
for (j=i;j<=n;j=j+i)
{
a[j]=!a[j];
}
}
这个样子就可以了,外层控制总的循环次数。
for(int k=1;k<=100;k++)
{
for (j=i;j<=n;j=j+i)
{
a[j]=!a[j];
}
}
这个样子就可以了,外层控制总的循环次数。
全部回答
- 1楼网友:风格不统一
- 2021-04-01 22:16
题目有问题吧,凡是1的倍数都按一下,1-100都是1的倍数啊
- 2楼网友:玩世
- 2021-04-01 21:04
首先,你数组越界了,造成了你的for (j=i;j<=n;j=j+i)变成了死循环。应改为for (j=i;j 其次,你的算法有问题,应该要for循环嵌套,你只有一个,结果肯定不对。
- 3楼网友:妄饮晩冬酒
- 2021-04-01 20:39
#include
#define n 100
void main(void)
{
int i, j, a[n];
for(i = 0; i < n; i++) a[i] = 0;// 初始化为全0
for(i = 1; i <= n; i++)
for(j = i ; j <= n; j = j + i)
a[j - 1] += 1;
//100人对100灯,都操作完毕,下面是显示
for(i = 0; i < n; i++) {
if((i % 8) == 0) printf("\n");
printf(" L%2d: %d, ", i + 1, a[i] % 2);
}
printf("\n");
}
#define n 100
void main(void)
{
int i, j, a[n];
for(i = 0; i < n; i++) a[i] = 0;// 初始化为全0
for(i = 1; i <= n; i++)
for(j = i ; j <= n; j = j + i)
a[j - 1] += 1;
//100人对100灯,都操作完毕,下面是显示
for(i = 0; i < n; i++) {
if((i % 8) == 0) printf("\n");
printf(" L%2d: %d, ", i + 1, a[i] % 2);
}
printf("\n");
}
- 4楼网友:琴狂剑也妄
- 2021-04-01 19:45
#include
#define NUM (100)
void main(void)
{
unsigned char Light[NUM];
unsigned char i,j;
// 0 代表灭 1 代表亮
// 首先关掉所有灯
for(i = 0; i < NUM; i++)
{
Light[i] = 0;
}
// i 第几个学生
for(i = 1; i <= NUM; i++)
{
// j 第几个灯
for(j = i; j <= NUM; j = j+i)
{
Light[j-1] = (Light[j-1] == 0)?1:0; // 按动开关
}
}
// 显示
for(i = 0; i < NUM; i++)
{
printf("%d ",Light[i]);
}
}
#define NUM (100)
void main(void)
{
unsigned char Light[NUM];
unsigned char i,j;
// 0 代表灭 1 代表亮
// 首先关掉所有灯
for(i = 0; i < NUM; i++)
{
Light[i] = 0;
}
// i 第几个学生
for(i = 1; i <= NUM; i++)
{
// j 第几个灯
for(j = i; j <= NUM; j = j+i)
{
Light[j-1] = (Light[j-1] == 0)?1:0; // 按动开关
}
}
// 显示
for(i = 0; i < NUM; i++)
{
printf("%d ",Light[i]);
}
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯