1. 程式人生 > 實用技巧 >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 return 0; 90 }