该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
#include
#include
#include
#defineMAXSTUDENT100
charName[MAXSTUDENT][16];
//读文件内保存的学生姓名
intreadName(constchar*fileName)
{
intpos,slen;
FILE*fp=fopen(fileName,"r");
if(fp==NULL)return0;
memset(Name,0,sizeof(Name));
pos=0;
while(!feof(fp)&&pos
{
fgets(Name[pos],16,fp);
slen=strlen(Name[pos]);
if(slen>0)
{
slen--;
while(Name[pos][slen]==10||Name[pos][slen]==13)Name[pos][slen--]=0;//去掉字符串后的换行符
pos++;
}
}
printf("读入%d人姓名\n",pos);
fclose(fp);
returnpos;
}
voidmain()
{
charfileName[32];
intn,pos,loop;
charflag[100];
srand(time(NULL));
printf("请输入学生姓名文件名:");
scanf("%s",fileName);
n=readName(fileName);
if(n==0)
{
printf("读取错误,请确认文件%s是否名是否正确,文件的格式是否正确!\n",fileName);
return;
}
getchar();
memset(flag,0,sizeof(flag));
while(1)
{
pos=rand()%n;
loop=0;
while(flag[pos])//可以保证每个人都点到一次
{
if(++loop>n)memset(flag,0,sizeof(flag));
pos=rand()%n;
}
flag[pos]=1;
printf("点%s",Name[pos]);
if(getchar()!=10)break;
}
}