约瑟夫程序//k=j放在循环第一条语句,为什么结果还对呀?!
#include<stdio.h>int main(){ int per[100]= {0}; int num=0,amo=0; int i=0,remain=0,j=0; printf("输入人数:"); scanf("%d",&amo); printf("输入每次数几人:"); scanf("%d",&num); remain=amo; j=0; int k=0; while(remain) { for(i=0; i<num; i++) { k = j; j=(j+1)%amo; while( per[j]>0 )j=(j+1)%amo; } if( remain==1 ) printf("最后留下了%d\n", k+1); else printf("%d was killed.\n",k+1); per[k] = 1; remain--; } return 0;}