座位表(自动生成各考室座位表模板)
- 格式:xls
- 大小:79.50 KB
- 文档页数:2
考试随机生成座位表记得期末考试田小远写了一个随机生成代码座位的小代码(JAVA),并且在全院每场考试中使用,给田小远点赞。
当时我就在想可不可以用C试试,一直没有付诸行动,,就写一篇关于这的用C试试。
两种不同的思路如下。
java我就是个渣渣...........问题转化:班级人数以60为例,座位表—即产生60个不重复的随机数。
(方案1:直接生成随即数且不重复(去重)。
方案2:数按顺序生成,随机对两个数进行交换位置(次数尽可能多))方案一:随机生成1到100的数,逐个保存到长度为60的数组中,每次保存时遍历前面已经保存的数,如果出现重复,则舍弃这个随机数,重新生成,再遍历。
直至把数组填满。
#include<stdio.h>#include<time.h>#include<stdlib.h>//终于意识到这种定义的方便性#define M 60 // 班级总人数#define line 6 //每一排坐几个人//随机数生成函数int randomNumber(){return rand()%M+1;}int main(){srand((unsigned)time(NULL));//生成随机数的种子int a[M]={NULL};//初始化数组int n=0;while(n<M){int m=randomNumber();bool flag=0;for(int j=0;j<n+1;j++){if(a[j]==m){flag=1;//如果之前保存的数中出现了和m相同的数,就把flag标记为1并跳出循环,表示需要重新生成随机数mbreak;}}if(flag==0){a[n]=m;//如果flag是0,表示前n个数中没有和m相同的数,因此可以把第n+1个元素赋值为mn++;}}for(int k=0;k<M;k++){//输出数组printf("%5d ",a[k]);if((k+1)%5==0){printf("\n");}}printf("\n对数组进行排序,检验数组是否正确!\n\n");for(int i=0;i<M;i++){//下面双重循环是一个快速实现的排序代码,用来检验之前生成的数组是否符合要求for(int j=0;j<M;j++){if(a[i]<a[j]){int temp;temp=a[i];a[i]=a[j];a[j]=temp;}}}for(int k=0;k<M;k++){//输出数组printf("%5d ",a[k]);if((k+1)%5==0){printf("\n");}}return 0;}方案2:问题等价于随机排列1到100,可以先把1到100用循环语句写进数组;然后进入一个很大的循环(循环次数越多越好),每次循环随机生成两个0到99的数,将这两个数为下标的元素对调,最后得到的就是随机排列的1到100了。
教室考试座位安排表说明:1.本表按教室容量由小到大排列。
新校54(36)代表教学楼54座位教室(可安排36人考试)。
2. 表内数字为考生座位序号。
排考时,总原则是任课教师要把考生间隔开(除语音室),此安排表供参考。
3.阶梯教室原则上不作为考场。
目录新校54(36)座教室座位表2B202走走道道新校57(38)座教室座位表2A407走走道道新校57(38)座教室座位表3B106走走道道新校60(36)座教室座位表1A205、212、312、412、512; 2A105、405、505、507;3A405、407、505、507走走道道2B106、204、302、304、402、404、502、504 ;3B202、204、302、304、402、404、502、504 窗讲台门走走道道1A105、201、301、303、401、403、501、503;2A103;3A103、203、205、301、303、305、401、501走走道道3B101、3B103走走道道2A101、201、203、205、301、303、305、401、501;3A101、201走走道道3C103、3C105走走道道新校129(75)座教室座位表3B105窗讲台门走走道道2B203、305;3B105、201、203、205、301、303、305、401、403、405、501、503、505;窗讲台门走走道道2B101、103、105、201、205、301、303、401、403、405、501、503、505走走道道新校138(69)座教室座位表(阶梯教室1)2A104、204、304、404、504 ,3A104、204、304、404、504走走道道1A102、202、302、402、502,2A102、202、302、402、502,3A102、202、302、402、502窗讲台门走走道道3D106、107、108、109、206、207、208、209窗门走走道道商船学院楼G103,105,107,109,111;A103,105,107,109,111,112,117,119,124走走道道语音室126,224走走道道语音室215,217走走道道语音室128,226走走走道道道交运115走走道道信息学院楼55(35)信息323,327,329,350,352走走道道信息244,246走走道道信息229走走道道经管学院楼55(35)经管304,305,306,307,308,309走走道道经管学院楼94(56)经管105,106,107,108走走道道- 21 -- 21 - 海洋学院楼124(76)海洋109走 走 道 道。