永发信息网

开灯问题用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];

}
}
这个样子就可以了,外层控制总的循环次数。
全部回答
  • 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");
}
  • 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]);
    }
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯