1: /*随机分组*/
2: #include<stdio.h>
3: #include<string.h>
4: #include<time.h>
5: #include<stdlib.h>
6: int main()
7: {
8: int nSTUDENT=50,nMEMBER=0;//总人数和每组成员数
9: int i,j;//控制循环
10: int m=0,k;//用来判断是否与前面取到的数有重复
11: int nGROUP;//用来存放一共要分为多少组
12: struct Student{
13: int num;
14: char name[20];
15: char sex[5];
16: char address[20];
17: }student[nSTUDENT];//定义结构体,用来存放所有同学的信息 18: int suijishu[nSTUDENT];//定义数组存放随机后的顺序
19: int suijishu_2[50]={0};//随机时查重
20: int x;//输出时用
21: printf("您一共要对多少个同学进行分组?");
22: scanf("%d",&nSTUDENT);//用户输入要对多少个人进行分组 23: printf("每组多少成员?");
24: scanf("%d",&nMEMBER);//用户输入要分成多少个组
25: for(;;){
26: if(nMEMBER>nSTUDENT){
27: printf("输入有误,请重新输入:");
28: scanf("%d",&nMEMBER);
29: }
30: else break;
31: }//检查输入成员数和每组成员数的错误
32: if(nSTUDENT%nMEMBER==0) nGROUP=nSTUDENT/nMEMBER;
33: else nGROUP=nSTUDENT/nMEMBER+1;
34: srand(time(NULL));
35: for(k=0;k<=nSTUDENT-1;){
36: m=rand()%nSTUDENT+1;
37: if(suijishu_2[m]==0){
38: suijishu[k]=m;
39: suijishu_2[m]=1;
40: k++;
41: }
42: }//随机排序
43: for(i=0;i<=nSTUDENT-1;i++){
44: printf("请输入第%d个同学的信息:(学号 姓名 性别 住址)\n",i+1);
45: scanf("%d%s%s%s",&student[i].num,&student[i].name,&student[i].sex,&student[i].address);
46: }//用户输入每个组员的信息
47: printf("请确认您的信息:\n学号 姓名 性别 住址\n");
48: for(i=0;i<=nSTUDENT-1;i++){
49: printf("%2d %s %s %s\n",student[i].num,student[i].name,student[i].sex,student[i].address);
50: }//打印确认组员信息
51: //printf("请按ENTER继续……");
52: system("pause");
53: system("cls");
54: // for(i=0;i<=nSTUDENT-1;i++){
55: // printf("%d\t",suijishu[i]);
56: // }//打印随机后的顺序
57: printf("根据要求可将所有成员分成%d组,分别是:\n",nGROUP);
58: for(i=0;i<=nGROUP-1;i++){
59: printf("第%d组的成员是:\n",i+1);
60: if(i!=nGROUP-1){
61: for(j=i*nMEMBER;j<=(i+1)*nMEMBER-1;j++){
62: x=suijishu[j]-1;
63: printf("%2d %s %s %s\n",student[x].num,student[x].name,student[x].sex,student[x].address); 64: //printf("%d",suisjishu[j]);
65: }
66: }//输出前nGROUP-1个组员信息
67: else{
68: for(j=i*nMEMBER;j<=nSTUDENT-1;j++){
69: x=suijishu[j]-1;
70: printf("%2d %s %s %s\n",student[x].num,student[x].name,student[x].sex,student[x].address); 71: }
72: }//输出最后一组成员信息
73: }
74: return0;
75: }
76:。