有10个学生,每个学生的数据包括学号、姓名、性别,若为男生,还有1500米成绩、标枪成绩、跳高成绩和100米成绩,若为女生,还有800米成绩、立定跳远成绩和100米成绩。从键盘输入10个学生数据,要求输出每个学生的平均成绩(包括学号、姓名、性别,平均成绩)c语言
时间: 2023-11-04 17:56:51 浏览: 101
好的,这是一个计算平均成绩并输出的问题,我们可以用C语言来解决。以下是代码实现:
```c
#include <stdio.h>
#include <string.h>
struct student {
int id;
char name[20];
char gender[5];
union {
struct {
float run1500;
float javelin;
float high_jump;
float run100;
} boy;
struct {
float run800;
float long_jump;
float run100;
} girl;
} score;
} stu[10];
int main() {
int i, j;
float sum;
for (i = 0; i < 10; i++) {
printf("请输入第%d个学生的信息:\n", i+1);
printf("学号:");
scanf("%d", &stu[i].id);
printf("姓名:");
scanf("%s", stu[i].name);
printf("性别:");
scanf("%s", stu[i].gender);
if (strcmp(stu[i].gender, "男") == 0) {
printf("1500米成绩:");
scanf("%f", &stu[i].score.boy.run1500);
printf("标枪成绩:");
scanf("%f", &stu[i].score.boy.javelin);
printf("跳高成绩:");
scanf("%f", &stu[i].score.boy.high_jump);
printf("100米成绩:");
scanf("%f", &stu[i].score.boy.run100);
} else if (strcmp(stu[i].gender, "女") == 0) {
printf("800米成绩:");
scanf("%f", &stu[i].score.girl.run800);
printf("立定跳远成绩:");
scanf("%f", &stu[i].score.girl.long_jump);
printf("100米成绩:");
scanf("%f", &stu[i].score.girl.run100);
}
}
printf("\n每个学生的平均成绩如下:\n");
printf("学号\t姓名\t性别\t平均成绩\n");
for (i = 0; i < 10; i++) {
sum = 0;
printf("%d\t%s\t%s\t", stu[i].id, stu[i].name, stu[i].gender);
if (strcmp(stu[i].gender, "男") == 0) {
sum += stu[i].score.boy.run1500 + stu[i].score.boy.javelin + stu[i].score.boy.high_jump + stu[i].score.boy.run100;
printf("%.2f\n", sum/4);
} else if (strcmp(stu[i].gender, "女") == 0) {
sum += stu[i].score.girl.run800 + stu[i].score.girl.long_jump + stu[i].score.girl.run100;
printf("%.2f\n", sum/3);
}
}
return 0;
}
```
这个程序中,我们使用了结构体和联合体来存储学生数据,通过键盘输入学生信息,并计算每个学生的平均成绩,最后输出每个学生的学号、姓名、性别和平均成绩。注意,我们使用了strcmp函数来判断学生的性别,以便进行不同的成绩计算。
阅读全文