嫒美直播免费版app下载-嫒美直播永久免费版下载-嫒美直播最新下载安装

當(dāng)前位置:首頁 > 資格考試 > 正文

求C語言編寫一個(gè)隨機(jī)點(diǎn)名系統(tǒng)

求程序大佬用C語言寫一個(gè)隨機(jī)點(diǎn)名的程序?

例:

#include<stdio.h>/*standardinput&output*/

#include<stdlib.h>/*standardlibary*/

#include<string.h>/*string*/

#include<conio.h>/*ConsoleInput/Output*/

#include<time.h>

structstudentinfo/*學(xué)生信息的結(jié)構(gòu)體*/

charsNo[5];/*學(xué)生編號(hào)*/

charsxueNo[14];/*學(xué)號(hào)*/

charsname[20];/*學(xué)生的姓名*/

}st[100];

charhash[100]={0};/*鏈表的數(shù)組*/

intmain()

inti=0,j=0,flag=0,RN,*a;

FILE*fp;

charch,filename[20]={0},line[100]={0};

printf("Pleaseinputfilename:");

//fflush(stdin);/*用來清空輸入緩存,以便不影響后面輸入的東西*/

gets(filename);/*鍵盤輸入文件名*/

fp=fopen(filename,"r");/*openreadonly*/

printf("名單如下:\n");/*顯示所有的學(xué)生信息*/

while(fgets(line,sizeof(line)-1,fp))

if(line[0]!='\n'&&line[0]?。剑ВВ?/p>

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++;/*統(tǒng)計(jì)人數(shù)*/

/*設(shè)置隨機(jī)數(shù)種子*/

srand((unsigned)time(NULL));

/*sizeof(類型符)是計(jì)算類型所占字節(jié)數(shù),sizeof(int)是int所占字節(jié)數(shù),再乘以i,得到i個(gè)int型數(shù)據(jù)的總字節(jié)數(shù)。malloc函數(shù)用于動(dòng)態(tài)開辟一塊內(nèi)存空間,參數(shù)為開辟的內(nèi)存空間字節(jié)數(shù),返回開辟的內(nèi)存空間的首地址指針。*/

a=(int*)malloc(sizeof(int)*i);

memset(a,-1,sizeof(a));/*將已開辟內(nèi)存空間a的第4個(gè)字節(jié)設(shè)置為-1*/

printf("按空格鍵點(diǎn)名,其他鍵退出:");

fflush(stdin);

while((ch=getch())=='')

/*while(?。╟h=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)/*判斷有沒有完成某個(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;

擴(kuò)展資料:

printf函數(shù)使用注意事項(xiàng)

1、域?qū)?/p>

%d:按整型數(shù)據(jù)的實(shí)際長(zhǎng)度輸出。

如果想輸出指定寬度可以指定域?qū)?,%md-->m域?qū)?,打印出來以后,在控制臺(tái)上,顯示m位;

如果我們要打印的數(shù)的位數(shù)如果超過我們?cè)O(shè)定m則原樣輸出;

如果我們要打印的數(shù)的位數(shù)如果小于我們?cè)O(shè)定的位數(shù),則補(bǔ)空白,具體如下:

如果m為正數(shù),則左對(duì)齊(左側(cè)補(bǔ)空白);

如果m為負(fù)數(shù),則右對(duì)齊(右側(cè)補(bǔ)空白)。

2、轉(zhuǎn)義字符

如果想輸出字符"%",則應(yīng)該在“格式控制”字符串中用連續(xù)兩個(gè)%表示。

如:printf("%f%%",1.0/3);輸出結(jié)果:0.333333%。

c語言 隨機(jī)點(diǎn)名

#include
#include
#include
#defineSTU_NUM_MAX64//假設(shè)最多有64個(gè)學(xué)生
structStudent
{
charname[10];
intstuID;
}stu[STU_NUM_MAX];
intexist[STU_NUM_MAX];//用以保存被點(diǎn)過名
staticintindex=0;//記住點(diǎn)名的次數(shù)
voidIitialize(){
for(inti=0;i}
boolIsExist(intid){
for(inti=0;i if(exist[i]==id)returntrue;//已存在
returnfalse;//不存在
}
voidAdd()//添加數(shù)據(jù)
{
FILE*fp;
intstu_num;
printf("\t\tYouwanttoinputthenumberofstudent?:");
scanf("%d",&stu_num);
for(inti=0;i printf("\n");
printf("\t\tPleaseinputstudentID:");
scanf("%d",&stu[i].stuID);
printf("\t\tPleaseinputstudentname:");
scanf("%s",stu[i].name);
fflush(stdin);
}
if((fp=fopen("stu.dat","ab"))==NULL) {
printf("Can'topenfile\n");
exit(1);
}
for(intj=0;j {
if(fwrite(&stu[j],sizeof(structStudent),1,fp)!=1)
printf("Errorwritingfile.\n");
}
fclose(fp);
}
voidrollcall()//隨機(jī)點(diǎn)名
{
FILE*fp;
if((fp=fopen("stu.dat","rb"))==NULL)
{
printf("Can'topenfile.\n");
exit(1);
}
srand((unsigned)time(NULL));
inti=0;
intrandID=rand()%(64-1+1)+1;//1~64
printf("\t\t隨機(jī)點(diǎn)到的學(xué)號(hào)為:%d\n\t\t%s\t%s\n",randID,"StuID","StuName");
do
{
fseek(fp,i*sizeof(structStudent),SEEK_SET);
if(fread(&stu[i],sizeof(structStudent),1,fp))
{
if(stu[i].stuID==randID&&!IsExist(randID)){
printf("\t\t%4d\t%5s\n",stu[i].stuID,stu[i].name);
exist[index++]=randID;
break;}
}
i++;
}while(!feof(fp));

fclose(fp);
}
intmain()
{
intselect=0;
charanswer='y';
Iitialize();
do
{
printf("1.添加數(shù)據(jù)2.隨機(jī)點(diǎn)名3.退出\n請(qǐng)選擇:");
fflush(stdin);
scanf("%d",&select);
switch(select)
{
case1:
Add();
break;
case2:
rollcall();
break;
case3:
return0;
}
fflush(stdin);
printf("Youwanttocontinue?:");
scanf("%c",&answer);

}while(answer=='y'||answer=='Y');

return0;
}

上面的代碼,我留下幾個(gè)細(xì)節(jié)問題留給你自己學(xué)著解決,都是很簡(jiǎn)單的:

  1. 上面的代碼,我沒有對(duì)重復(fù)的學(xué)號(hào)作判斷。

  2. 上面的代碼,我沒有把點(diǎn)名存放到另一個(gè)文件,而是用數(shù)組替代(可以實(shí)現(xiàn)的也很簡(jiǎn)單)。我怕寫得代碼太多,百度限制提交。

  3. 上面的代碼,是測(cè)試數(shù)據(jù),stu.dat目標(biāo)文件并沒有64個(gè)學(xué)生,我只寫入了12條數(shù)據(jù)。

  4. 上面的代碼,我沒有對(duì)數(shù)據(jù)數(shù)量(最多64條)作判斷。

課堂隨機(jī)點(diǎn)名系統(tǒng)程序設(shè)計(jì)。

查找:我認(rèn)為,首先把txt文件存在硬盤上,最好在學(xué)生前面編上序號(hào),完了用rand(srand)抽取號(hào)碼。抽取完畢后,用號(hào)碼對(duì)應(yīng)用c語言函數(shù)fscanf查找號(hào)碼所對(duì)應(yīng)的學(xué)生姓名。 刪除和添加可以直接在txt里進(jìn)行。如果非要在程序中的話,用fprintf就可以實(shí)現(xiàn)了。 隨機(jī)點(diǎn)名:從網(wǎng)上下載個(gè)漢語的發(fā)音包,用c調(diào)用即可。 rand(srand)用法: 計(jì)算機(jī)的隨機(jī)數(shù)都是由偽隨機(jī)數(shù),即是由小M多項(xiàng)式序列生成的,其中產(chǎn)生每個(gè)小序列都有一個(gè)初始值,即隨機(jī)種子。(注意: 小M多項(xiàng)式序列的周期是65535,即每次利用一個(gè)隨機(jī)種子生成的隨機(jī)數(shù)的周期是65535,當(dāng)你取得65535個(gè)隨機(jī)數(shù)后它們又重復(fù)出現(xiàn)了。)

用c語言編寫一個(gè)自動(dòng)點(diǎn)名系統(tǒng),具體要求如下一、具體題目: 設(shè)計(jì)一個(gè)供教師上課使用的

#include #include #include #include //---------------data structure---------------- struct student{ char id[30]; char name[30]; int called_times; }; struct node{ struct node *next; struct student student; }; //------------end of data structure---------------- //-

用c語言編一個(gè)上課點(diǎn)名系統(tǒng)

是作業(yè)嗎? 如果不是作業(yè)的話,建議還是別這么麻煩,弄一張表把。 現(xiàn)在外國(guó)都流行用EXCEL抽人,EXCEL(新版本的,好像2010里面有),有一個(gè) 抽樣的類型,能夠從表中隨機(jī)抽出數(shù)據(jù)。。 然后在用VLOOKUP顯示人名就好了。。。 如果是作業(yè)的話。。。用C++,面向?qū)ο?,秒殺?jí)別的作業(yè)。。 新建一個(gè)STUDENT類,然后將學(xué)好和姓名設(shè)置成PUBLIC成員。 然后再新建一個(gè)STUDENT類數(shù)組,然后讀入文件即可。。。關(guān)鍵還是在于TXT文件格式怎么分割的問題。。其實(shí)也不難,CSTRING里面有很豐富的成員方法,用一些來拼接就好。 最后再找在VC的庫里面找一個(gè)隨機(jī)函數(shù),或者自己寫一個(gè)也行。。。 秒殺
展開全文閱讀