第一题:运行结果如下:
代码:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
typedef struct _student
{
int id; //学号
char sex; //性别:M/F
int height; //身高
int grade; //班级
int math; //数学
int eng; //英语成绩
int phy; //物理成绩
}Student;
//输入学生数据
Student* input(int n)
{
int i = 0;
Student* stu = (Student*)malloc(sizeof(Student) * n);
for (i = 0; i < n; i++)
{
printf("请输入第%d个学生的学号:", i + 1); scanf("%d", &stu[i].id); getchar();//吸收回车符
printf("请输入第%d个学生的性别:", i + 1); scanf("%c", &stu[i].sex);
printf("请输入第%d个学生的身高:", i + 1); scanf("%d", &stu[i].height);
printf("请输入第%d个学生的班级:", i + 1); scanf("%d", &stu[i].grade);
printf("请输入第%d个学生的数学成绩:", i + 1); scanf("%d", &stu[i].math);
printf("请输入第%d个学生的英语成绩:", i + 1); scanf("%d", &stu[i].eng);
printf("请输入第%d个学生的物理成绩:", i + 1); scanf("%d", &stu[i].phy);
}
return stu;
}
//统计男生、女生的个数
void Caculate(Student* stu, int n)
{
int i;
int nmbMale = 0, nmbFml = 0; //男生和女生的数量
for (i = 0; i < n; i++)
{
if (stu[i].sex == 'F')
nmbFml++;
else if (stu[i].sex == 'M')
nmbMale++;
}
printf("男生%d人,女生%d人\n", nmbMale, nmbFml);
}
//计算平均身高
void averageHeight(Student* stu, int n)
{
float s = 0;
int i;
for (i = 0; i < n; i++)
s += stu[i].height;
s = s / n;
printf("平均身高:%.2f\n",s); //保留2位小数
}
//统计每门课的平均成绩
void averageScore(Student* stu, int n)
{
float math = 0, eng = 0, phy = 0;
int i;
for (i = 0; i < n; i++)
{
math += stu[i].math;
eng += stu[i].eng;
phy += stu[i].phy;
}
math /= n;
eng /= n;
phy /= n;
printf("数学平均成绩:%.2f\n", math);
printf("英语平均成绩:%.2f\n", eng);
printf("物理平均成绩:%.2f\n", phy);
}
//3门课总分最高且单门成绩大于60的学生
void maxScore(Student* stu, int n)
{
int i, maxIndex = 0, t, maxscore = 0;
for (i = 0; i < n; i++)
{
t = stu[i].math + stu[i].eng + stu[i].phy;
if (t > maxscore && stu[i].math > 60 && stu[i].eng > 60 && stu[i].phy > 60)
{
maxIndex = i;
maxscore = t;
}
}
printf("3门课总分最高且单门成绩大于60的学生:\n");
printf("学号:%d,性别:%c,身高:%d,班级:%d,数学:%d,英语:%d,物理:%d\n", stu[maxIndex].id, stu[maxIndex].sex, stu[maxIndex].height, stu[maxIndex].grade,stu[maxIndex].math, stu[maxIndex].eng, stu[maxIndex].phy);
}
int main()
{
Student* stu = 0;
int n;
printf("请输入学生个数:");
scanf("%d", &n);
stu = input(n); //输入学生信息
Caculate(stu, n); //计算男生个数和女生个数
averageHeight(stu, n); //计算平均身高
averageScore(stu, n); //统计每门课的平均成绩
maxScore(stu, n); //3门课总分最高且单门成绩大于60的学生
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!