From cf8cbfd736f322874dbd3e610cb2f0fa7afd9f0b Mon Sep 17 00:00:00 2001 From: Ruby_Facetious_a005 <1621059562@qq.com> Date: Wed, 5 Jun 2024 04:36:20 +0000 Subject: [PATCH 1/3] Junyi Signed-off-by: Ruby_Facetious_a005 <1621059562@qq.com> --- exercises/05_josephus_ring.c | 63 ++++++++++++++++++++++++------------ 1 file changed, 42 insertions(+), 21 deletions(-) diff --git a/exercises/05_josephus_ring.c b/exercises/05_josephus_ring.c index 330f204..ff9703d 100644 --- a/exercises/05_josephus_ring.c +++ b/exercises/05_josephus_ring.c @@ -1,29 +1,50 @@ #include - -/** - * 给定100个人站成一圈,从第1个人开始依次报数。 - * 每数到3的人将会被淘汰,然后继续从下一个人开始报数。 - * 这个过程会一直持续,直到所有的人都被淘汰。 - * 请编写一个C语言程序来模拟这个过程,并且输出每一个被淘汰人的编号。 - * 要求:输出每一个被淘汰人的编号,每淘汰一个人输出一行,格式为:"%d out \n"(每输出一次换行) -*/ +#include #define ALL_NUM 100 #define COUNT_NUM 3 -#define OUT_NUM 3 -/* people id array such as (1,2,3,4,5,6) */ -int people[ALL_NUM]; +// 定义循环链表节点 +struct Node { + int id; + struct Node* next; +}; -int main(void) -{ - int left; /* 剩余人数 */ - int pos; /* 当前报数位置 */ - int step; /* 当前报数 */ +// 创建循环链表 +struct Node* createCircle(int n) { + struct Node* head = NULL; + struct Node* prev = NULL; + for (int i = 1; i <= n; ++i) { + struct Node* newNode = (struct Node*)malloc(sizeof(struct Node)); + newNode->id = i; + if (head == NULL) { + head = newNode; + } else { + prev->next = newNode; + } + prev = newNode; + } + prev->next = head; // 链接成循环 + return head; +} - //TODO - - +// 模拟报数并淘汰 +void josephus(struct Node* head) { + struct Node* current = head; + while (current->next != current) { + for (int i = 1; i < COUNT_NUM; ++i) { + current = current->next; + } + struct Node* eliminated = current->next; + printf("%d out\n", eliminated->id); + current->next = eliminated->next; + free(eliminated); + } + printf("Last person standing: %d\n", current->id); +} - return 0; -} \ No newline at end of file +int main(void) { + struct Node* circle = createCircle(ALL_NUM); + josephus(circle); + return 0; +} -- Gitee From 7027d7699f3fdfcc65e2f3de4f9aca64786ce1ad Mon Sep 17 00:00:00 2001 From: Ruby_Facetious_a005 <1621059562@qq.com> Date: Wed, 5 Jun 2024 04:50:00 +0000 Subject: [PATCH 2/3] Junyi Signed-off-by: Ruby_Facetious_a005 <1621059562@qq.com> --- exercises/01_helloworld.c | 2 +- exercises/02_loop.c | 4 +++- exercises/03_nested_loops.c | 7 ++++++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/exercises/01_helloworld.c b/exercises/01_helloworld.c index e610016..cc920be 100644 --- a/exercises/01_helloworld.c +++ b/exercises/01_helloworld.c @@ -2,7 +2,7 @@ int main(){ - // Print "Hello World!" to the console + printf("Hello, World!\n"); diff --git a/exercises/02_loop.c b/exercises/02_loop.c index 3e361e6..73409d1 100644 --- a/exercises/02_loop.c +++ b/exercises/02_loop.c @@ -7,7 +7,9 @@ int main(void) { - //TODO +for (int i = 1; i <= 10; ++i) { + printf("%d\n", i); + } return 0; } \ No newline at end of file diff --git a/exercises/03_nested_loops.c b/exercises/03_nested_loops.c index d80c690..367eb5b 100644 --- a/exercises/03_nested_loops.c +++ b/exercises/03_nested_loops.c @@ -11,7 +11,12 @@ int main(void) { - //TODO +for (int i = 1; i <= 9; ++i) { + for (int j = 1; j <= i; ++j) { + printf("%d*%d=%d\t", j, i, i * j); + } + printf("\n"); + } return 0; } \ No newline at end of file -- Gitee From 91308871ad9e5ca6ad6400e16dad6d23c3e6b950 Mon Sep 17 00:00:00 2001 From: Ruby_Facetious_a005 <1621059562@qq.com> Date: Wed, 5 Jun 2024 05:13:54 +0000 Subject: [PATCH 3/3] Junyi Signed-off-by: Ruby_Facetious_a005 <1621059562@qq.com> --- exercises/04_prime_number.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/exercises/04_prime_number.c b/exercises/04_prime_number.c index 28e3f5f..77b8428 100644 --- a/exercises/04_prime_number.c +++ b/exercises/04_prime_number.c @@ -10,8 +10,22 @@ int main(void) for (i = 1; i <= 100; i++) { - //TODO - } + int is_prime = 1; // 假设当前数字是素数 + + for (j = 2; j <= sqrt(i); j++) + { + if (i % j == 0) + { + is_prime = 0; // 不是素数 + break; + } + } + + if (is_prime && i > max) + { + max = i; // 更新最大素数 + } + } printf("max = %d\n", max); -- Gitee