自动点名系统c语言,用C语言编写一个随机点名系统
/*編寫(xiě)一個(gè)隨機(jī)點(diǎn)名系統(tǒng),運(yùn)行該系統(tǒng)后,按空格鍵可以顯示出一名同學(xué),以前被選中的同學(xué),將不會(huì)再次被選中*/
#include /*standard input & output*/
#include /*standard libary*/
#include /*string*/
#include /*Console Input/Output*/
#include
struct studentinfo /*學(xué)生信息的結(jié)構(gòu)體*/
{
char sNo[5]; /*學(xué)生編號(hào)*/
char sxueNo[14];/*學(xué)號(hào)*/
char sname[20];/*學(xué)生的姓名*/
}st[100];
char hash[100] = {0}; /*鏈表的數(shù)組*/
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); /*用來(lái)清空輸入緩存,以便不影響后面輸入的東西*/
gets(filename); /*鍵盤(pán)輸入文件名*/
fp=fopen(filename,"r"); /*open readonly*/
printf("名單如下:\n"); /*顯示所有的學(xué)生信息*/
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);/*打印出來(lái)*/
i++; /*統(tǒng)計(jì)人數(shù)*/
}
}
/*設(shè)置隨機(jī)數(shù)種子*/
srand((unsigned)time(NULL));
/*sizeof(類(lèi)型符)是計(jì)算類(lèi)型所占字節(jié)數(shù),sizeof(int)是int所占字節(jié)數(shù),再
乘以i,得到i個(gè)int型數(shù)據(jù)的總字節(jié)數(shù)。malloc函數(shù)用于動(dòng)態(tài)開(kāi)辟一塊內(nèi)存空間,
參數(shù)為開(kāi)辟的內(nèi)存空間字節(jié)數(shù),返回開(kāi)辟的內(nèi)存空間的首地址指針。*/
a=(int*)malloc(sizeof(int)*i);
memset(a,-1,sizeof(a));/*將已開(kāi)辟內(nèi)存空間a的第4個(gè)字節(jié)設(shè)置為-1*/
printf("按空格鍵點(diǎn)名,其他鍵退出:");
fflush(stdin);
while((ch=getch())== ' ')
/*while (!(ch=getch())==NULL)*/
{
if(flag==i) /*如果flag等于總?cè)藬?shù)*/
{
printf("%s\n","點(diǎn)名結(jié)束");
break;
}
RN=rand()%i; /*產(chǎn)生一個(gè)隨機(jī)數(shù)*/
while(hash[RN]==1)/*判斷有沒(méi)有完成某個(gè)一個(gè)學(xué)生點(diǎn)名*/
RN=rand()%i; /*產(chǎn)生隨機(jī)數(shù)*/
flag++; /*計(jì)數(shù)*/
printf("\n~~~~~\n%s\n%s\n%s\n------------\n",st[RN].sNo,st[RN].sxueNo,st[RN].sname); /*輸出學(xué)生的信息*/
hash[RN]=1;
}
}
總結(jié)
以上是生活随笔為你收集整理的自动点名系统c语言,用C语言编写一个随机点名系统的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: php2twig,symfony2 tw
- 下一篇: php phpass,ass.php ·