随机不重复

程序已经写了,实现了随机不重复的功能,但是没有添加音乐播放的功能,过几天我看了《unix 环境高级编程》之后再完善音乐播放的部分,额,漏掉了最重要的部分。这部分程序只是实现了算法。
#include "stdlib.h"
#include "stdio.h"
#define M 255
/*算法已经设计好,支持连续输入,首先输入你想添加的歌曲数目,为了简单起见,我把添加的歌曲数目用n表示,
一下n行输入歌曲名称,接下来n行输出歌曲名称,不得超过254个字符。
样例输入输出如下 
输入:
10
1
2
3
4
5
6
7
8
9
10

输出:
播放顺序如下
播放8
接下来播放3
接下来播放5
接下来播放6
接下来播放7
接下来播放1
接下来播放10
接下来播放2
接下来播放4
接下来播放9
随机播放已经播放完,欢迎下次再来


*/

struct Node 
{
	int a;    /* a 计数*/
	int b;    /* b 表示是否已经播放*/
	char s[M];/* s用来存放歌曲名称*/
};


int main()
{
	struct Node T[255];
	int i, n, m, count, c, flag;

	while ( scanf("%d", &n) && n )
	{
		for ( i=0; i<n; i++ )
		{
			T[i].a = i;
			T[i].b = 1;
			scanf("%s", T[i].s);
		}

		c = n;
		flag = 0;
		printf("播放顺序如下\n");
		while( c )
		{
			m = rand() % c;
			count = 0;
			for ( i=0; i<n; i++ )
			{
				if( T[i].b ) 
				{
					if( m == count )
					{
						if ( flag ) printf("接下来");
						printf("播放 %s。\n", T[i].s);
						T[i].b = 0; flag = 1;
					}
					count++;
				}
			}
			c--;
			
		}
		printf("随机播放已经播放完,欢迎下次再来\n");
	}
	return 0;
}

你可能感兴趣的:(随机不重复)