其他分享
首页 > 其他分享> > c语言 开灯问题 vs2019编译通过

c语言 开灯问题 vs2019编译通过

作者:互联网

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 //开灯问题
 4 //总共有n盏灯,编号为1~n,k个人
 5 //第一个人摁下所有灯的开关
 6 //第二个人摁下所有编号为2的倍数的开关
 7 //第三个人摁下所有编号为3的倍数的开关
 8 //......
 9 //传入k<n<1000,问最后哪些灯是开着的
10 int main()
11 {
12     ////先来看看最简单的情形:固定灯和人数
13     //int Light[10] = { -1,-1,-1,-1,-1,-1,-1,-1,-1,-1 };
14     //printf("灯组初始状态为:");
15     //for (int element = 0; element < 10; element++) {
16     //    printf("%d\t", Light[element]);
17     //}
18     //printf("\n");
19     //int Switch = 3;
20     ////3个人分别对灯组进行操作
21     //for (int i = 1; i < Switch + 1; i++) {
22 
23     //    for (int element = 0; element < 10; element++) {
24     //        if ((element + 1) % i == 0) {
25     //            Light[element] = -1 * Light[element];
26     //        }
27     //    }
28     //    printf("第%d个人操作后的结果", i);
29     //    for (int element = 0; element < 10; element++) {
30     //        printf("%d\t", Light[element]);
31     //    }
32     //    printf("\n");
33     //}
34     //printf("灯组最后为:");
35     //for (int element = 0; element < 10; element++) {
36     //    printf("%d\t", Light[element]);
37     //}
38 
39     //-----------------------------------------
40     //-----------------------------------------
41 
42     //当灯和人数均由外界指定时,这里我们采用动态数组实现
43     int LightLen;
44     int* Light;
45     printf("请输入灯组数量");
46     scanf_s("%d", &LightLen);
47     if (LightLen >= 1000 || LightLen <= 0) {
48         printf("灯组数量应该满足0<Switch<LightLen<1000!\n");
49         return 0;
50     }
51     Light = (int*)malloc(LightLen * sizeof(int));
52     if (!Light) {
53         printf("创建灯组失败\n");
54         exit(1);
55     }
56     //灯组初始状态置为1
57     for (int i = 0; i < LightLen; i++) {
58         Light[i] = -1;
59     }
60     for (int i = 0; i < LightLen; i++) {
61         printf("%d\t", Light[i]);
62     }
63     printf("\n");
64     //准备接受人数值
65     int Switch;
66     printf("请输入人数:\n");
67     scanf_s("%d", &Switch);
68     if (Switch >= 1000 || Switch <= 0) {
69         printf("人数应该满足0<Switch<LightLen<1000!\n");
70         return 0;
71     }
72     for (int i = 1; i < Switch + 1; i++) {
73 
74         for (int element = 0; element < 10; element++) {
75             if ((element + 1) % i == 0) {
76                 Light[element] = -1 * Light[element];
77             }
78         }
79         printf("第%d个人操作后的结果", i);
80         for (int element = 0; element < 10; element++) {
81             printf("%d\t", Light[element]);
82         }
83         printf("\n");
84     }
85     printf("灯组最后为:");
86     for (int element = 0; element < 10; element++) {
87         printf("%d\t", Light[element]);
88     }
89     //别忘了释放
90     free(Light);
91     return 0;
92 }

 

标签:编译,vs2019,开灯,开关,倍数,编号,include,1000
来源: https://www.cnblogs.com/Npc-Hb/p/14196986.html