C++:趣味编程实现一个小游戏

来源:百度知道 编辑:UC知道 时间:2024/06/01 02:25:17
17个人围成一个圈(编号0~16),从0号开始从1报数,凡报到3的倍数的人离开圈子,然后再数下去,直到剩下最后一个人。显示该人原来的编号。

#include"stdio.h"
#define N 17
void main(){
int a,b,temp,i,j,k,l,m,n;
int num[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17};
int *ptr;
printf("开始元素序号:");
scanf("%d",&a);
printf("报几出列:");
scanf("%d",&b);
ptr=&num[a-1];
for(i=0;i<N;i++){
for(j=0;j<b-1;j++){
if(ptr>&num[N-1-i]){
ptr=num;
}
ptr++;
if(ptr>&num[N-1-i]){
ptr=num;
}
}
temp=*ptr;
m=ptr-&num[0];
n=&num[N-1]-ptr;
for(k=m;k<m+n;k++){
num[k]=num[k+1];
}
num[N-1]=temp;
}
for(l=0;l<N;l++){
printf("%d\t",num[l]);
}
printf("\n");
}