考试随机生成座位表

考试随机座位表

           记得期末考试田小远写了一个随机生成代码座位的小代码(JAVA),并且在全院每场考试中使用,给田小远点赞。当时我就在想可不可以用C试试,一直没有付诸行动,,就写一篇关于这的用C试试。。两种不同的思路如下。。。java我就是个渣渣...........

考试随机生成座位表_第1张图片

          问题转化:班级人数以60为例,座位表—即产生60个不重复的随机数。(方案1:直接生成随即数且不重复(去重)。方案2:数按顺序生成,随机对两个数进行交换位置(次数尽可能多))

         方案一:随机生成1到100的数,逐个保存到长度为60的数组中,每次保存时遍历前面已经保存的数,如果出现重复,则舍弃这个随机数,重新生成,再遍历。。直至把数组填满。

#include
#include
#include

//终于意识到这种定义的方便性 
#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

考试随机生成座位表_第2张图片

            方案2:问题等价于随机排列1到100,可以先把1到100用循环语句写进数组;然后进入一个很大的循环(循环次数越多越好),每次循环随机生成两个0到99的数,将这两个数为下标的元素对调,最后得到的就是随机排列的1到100了。因为对调数组的下标是随机生成。

#include
#include
#include
int main(){
	srand((unsigned int)time(NULL));
	int studentNumber,line;
	printf("请输入班级的人数:");scanf("%d",&studentNumber);
	printf("请输入考场列数:");scanf("%d",&line);
	int a[100];
	for(int i=0;i

考试随机生成座位表_第3张图片

       时间原因留需求继续改进:如果说某一场考试几个学生表现不好,那么下一场考试要将他们排在指定位置,也就是说,可以指定位置。要么先指定,再排。要么就是先排好,再进行交换。——————图像化界面(指定)


田小远的Java代码如下:

//初始版本 
package studyDemo;
import java.util.Scanner;
public class run {
    public static void main(String[] args){
    int n;//人数
    int rank;//列数
    int[] num=new int[100];//数组
    Scanner scanf=new Scanner(System.in);
    System.out.println("请输入班级人数");
    n=scanf.nextInt();
    System.out.println("请输入教室列数");
    rank=scanf.nextInt();
    for(int i=0;i

 

 

你可能感兴趣的:(C语言+JAVA+HTML)