#include #include #define size 4 int main() { //前面需要输入学生信息的函数,此处我就瞎定义几个为了方便测试 //int sum(); void sequence(); int count(); struct Student { int class;//[size]; int number, score; int ans; int score1, score2, all_score;//三门成绩分别为score,score1,score2,all_score为了求和 }Student[size + 1], temp; Student[0].class = 11; Student[1].class = 11; Student[2].class = 12; Student[0].number = 10001; Student[1].number = 10002; Student[2].number = 10004; Student[0].score = 90; Student[0].score1 = 90; Student[0].score2 = 90; Student[1].score = 83; Student[1].score1 = 84; Student[1].score2 = 85; Student[2].score = 83; Student[2].score1 = 70; Student[2].score2 = 90; int size1; size1 = count(Student[size-1].number); //输入的部分替换为输入函数 /*scanf("%d%d%d%d", &class[0], &class[1], &class[2], &class[3]); scanf("%d%d%d%d", &number[0], &number[1], &number[2], &number[3]); scanf("%d%d", &all_score[0], &all_score[1]);*/ printf("please enter the information:"); //上面是我写的输入,下面是插入函数的部分 scanf_s("%d", &Student[size - 1].class); scanf_s("%d", &Student[size - 1].number); int c = Student[size - 1].number;//记住学生学号 //scanf_s("%d", &Student[size-1].class); scanf_s("%d%d%d", &Student[size - 1].score, &Student[size - 1].score1, &Student[size - 1].score2); //&Student[size - 1].all_score);//输入学生信息 /*for (int count1 = 0; count1 < size; count1++) { printf("%d %d %d %d %d", Student[count1].class, Student[count1].number, Student[count1].score, Student[count1].score1, Student[count1].score2); if (c == Student[count1].number)//显示插入的学生 { printf(" inserted"); } printf("\n"); }*/ //根据班级排序 int count2 = 0, count3 = 0; for (count2 = 0; count2 < size; count2++) { for (count3 = count2 + 1; count3 < size; count3++) { if (Student[count2].class > Student[count3].class ) { temp = Student[count2]; Student[count2] = Student[count3]; Student[count3] = temp; } } } for (int count4 = 0; count4 < size; count4++) { Student[count4].all_score = Student[count4].score+Student[count4].score1 + Student[count4].score2; } //同班根据成绩排序 count2=0, count3=0; for (count2 = 0; count2 < size; count2++) { for (count3 = count2 + 1; count3 < size; count3++) { if (Student[count2].class == Student[count3].class && Student[count2].all_score < Student[count3].all_score) { temp = Student[count2]; Student[count2] = Student[count3]; Student[count3] = temp; } } } for (int count1 = 0; count1 < size; count1++) { printf("%d %d %d %d %d", Student[count1].class, Student[count1].number, Student[count1].score, Student[count1].score1, Student[count1].score2); if (c == Student[count1].number)//显示插入的学生 { printf(" inserted"); } printf("\n"); } return 0; } //排序函数 void sequence(int arr[size]) { int temp; for (int count1 = 1; count1 <= size; count1++) { for (int count2 = 1; count2 <= size - count1; count2++) { if (arr[count2 - 1] > arr[count2]) { temp = arr[count2]; arr[count2] = arr[count2 + 1]; arr[count2 + 1] = temp; } } } } //求和函数 int sum(int x, int y, int z) { int ans; ans = x + y + z; return ans; } //为了定义数组的长度,所以写了一个检测的函数,即把size改为size1+1 //size1是数组真实的长度 //size是我为了方便定义的全局变量 int count(int arr[]) { int len; len = sizeof(arr) / sizeof(arr[0]); return len; } /* //交换函数 void change(int number1,int number2,int real_change1,int real_change2) { int temp; if (number1 > number2) { temp = real_change1; real_change1 = real_change2; real_change2 = temp; } } */