代码如下:
#include <stdio.h>
#include <stdlib.h>
struct student {
char stuNum[20]; //学生学号
char stuName[20]; //学生姓名
int stuscore[3]; //学生3门课成绩
};
int main() {
int i, j;
student stu[10];
//为了简单,此处只输入前3个学生的数据。如果要输入10个学生数据,把for中3改成10即可
for(i = 0; i < 3; i++) {
printf("请输入第%d个学生学号:", i + 1);
scanf("%s", stu[i].stuNum);
printf("请输入第%d个学生姓名:", i + 1);
scanf("%s", stu[i].stuName);
printf("请输入第%d个学生的三门课程成绩:", i + 1);
for(j = 0; j < 3; j++)
scanf("%d", &stu[i].stuscore[j]);
printf("\n");
}
//输出,此处同样为了简略只输出3个。可以自己改成1个哦
printf("前3个学生3门课成绩如下:\n");
for(i = 0; i < 3; i++) {
printf("第%d个学生3门课成绩为:", i + 1);
printf("%4d%4d%4d\n", stu[i].stuscore[0], stu[i].stuscore[1], stu[i].stuscore[2]);
}
}
截图如下:
追问如果要计算平均值呢,而且输出要按照平均值从大到小输出怎么办?
追答#include
#include
#include
struct student {
char stuNum[20]; //学生学号
char stuName[20]; //学生姓名
float stuscore[3]; //学生3门课成绩
float aveScore; //平均成绩
};
//插入排序
void insertSort(student stu[], int N) {
int j, p;
student temp;
for(p = 1; p 0 && stu[j - 1].aveScore > temp.aveScore; j--)
stu[j] = stu[j - 1];
stu[j] = temp;
}
}
int main() {
int i, j;
student stu[10];
//为了简单,此处只输入前5个学生的数据。如果要输入10个学生数据,把for中5改成10即可
for(i = 0; i = 0; i--) {
printf("%s\t%3f\n", stu[i].stuNum, stu[i].aveScore);
}
}