7

您所在的位置:网站首页 宴会桌次及座位安排规则 7

7

2024-06-07 20:38| 来源: 网络整理| 查看: 265

在某次上机考试时,座位安排规则如下:

先按考生姓名的字典序排列,若姓名相同则再按学号升序排序;在排好序之后依次从1号机位开始安排座位;若某个机位的电脑损坏了,则原来安排在该位置上的考生从当前最后一位考生之后的机位开始重新安排。

请根据输入的学生信息及电脑损坏的机位,安排好该次考试的学生座位。

输入格式:

首先输入一个正整数T,表示测试数据的组数。对于每组测试数据,首先输入一个整数n(1No); } else{ return strcmp(((struct MyStruct*)p1)->name,((struct MyStruct*)p2)->name); } } int cmprank(const void* p1, const void* p2) { return ((struct MyStruct*)p1)->rank- ((struct MyStruct*)p2)->rank; } int main() { int n; int count=1; scanf("%d", &n); while (n--) { int m; scanf("%d", &m); int t = m; struct MyStruct arr[m]; printf("Case %d:\n",count++); for (int i = 0; i < m; i++) { scanf("%s%s", arr[i].No, arr[i].name); // printf("%s %s\n", arr[i].No, arr[i].name); } int num; scanf("%d", &num); int arr_num[num]; for (int i = 0; i < num; i++) { scanf("%d", &arr_num[i]); } qsort(arr, m, sizeof(arr[0]), cmpstr); //for (int i = 0; i < m; i++) //{ // //scanf("%s %s", arr[i].No, arr[i].name); // //printf("%s %s\n", arr[i].No, arr[i].name); //} for (int i = 0; i < m; i++) { int flag = 0; int rank = i + 1; for (int j = 0; j < num; j++) { if (rank == arr_num[j]) { flag = 1; break; } } if (flag == 0) { arr[i].rank = rank; } else { arr[i].rank = ++t; } } qsort(arr, m, sizeof(arr[0]), cmprank); for (int i = 0; i < m; i++) { //scanf("%s %s", arr[i].No, arr[i].name); if(i==m-1 && n==0) { printf("%03d:%s %s", arr[i].rank, arr[i].No, arr[i].name); } else { printf("%03d:%s %s\n", arr[i].rank, arr[i].No, arr[i].name); } } if(n!=0) { printf("\n"); } } }

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3