c语言 随机点名

Python016

c语言 随机点名,第1张

“为了公平起见,我们决定做一个随机点名小程序”不是说你们决定做一个小程序吗?为什么不自己做呀?没有必要一个班的学生都没有能力编写一个这种简单程序吧

百度知道并不是一个提交结果的平台,所谓知道就是将知识贡献,让大家获得启发,不是给人当奴隶干活!

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <time.h>

#define MAXSTUDENT 100

char Name[MAXSTUDENT][16]

// 读文件内保存的学生姓名

int readName(const char * fileName)

{

int pos, slen

FILE *fp = fopen(fileName, "r")

if(fp == NULL) return 0

memset(Name, 0, sizeof(Name))

pos = 0

while(!feof(fp) && pos < MAXSTUDENT)

{

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)

return pos

}

void main()

{

char fileName[32]

int  n, pos, loop

char flag[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

}

}