C语言在主函数中分别输入一般的十名学生和二班的12名学生某门功课成绩分别调用这两个函数求出两个班级的该门功课成绩最高分和最高分学生的学号并输出同时将两个班级学生的成绩从高成绩并分别输出
时间: 2023-12-16 10:05:49 浏览: 93
好的,您的问题是关于C语言的。我可以回答您的问题。
首先,您需要编写两个函数,一个用于计算一般班级的最高分和最高分学生的学号,另一个用于计算二班的最高分和最高分学生的学号。以下是代码示例:
```c
#include <stdio.h>
void find_max_score(int scores[], int size, int *max_score, int *max_student_id) {
*max_score = scores[0];
*max_student_id = 1;
for (int i = 1; i < size; i++) {
if (scores[i] > *max_score) {
*max_score = scores[i];
*max_student_id = i + 1;
}
}
}
int main() {
int general_scores[10], class2_scores[12];
printf("请输入一般班级的十名学生的成绩:\n");
for (int i = 0; i < 10; i++) {
scanf("%d", &general_scores[i]);
}
printf("请输入二班的十二名学生的成绩:\n");
for (int i = 0; i < 12; i++) {
scanf("%d", &class2_scores[i]);
}
int general_max_score, general_max_student_id;
find_max_score(general_scores, 10, &general_max_score, &general_max_student_id);
printf("一般班级的该门功课成绩最高分为:%d,学生学号为:%d\n", general_max_score, general_max_student_id);
int class2_max_score, class2_max_student_id;
find_max_score(class2_scores, 12, &class2_max_score, &class2_max_student_id);
printf("二班的该门功课成绩最高分为:%d,学生学号为:%d\n", class2_max_score, class2_max_student_id);
// 对成绩排序并输出
int all_scores[22];
for (int i = 0; i < 10; i++) {
all_scores[i] = general_scores[i];
}
for (int i = 0; i < 12; i++) {
all_scores[i + 10] = class2_scores[i];
}
for (int i = 0; i < 21; i++) {
for (int j = i + 1; j < 22; j++) {
if (all_scores[i] < all_scores[j]) {
int temp = all_scores[i];
all_scores[i] = all_scores[j];
all_scores[j] = temp;
}
}
}
printf("所有学生的成绩从高到低依次为:\n");
for (int i = 0; i < 22; i++) {
printf("%d ", all_scores[i]);
}
printf("\n");
return 0;
}
```
请注意,这只是一个简单的示例代码,并且没有进行错误处理。您可以根据您的需要进行修改和优化。
阅读全文