自动点名系统c语言,用C语言编写一个随机点名系统
/*編寫一個隨機點名系統,運行該系統后,按空格鍵可以顯示出一名同學,以前被選中的同學,將不會再次被選中*/
#include /*standard input & output*/
#include /*standard libary*/
#include /*string*/
#include /*Console Input/Output*/
#include
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;
}
}
總結
以上是生活随笔為你收集整理的自动点名系统c语言,用C语言编写一个随机点名系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php2twig,symfony2 tw
- 下一篇: 网络系统服务器子系统,网管系统中服务器及