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

来源:互联网 发布:富士通热敏打印软件 编辑:程序博客网 时间:2024/06/06 03:00

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

提示:用数组完成


#include <stdio.h>  int main() {int a[100];    int num,i,quit_num,k; printf ("please input gamepeople!\n");scanf ("%d",&num);    for(i=0;i<num;i++)          /*数组a存放原始编号*/     {          a[i]=i+1;      }     quit_num=0;     /*定义初始出圈人数*/      i=0;      k=0;          while(quit_num < num-1)      /*当出圈人数小于总人数-1时进入while循环,下面的循环里还会找出最后出圈的*/      {           if(a[i]!=0)    { k++;  if(k==3) { a[i]=0; k=0; quit_num++; }    }   if(i == num-1)   {   i=0;   }   else   {   i++;   } } for(i=0;i<num;i++)    /*输出最后留下来人的编号*/ {if(a[i]!=0){printf ("%d\n",a[i]);} } return 0;}
ps:该源代码主要要注意循环语句的逻辑是否正确。

阅读全文
2 0
原创粉丝点击