还有你这程序...每次只能随机产生1个字母...跟题目有点不对哦.!
for循环里加个printf不就得了?
思想是这样的:
首先从N个数字中产生一个随机数字t,输出对应的字母,将这个字母放到字母数组的末尾,然后从剩下的N-1个数字中再随机产生一个数字,得到相应的字母,这样循环就可以。
可以这样写,如果发现错误(产生了两个相同的字母),请告诉我。
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <conio.h>
#define N 10 /*假设从10个字母中产生*/
#define NUM 5 /*假设产生5个不同的字母*/
void Exchange(char *a,char *b) /*交换两个字符*/
{
int tmp;
tmp=*a;
*a=*b;
*b=tmp;
}
int main()
{
int i=0,j=0;
char Letter[N]="\0",Array[NUM]="\0";
for(i=0;i<N;i++)
Letter[i]=97+i; /*初始化字母数组*/
srand((unsigned)time(NULL));
for(i=0;i<NUM;i++)
{
j=rand()%(10-i);
Array[i]=Letter[j];
Exchange(&Letter[j],&Letter[N-1-i]); /*将用过的字母放到数组末尾*/
}
for(i=0;i<NUM;i++)
printf("%c ",Array[i]);
printf("\n");
system("pause");
return 0;
}