2.有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后最后留下的是原来第几号的那位.

xiaoxiao2021-02-28  91

#include <stdio.h> int left_person(int *str,int length) {         int persons = 0, i;         for(i = 0; i < length; i++)         {                 if(0 == str[i])                 {                         persons++;                 }         }         return persons; } int main() {         int person , flag[1000] = {0};         int k = 0, num, i = 0;         printf("Please input a number:");         scanf("%d",&num);         person = num;         while(1 != person)         {                 if (0 == flag[i])                 {                         k++;                 }                 if( 3 == k)                 {                         flag[i] = 1;                         k = 0;                 }                 i++;                 if(num == i)                 {                         i = 0;                 }                 person = left_person(flag,num);         }         for(i = 0;i < num; i++)         {                 if(0 == flag[i])                 {                         printf("the last person is %d\n",i + 1);                         break;                 }         }         return 0; }
转载请注明原文地址: https://www.6miu.com/read-68100.html

最新回复(0)