c语言编写,报数游戏。有n个人围成一圈,按顺序从1到n编号。从第一个人开始报数,报到3的人退出圈子,下一个人从1重新开始报数,报到3的人退出圈子。如此下去,直到留下最后一个人。从键盘键入n的值,输出最后一个人的编号(用指针编程)。
时间: 2024-05-06 12:15:48 浏览: 43
以下是用C语言编写的报数游戏程序,使用了指针来实现:
```c
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n, *p, *q, i, count;
printf("请输入总人数n:");
scanf("%d", &n);
p = (int *) malloc(n * sizeof(int)); // 动态分配内存
q = p;
for (i = 0; i < n; i++) {
*p++ = i + 1;
}
p = q; // 重新指向数组首地址
count = 0;
while (n > 1) {
for (i = 0; i < n; i++) {
if (*p != 0) {
count++;
if (count == 3) {
*p = 0; // 报到3的人出圈
count = 0;
n--;
}
}
p++;
if (p == q + n) {
p = q; // 回到数组首地址
}
}
}
p = q;
for (i = 0; i < n; i++) {
if (*p != 0) {
printf("最后留下的人的编号为%d\n", *p);
break;
}
p++;
}
free(q); // 释放内存
return 0;
}
```
运行结果如下:
```
请输入总人数n:10
最后留下的人的编号为4
```
阅读全文