问题描述:有n个人围成一圈,顺序排号。现从第i个人开始,由1至k不断报数,凡报到k的人出列。重复报数过程,直到所有人都出列为止。请编写程序模拟这n个人出列的顺序。
思路:将n个人排列在数组中,将位置序号1~n存放到对应数据元素中a[0~n-1],因此第i个人在数组a[i-1]的位置上;从指定的第i个人(a[i-1])开始从1到k循环报数,只要没有退出就参与报数,直到有人报到k,输出存放的位置,将数组元素置为0表示已退出,退出人数加1;从下一没退出的人重新开始报数;当超过数组末尾时,i置为0从数组头开始再循环报数,直至退出人数达到总人数减1,不再报数;从头遍历数组找到没有被退出的元素,输出存放位置。
代码:
#includeint main(){ int i,k,m,n,num[50],k1; scanf("%d %d %d",&n,&k,&i); //n表示参与报数的总人数;k表示一次报数的值;i表示从第几个人开始报数; for(int j=0;j 思路表述欠佳,但是程序总体是可行的,希望大家多提宝贵的建议。



