#include "stdio.h"
main()
{
int person[100];
int i,j;
int arrayLen; //数组长度
int start, N; //开始位置及报数大小
int deleNum; //出列人所在数组中的下标
int name, M; //输入时,人的信息以及人的总数
printf("请输入圆桌上人的总数: ");
scanf("%d",&arrayLen);
printf("" );
printf("请输入各个人的信息(整数): ");
for(i=0;i<arrayLen;i++)
{
scanf("%d",&name);
person[i]=name;
}
printf("你输入的数据的顺序为: ");
for(i=0;i<arrayLen-1;i++)
printf(" %d ==>",person[i]);
printf("%d",person[arrayLen-1]);
printf("你打算从第几个人开始报数?");
scanf("%d",&start);
start=start-1;
printf("请输入报数为多少时出圈? ");
scanf("%d",&N);
printf("");
M=arrayLen;
printf("程序运行后,出列人的顺序为:" );
for(i=0;i<M;i++) //要打印 M 个人的情况,故做 M 次
{
if(arrayLen==1)
printf("%d",person[0]);//如果是数组只剩一个元素,直接出列
else
{
deleNum=(start+N-1)%arrayLen;//此取模保证循环
printf("%d ==> ",person[deleNum]);
for(j=deleNum;j<arrayLen;j++) //将出列元素后面的各元素前移
person[j]=person[j+1];
start=deleNum;
arrayLen=arrayLen-1; //移动完毕后,数组长度减 1
}
}
评论0
最新资源