本文主要是介绍(C语言)(指针的方式处理)有n个人围成一圈,顺序排号,从第一个人开始报数,凡是报道三的人退出圈子,问最后留下的是原来第几号的那位,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
(指针的方式处理)有n个人围成一圈,顺序排号,从第一个人开始报数,凡是报道三的人退出圈子,问最后留下的是原来第几号的那位
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
void fun(int n) {int m = n;int* p = malloc(n * sizeof(int));for (int i = 0; i < n; ++i) {*(p + i) = i + 1;printf("%d\t", *(p + i));}printf("\n报数:\n");for (int i = 0, k = 1;m > 1; ++i) {if (*(p + i) != 0) {printf("%d\t", k);k += 1;if (k == 4) {k = 1;*(p + i) = 0;m -= 1;}}if (i == n - 1) {printf("\n报到3的退出\n");for (int j = 0; j < n; ++j) {if (*(p + j) != 0) {printf("%d\t", *(p + j));}}printf("\n报数:\n");i = -1;}}for (int i = 0; i < n; ++i) {if (*(p + i) != 0) {printf("\n最后留下的是原来的%d号\n", *(p + i));}}
}
void main() {int n;printf("请输入人数n\n");scanf("%d", &n);fun(n);system("pause");
}
这篇关于(C语言)(指针的方式处理)有n个人围成一圈,顺序排号,从第一个人开始报数,凡是报道三的人退出圈子,问最后留下的是原来第几号的那位的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!