7-352 求一圈中留下的最后一个人分数 30作者 蔡尚真单位 绍兴文理学院元培学院有nn=50个人围成一圈从1开始顺序排号从第1个人开始报数从1报到mm=50凡是报到m的人退出圈子问最后留下的是原来第几序号的人要求如下。1用函数实现报数并退出。2n和m的值由main函数输入并通过实参传送给该函数最后结果由main函数输出。3要求使用指针。输入格式测试数据有多组处理到文件尾。每组测试数据在同一行上
#include <stdio.h> void count_off(int *people, int n, int m) { int count = 0; int *p = people; int *q = people + n - 1; while (p != q) { if (*p != 0) { count++; if (count == m) { *p = 0; count = 0; } } p++; if (p == people + n) { p = people; } } }
int main() { int n, m; while (scanf("%d %d", &n, &m) != EOF) { int people[50]; for (int i = 0; i < n; i++) { people[i] = i + 1; } count_off(people, n, m); for (int i = 0; i < n; i++) { if (people[i] != 0) { printf("%d\n", people[i]); break; } } } return 0;
原文地址: http://www.cveoy.top/t/topic/h0ow 著作权归作者所有。请勿转载和采集!