有个和序题是这样的:50个学生按1到50序号顺时针围成一个圈,做出局游戏,老师站在最外逆时针从最后一个人数起,每数到5时这人从圈里出来,继续数1,2,3,4,5,数到第5个学生时他就出局,已出局的位置不再参加计数,直至所有的学生出局为止,问最后一个出局的学生序列号是多少? 结果32。 我编了一个程
#include<stdio.h> main() { int i,j,n=0,a[52]; for(i=1;i<=50;i++) a[50-i]=i; a[50]=51; a[51]=52; /*用于检测是否只剩一个人了*/ for(i=0;a[2]!=52;i++) { if(a[i]==51) /*检测是否到了最后一位并跳回*/ i=0; n++; if(n==5) { printf("%d ",a[i]); /*用来查看是否出错,无实义*/ for(j=i;j<51;j++) a[j]=a[j+1]; n=0; } } printf("\n%d\n",a[0]); }
我编的是数到6个就出列没有问题(如程序),可是我把那个改成到第5个出列,就错了。 就是把14行n==5改成n==4;就错得一蹋糊涂。请哪位指教一二。邮箱cxb23@126.com