#include
#include
#include
typedef struct Student
{
char name[20];
bool IsRead;
}Student;
int main()
{
int i;
int select;
int mark=1;
//下面中你还可以加入一些学生,记得初始化的IsRead都是false
Student student[]=
{
{"张三",false},
{"李四",false},
{"王五",false},
{"刘六",false},
{"赵七",false}
};
printf("欢迎进入点门系统,以下是全班的花名册:\n");
for (i=0;i
printf("\n");
do
{
printf("请选择:\n1.点名\n2.显示没有点到的学生名字\n3.退出点名系统\n");
scanf("%d",&select);
system("cls");//如果是Linux系统,把cls改成clear。如果是其他系统请把这行注释掉,清频
if(1==select)
{
mark = 1;
while (1)
{
for(i=0;i
if(mark)
{
printf("你已经把全班点了个遍\n");
break;
}
srand(time(NULL));
i = rand()%(sizeof(student)/sizeof(Student));
if(!student[i].IsRead)
{
printf("点名:%s\n",student[i].name);
student[i].IsRead = true;
break;
}
}
}
else if (2==select)
{
for(i=0;i
if(!student[i].IsRead)
printf("%s ",student[i].name);
}
printf("\n");
}
else if(3==select)
{
printf("谢谢使用\n");
return 0;
}
}while(true);
return 0;
}
这可是我一个字一个字的打出来的,专门为你写的!~
//data.txt中内容如下
0001 赵一
0002 钱二
0003 孙三
0004 李四
0005 周五
0006 吴六
0007 郑七
0008 王八
0009 冯九
0010 陈十
0011 楚大
0012 魏二
//运行情况如下
读入数据后这个班有12个学生
请输入抽取学生个数:22
这个班没有这么多学生
请输入抽取学生个数:4
0007 郑七
0012 魏二
0009 冯九
0003 孙三
Press any key to continue
//代码如下
#include
#include
#include
#include
struct Student
{
int stdno;
char name[20];
};
main()
{
int i,j,chou,stucnt=0,tmp,sel[100]={0},flag;
char line[100]="\0",stubuff[100][100];
FILE *fp;
struct Student *st;
fp=fopen("data.txt","r");
while (fgets(line,99,fp)!=NULL)
{
strcpy(stubuff[stucnt++],line);
}
printf("读入数据后这个班有%d个学生\n",stucnt);
srand((unsigned)time(NULL));
do
{
printf("请输入抽取学生个数:");
scanf("%d",&chou);
if (chou>stucnt)
{
printf("这个班没有这么多学生\n");
}
} while(chou>stucnt ||chou<0);
for (i=0;i
flag=0;
tmp=rand()%stucnt+1;
for (j=0;j {
if (sel[j]==tmp)
{
flag=1;
break;
}
}
if (flag==1)
{
i--;
}else
{
sel[i]=tmp;
}
}
for (i=0;i
fflush(stdin);
getchar();
printf("%s",stubuff[sel[i]-1]);
}
}
我帮你看了一下,思路给你缕一下,我不能帮你全写完,希望你能自己完成剩下的,提高自己,不是从看代码中,而是不断尝试
#include
typedef struct student
{
int num;
char name[10];
int sign;//标记学生是否被点名随机到
}Stu;
int random(void);//返回一个随机值,可以设计不重复
int initList();//初始化列表到文件,将学生信息以结构体形式录入 list.txt 并返回节点数目nNum
void main()
{
Stu stu[20];
int nNum;
int nCount;
nNum = initList();
printf("Input Chick nCount:");
scanf("%d",&nCount);
if(nCount > nNum)//如果点名人数超过 全班人数,我啥也不说了
{
printf("teacher ,are you stupid?");
}
else
for(int i = 0;i
if(stu[i].sign == 0)
{
if(stu[i].num == random())
{
printf("%d %s",stu[i].num,stu[i].name);
getchar();//等待输入 回车继续
stu[i].sign = 1;
}
}
}
}
int random()
{
return 0;
}
int initList()
{
return 0;
}