C语言编写程序,建立5个学生的结构记录,包括学号、姓名、成绩,输出平均成绩
时间: 2023-12-03 11:46:46 浏览: 46
以下是一个建立5个学生结构记录的C语言程序,包含学号、姓名、成绩,并输出平均成绩:
```c
#include <stdio.h>
struct student {
int id;
char name[20];
float score;
};
int main() {
struct student stu[5];
float sum = 0, avg;
int i;
for (i = 0; i < 5; i++) {
printf("请输入第%d个学生的学号、姓名、成绩:\n", i+1);
scanf("%d %s %f", &stu[i].id, stu[i].name, &stu[i].score);
sum += stu[i].score;
}
avg = sum / 5;
printf("平均成绩为:%.2f\n", avg);
return 0;
}
```
其中,定义了一个名为 `student` 的结构体,包含了学号(`id`)、姓名(`name`)和成绩(`score`)三个成员变量。在 `main` 函数中,定义了一个包含5个 `student` 结构体的数组 `stu`,并使用 `for` 循环依次输入每个学生的信息,同时累加成绩求和。
最后,计算平均成绩并输出。注意,在输出平均成绩时使用了 `%.2f` 的格式化输出,表示输出浮点数时保留两位小数。
相关问题
用C语言编写程序,找出总分最高的学生,建立一个有n个学生成绩的结构记录,包括学号姓名和三科成绩,输出总分最高学生的姓名和总分
以下是用C语言编写的程序,可以找出总分最高的学生:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENTS 100 // 最大学生数
// 学生结构体
typedef struct Student {
char id[10]; // 学号
char name[20]; // 姓名
int score1; // 第一科成绩
int score2; // 第二科成绩
int score3; // 第三科成绩
int totalScore; // 总分
} Student;
int main() {
int n; // 学生数
Student students[MAX_STUDENTS]; // 学生结构体数组
int maxScore = 0; // 最高分
int maxIndex = 0; // 最高分学生的下标
// 输入学生数和各学生信息
printf("请输入学生数:");
scanf("%d", &n);
for (int i = 0; i < n; i++) {
printf("请输入第%d个学生的学号、姓名和三科成绩:", i + 1);
scanf("%s%s%d%d%d", students[i].id, students[i].name, &students[i].score1, &students[i].score2, &students[i].score3);
students[i].totalScore = students[i].score1 + students[i].score2 + students[i].score3; // 计算总分
}
// 查找总分最高的学生
for (int i = 0; i < n; i++) {
if (students[i].totalScore > maxScore) {
maxScore = students[i].totalScore;
maxIndex = i;
}
}
// 输出总分最高学生的姓名和总分
printf("总分最高的学生是%s,总分为%d分。\n", students[maxIndex].name, maxScore);
return 0;
}
```
该程序先输入学生数和各学生信息,然后计算出每个学生的总分,并查找总分最高的学生,最后输出总分最高学生的姓名和总分。
用c语言编写函数,按照成绩对五个学生进行排序包括学号,姓名,成绩
这是一个经典的排序算法题,可以使用冒泡排序、快速排序等算法来解决。以下是一种简单的冒泡排序的实现代码示例:
```
#include <stdio.h>
#include <string.h>
typedef struct {
int id;
char name[20];
int score;
} Student;
void bubble_sort(Student s[], int n) {
int i, j;
Student temp;
for (i = 0; i < n-1; i++) {
for (j = 0; j < n-i-1; j++) {
if (s[j].score < s[j+1].score) {
// 交换
temp = s[j];
s[j] = s[j+1];
s[j+1] = temp;
}
}
}
}
int main() {
Student students[5] = {
{1, "Tom", 80},
{2, "Jerry", 90},
{3, "Mike", 70},
{4, "Bob", 85},
{5, "Lucy", 95},
};
int i;
// 排序前
printf("排序前:\n");
for (i = 0; i < 5; i++) {
printf("%d %s %d\n", students[i].id, students[i].name, students[i].score);
}
// 排序
bubble_sort(students, 5);
// 排序后
printf("排序后:\n");
for (i = 0; i < 5; i++) {
printf("%d %s %d\n", students[i].id, students[i].name, students[i].score);
}
return 0;
}
```
这里定义了一个结构体类型,包含学号、姓名、成绩三个字段。使用冒泡排序算法对该结构体数组进行排序,先按照成绩从高到低排序,相同成绩再按照学号从小到大排序。最后输出排序结果。