1.采用结构体数组存储一个班级40个学生的如下数据和信息:学号(num)、姓名(name)、力学、高等数学、C语言成绩(score)。要求从键盘输入20个学生的数据和信息,完成以下操作:a.找出各门课成绩最高的学生,将其学号、姓名、成绩输出;b.分别求出这个班40个人各门课平均成绩,以及各门课成绩的标准差sigma,分别统计各门课成绩在平均成绩为零点的正负一个sigma,正负2个sigma,正负3个sigma,正负4个sigma,以及正负5个sigma 内的学生人数;c.分别统计班级中各门课成绩高于其平均成绩的学生和低于平均成绩的学生人数,分别找出与各门课平均成绩最接近以及最远离的学生,将其学号、姓名、c语言成绩输出。输出以上a, b,c三个操作的结果。
时间: 2023-03-14 15:11:12 浏览: 44
答:a. 根据输入的20个学生的数据和信息,可以找出力学、高等数学和C语言成绩各门课最高的学生,将其学号、姓名、成绩输出;b. 分别求出这个班40个人各门课的平均成绩,以及各门课成绩的标准差sigma,然后统计各门课成绩在平均成绩为零点的正负一个sigma,正负2个sigma,正负3个sigma,正负4个sigma,以及正负5个sigma内的学生人数;c. 分别统计班级中各门课成绩高于其平均成绩的学生和低于平均成绩的学生人数,然后找出与各门课平均成绩最接近以及最远离的学生,将其学号、姓名、c语言成绩输出。输出以上a, b,c三个操作的结果。
相关问题
利用结构体数组存储信息,实现学生成绩,姓名,学号的输入,存储和删除
好的,我可以帮你解决这个问题。首先,我们可以定义一个结构体来存储学生的信息,包括姓名、学号和成绩:
```c
struct student {
char name[20];
int id;
float score;
};
```
接下来,我们可以定义一个结构体数组来存储多个学生的信息:
```c
struct student stu[100];
int count = 0; // 记录学生数量
```
在输入学生信息时,可以使用循环来不断输入多个学生的信息,并将其保存到结构体数组中:
```c
while (1) {
printf("请输入学生姓名(输入0结束):");
scanf("%s", stu[count].name);
if (strcmp(stu[count].name, "0") == 0) {
break;
}
printf("请输入学生学号:");
scanf("%d", &stu[count].id);
printf("请输入学生成绩:");
scanf("%f", &stu[count].score);
count++;
}
```
在删除学生信息时,可以根据学号来查找需要删除的学生,并将其后面的学生依次向前移动一位:
```c
int del_id;
printf("请输入要删除的学生学号:");
scanf("%d", &del_id);
for (int i = 0; i < count; i++) {
if (stu[i].id == del_id) {
for (int j = i; j < count - 1; j++) {
stu[j] = stu[j + 1];
}
count--;
printf("删除成功!\n");
break;
}
}
```
完整代码如下:
用C语言 定义一个学生类型的结构体,包括学号 姓名和成绩 定义五个学生变量需要定义结构体数组 循环输入学生信息 循环输出学生信息
以下是用C语言定义一个学生类型的结构体,包括学号、姓名和成绩,定义五个学生变量并需要定义结构体数组,循环输入学生信息,循环输出学生信息的代码示例:
```c
#include <stdio.h>
#define MAX_STUDENTS 5
struct student {
int id;
char name[20];
double score;
};
int main() {
struct student students[MAX_STUDENTS];
// Input student information
for (int i = 0; i < MAX_STUDENTS; i++) {
printf("Enter student %d information:\n", i+1);
printf("ID: ");
scanf("%d", &students[i].id);
printf("Name: ");
scanf("%s", students[i].name);
printf("Score: ");
scanf("%lf", &students[i].score);
}
// Output student information
printf("Student Information:\n");
for (int i = 0; i < MAX_STUDENTS; i++) {
printf("ID: %d, Name: %s, Score: %.2lf\n", students[i].id, students[i].name, students[i].score);
}
return 0;
}
```
这个程序定义了一个名为`student`的结构体,包含了三个成员:`id`表示学号(整型),`name`表示姓名(字符数组),`score`表示成绩(浮点型)。然后定义了一个长度为5的结构体数组`students`用来存储五个学生的信息。
在输入学生信息时,通过一个循环来逐一输入每个学生的学号、姓名和成绩。在输出学生信息时,同样也通过一个循环来逐一输出每个学生的信息。
注意,在输入姓名时使用了`scanf("%s", students[i].name)`,这里没有使用`&`符号。这是因为字符数组名本身就是一个指针,不需要再取地址。