exam10-3.cpp

来自「很好的C程序设计教程」· C++ 代码 · 共 38 行

CPP
38
字号
/*文件名:exam10_3.cpp*/
#include <stdio.h>
#define N 10
main()
{
	int s,m,n=10,i,pre,k,count;
	struct child 
	{
		char name[10];
		int nextp;
	} link[N]={"Ch1",1,"Ch2",2,"Ch3",3,"Ch4",4,"Ch5",
		5,"Ch6",6,"Ch7",7,"Ch8",8,"Ch9",9,"Ch10",0};  /*存放初始数据*/
	printf("s,m:");
	scanf("%d%d",&s,&m);
	k=s-1;							/*k为第s个小孩对应的下标*/
	count=0;
	if (k==0)    					/*pre:下标为k的小孩的前一个小孩的下标*/
		pre=N-1;
	else
		pre=k-1;
	printf("出列顺序:");
	while (count!=n) 
	{
		printf("%s ",link[k].name);     /*下标为k的小孩出列*/
		link[pre].nextp=link[k].nextp;	/*将其从队列中删除k*/
		k=link[k].nextp;
		count++;                        	/*出列数增1*/
		i=1;
		while (i!=m)					/*报数直到第m个小孩*/
		{
			pre=k;
			k=link[k].nextp;
			i++;
		}							/*循环结束,k为报数到的第m个小孩的下标*/
	}
	printf("\n");
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?