用C语言编写程序 有10个学生,每个学生的数据包括学号,姓名,三门课的成绩(要求用结构体来定义学生的数据),从键盘输入10个学生的数据,要求打印出三门课总平均成绩,以及平均成绩最高分的学生的数据
时间: 2023-03-09 08:05:49 浏览: 143
首先,需要声明结构体:struct Student {int num; char name[20]; float score[3];}; 然后,循环输入10个学生的数据,分别存入结构体:for(int i=0;i<10;i++){scanf("%d%s%f%f%f",&stu[i].num,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);}接着,计算三门课总平均成绩:float sum=0; for(int i=0;i<10;i++){sum+=stu[i].score[0]+stu[i].score[1]+stu[i].score[2];} float avg=sum/30;最后,找出三门课平均成绩最高的学生:float max=stu[0].score[0]+stu[0].score[1]+stu[0].score[2]; int k=0; for(int i=1;i<10;i++){if(stu[i].score[0]+stu[i].score[1]+stu[i].score[2]>max){max=stu[i].score[0]+stu[i].score[1]+stu[i].score[2];k=i;}} printf("三门课总平均成绩为:%f
最高平均成绩的学生是:%d %s",avg,stu[k].num,stu[k].name);
相关问题
五名学生每名学生数据包括学号姓名三门课成绩求学生三门课的平均值并按平均值排序用c语言
好的,以下是用 C 语言实现的代码,您可以参考一下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义学生结构体
typedef struct {
char id[10]; // 学号
char name[20]; // 姓名
float score[3]; // 三门课成绩
float avg_score; // 平均分
} Student;
// 计算学生平均分
float get_avg_score(Student *student) {
float sum = 0;
for (int i = 0; i < 3; i++) {
sum += student->score[i];
}
return sum / 3;
}
// 按平均分排序
void sort_students(Student students[], int n) {
for (int i = 0; i < n; i++) {
students[i].avg_score = get_avg_score(&students[i]);
}
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (students[j].avg_score < students[j + 1].avg_score) {
Student temp = students[j];
students[j] = students[j + 1];
students[j + 1] = temp;
}
}
}
}
int main() {
Student students[5] = {
{"001", "张三", {85, 92, 88}, 0},
{"002", "李四", {90, 86, 92}, 0},
{"003", "王五", {80, 78, 85}, 0},
{"004", "赵六", {92, 90, 95}, 0},
{"005", "钱七", {88, 82, 90}, 0}
};
int n = 5;
sort_students(students, n);
for (int i = 0; i < n; i++) {
printf("%s %s %.2f\n", students[i].name, students[i].id, students[i].avg_score);
}
return 0;
}
```
输出结果与 Python 版本一样:
```
赵六 004 92.33
李四 002 89.33
张三 001 88.33
钱七 005 86.67
王五 003 81.00
```
希望这个例子能够帮到您!
用c语言输入n个学生学号姓名三门课成绩总成绩大于180的输出其成绩
好的,我理解了你的问题。你可以使用以下的C语言代码来实现你的需求:
```c
#include <stdio.h>
struct Student {
char name[20];
int id;
int score1;
int score2;
int score3;
int total;
};
int main() {
int n;
printf("请输入学生数量:");
scanf("%d", &n);
struct Student students[n];
// 输入学生信息
for (int i = 0; i < n; i++) {
printf("请输入学生%d的学号:", i + 1);
scanf("%d", &students[i].id);
printf("请输入学生%d的姓名:", i + 1);
scanf("%s", students[i].name);
printf("请输入学生%d的三门课成绩:", i + 1);
scanf("%d %d %d", &students[i].score1, &students[i].score2, &students[i].score3);
students[i].total = students[i].score1 + students[i].score2 + students[i].score3;
}
// 输出总成绩大于180的学生的成绩
printf("总成绩大于180的学生的成绩如下:\n");
for (int i = 0; i < n; i++) {
if (students[i].total > 180) {
printf("%s %d %d %d %d\n", students[i].name, students[i].id, students[i].score1, students[i].score2, students[i].score3);
}
}
return 0;
}
```
以上代码中,我们使用了一个结构体 `Student` 来表示学生,包含了学号、姓名、三门课的成绩和总成绩。我们先输入学生的信息,再遍历所有学生,输出总成绩大于180的学生的成绩。
希望这个代码能够帮助到你,如果你还有其他问题,请随时问我。