c语言(1)主函数中定义二维数组floatscore[4][3],用来存放四名同学的3门功课(语文、数学、英语)成绩,定义数组intno[4]存放四位同学的学号,定义数组floataverscore[4]存放四名同学的平均成绩并赋初值为0。(2)主函数中使用循环依次输入每位同学的学号,以及每位同学的:语文,数学,英语成绩,并分别存放于数组intno[4]和数组floatscore[4][3]中。(3)编写函数voidaver(float(*p_score)[3],int*p_no,intnum,floatp_averscore[4])实现对每位同学的三门课程的平均分的计算,然后根据平均分值从高到低的原则对四位同学进行排序,最后输出排序后的学生学号、各科成绩及其平均成绩。其中:p_score接收二维数组floatscore[4][3]的地址score;p_no接收数组intno[4]的地址no;num接收学生人数;p_averscore接收数组floataverscore[4]的地址averscore;(4)编写函数voidsearch(floatp_score[][3],intp_no[],floatp_averscore[4])实现对学生按学号进行检索,并输出相应同学的各科成绩、平均成绩及排名,其中:p_score接收二维数组floatscore[4][3]的地址score;p_no接收数组intno[4]的地址no;p_averscore接收数组floataverscore[4]的地址averscore;(5)主函数中调用上述(3)(4)函数,完成题目要求。
时间: 2023-11-16 14:04:46 浏览: 428
C语言用数组来对学生成绩进行处理
```c
#include <stdio.h>
void aver(float (*p_score)[3], int* p_no, int num, float* p_averscore);
void sort(float (*p_score)[3], int* p_no, int num, float* p_averscore);
void search(float (*p_score)[3], int* p_no, float* p_averscore);
int main() {
float score[4][3];
int no[4];
float averscore[4] = {0};
// 输入学号和成绩
for (int i = 0; i < 4; i++) {
printf("请输入第%d位学生的学号:", i + 1);
scanf("%d", &no[i]);
printf("请输入第%d位学生的语文、数学、英语成绩:", i + 1);
scanf("%f %f %f", &score[i][0], &score[i][1], &score[i][2]);
}
// 计算平均分并排序
aver(score, no, 4, averscore);
sort(score, no, 4, averscore);
// 输出排序后的成绩
printf("按平均分从高到低排序后的成绩如下:\n");
for (int i = 0; i < 4; i++) {
printf("学号:%d,语文:%.2f,数学:%.2f,英语:%.2f,平均分:%.2f\n",
no[i], score[i][0], score[i][1], score[i][2], averscore[i]);
}
// 检索学生
search(score, no, averscore);
return 0;
}
// 计算平均分
void aver(float (*p_score)[3], int* p_no, int num, float* p_averscore) {
for (int i = 0; i < num; i++) {
float sum = 0;
for (int j = 0; j < 3; j++) {
sum += p_score[i][j];
}
p_averscore[i] = sum / 3.0f;
}
}
// 按平均分排序
void sort(float (*p_score)[3], int* p_no, int num, float* p_averscore) {
for (int i = 0; i < num - 1; i++) {
for (int j = i + 1; j < num; j++) {
if (p_averscore[i] < p_averscore[j]) {
// 交换平均分
float temp = p_averscore[i];
p_averscore[i] = p_averscore[j];
p_averscore[j] = temp;
// 交换学号
int temp_no = p_no[i];
p_no[i] = p_no[j];
p_no[j] = temp_no;
// 交换成绩
for (int k = 0; k < 3; k++) {
float temp_score = p_score[i][k];
p_score[i][k] = p_score[j][k];
p_score[j][k] = temp_score;
}
}
}
}
}
// 检索学生
void search(float (*p_score)[3], int* p_no, float* p_averscore) {
int search_no;
printf("请输入要检索的学生的学号:");
scanf("%d", &search_no);
// 查找学生
for (int i = 0; i < 4; i++) {
if (p_no[i] == search_no) {
printf("学号:%d,语文:%.2f,数学:%.2f,英语:%.2f,平均分:%.2f,排名:%d\n",
p_no[i], p_score[i][0], p_score[i][1], p_score[i][2], p_averscore[i], i + 1);
return;
}
}
printf("没有找到学号为%d的学生。\n", search_no);
}
```
阅读全文