用c语言编写报数游戏。有n个人围成一圈,按顺序从1到n编号。从第一个人开始报数,报到3的人退出圈子,下一个人从1重新开始报数,报到3的人退出圈子。如此下去,直到留下最后一个人。从键盘键入n的值,输出最后一个人的编号(用指针编程)。
时间: 2024-05-01 07:22:14 浏览: 58
C语言编程-编写函数fun求1!+2!+3!+ …… +n!的和,在main函数中由键盘输入n值,并输出运算结果;
5星 · 资源好评率100%
以下是用C语言编写的报数游戏程序:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int n, m = 3, i, *p, count;
printf("请输入总人数:");
scanf("%d", &n);
p = (int*)malloc(n * sizeof(int));
for (i = 0; i < n; i++) {
*(p + i) = i + 1;
}
i = 0;
count = n;
while (count > 1) {
if (*(p + i) != 0) {
m--;
}
if (m == 0) {
*(p + i) = 0;
m = 3;
count--;
}
i++;
if (i == n) {
i = 0;
}
}
for (i = 0; i < n; i++) {
if (*(p + i) != 0) {
printf("最后一个人的编号为:%d\n", *(p + i));
break;
}
}
free(p);
return 0;
}
```
程序先通过 `malloc` 函数动态分配了一个大小为 `n * sizeof(int)` 的内存空间,用来存储每个人的编号。其中 `p` 是指向这个内存空间的指针。
接着,程序通过 `for` 循环将每个人的编号依次存储在内存空间中。
之后,程序进入一个 `while` 循环,不断对每个人进行报数,并在报到3的人处将其编号置为0,直到只剩下1个人为止。
最后,程序通过 `for` 循环找到剩下的编号不为0的人,并输出其编号,释放内存空间,程序结束。
阅读全文