用C语言编写一个随机点名系统

来源:互联网 发布:vb中的对象 编辑:程序博客网 时间:2024/05/01 15:01

/*编写一个随机点名系统,运行该系统后,按空格键可以显示出一名同学,以前被选中的同学,将不会再次被选中*/

#include<stdio.h>              /*standard input & output*/#include <stdlib.h> /*standard libary*/#include<string.h> /*string*/#include <conio.h> /*Console Input/Output*/#include <time.h>struct studentinfo /*学生信息的结构体*/{char sNo[5]; /*学生编号*/char sxueNo[14];/*学号*/char sname[20];/*学生的姓名*/}st[100];char hash[100] = {0};     /*链表的数组*/int main(){int i=0,j=0,flag = 0,RN,*a;FILE *fp;char ch,filename[20]={0},line[100]={0};printf("Please input file name:");//fflush(stdin);      /*用来清空输入缓存,以便不影响后面输入的东西*/gets(filename);      /*键盘输入文件名*/fp=fopen(filename,"r");      /*open readonly*/printf("名单如下:\n");                                /*显示所有的学生信息*/while (fgets(line,sizeof(line)-1,fp)){if (line[0]!='\n' && line[0]!=' '){sscanf(line,"%s %s %s\n",st[i].sNo,st[i].sxueNo,st[i].sname);   /*文件输入*/printf("%s\n%s\n%s\n",st[i].sNo,st[i].sxueNo,st[i].sname);/*打印出来*/i++; /*统计人数*/}}/*设置随机数种子*/srand((unsigned)time(NULL));/*sizeof(类型符)是计算类型所占字节数,sizeof(int)是int所占字节数,再乘以i,得到i个int型数据的总字节数。malloc函数用于动态开辟一块内存空间,参数为开辟的内存空间字节数,返回开辟的内存空间的首地址指针。*/a=(int*)malloc(sizeof(int)*i);memset(a,-1,sizeof(a));/*将已开辟内存空间a的第4个字节设置为-1*/printf("按空格键点名,其他键退出:");fflush(stdin);while((ch=getch())== ' ')/*while (!(ch=getch())==NULL)*/{if(flag==i)             /*如果flag等于总人数*/{printf("%s\n","点名结束");break;}RN=rand()%i; /*产生一个随机数*/while(hash[RN]==1)/*判断有没有完成某个一个学生点名*/ RN=rand()%i;        /*产生随机数*/flag++; /*计数*/printf("\n~~~~~\n%s\n%s\n%s\n------------\n",st[RN].sNo,st[RN].sxueNo,st[RN].sname);  /*输出学生的信息*/hash[RN]=1;}}


0 0
原创粉丝点击