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

1 #include

2 #include

3 //开灯问题

4 //总共有n盏灯,编号为1~n,k个人

5 //第一个人摁下所有灯的开关

6 //第二个人摁下所有编号为2的倍数的开关

7 //第三个人摁下所有编号为3的倍数的开关

8 //......

9 //传入k

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值