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