编程序求结构体数组中成绩高于85分的学生人数,学生信息包括学号、姓名和成绩3项,学生人数共计4人,各项学生信息从键盘输入,学生成绩按单精度实数考虑
时间: 2024-12-17 17:39:47 浏览: 5
在编程中,你可以通过以下步骤计算结构体数组中成绩高于85分的学生人数:
1. 定义一个结构体,包含学号、姓名和成绩三个成员变量:
```c
typedef struct {
int student_id;
char name[20];
float score;
} Student;
```
2. 创建一个Student类型的数组,假设名为students,大小为4:
```c
Student students[4];
```
3. 使用循环从键盘接收用户输入,并填充结构体数组:
```c
for (int i = 0; i < 4; i++) {
printf("请输入第%d位学生的学号、姓名和成绩:\n", i+1);
scanf("%d%s%f", &students[i].student_id, students[i].name, &students[i].score);
}
```
4. 遍历数组,检查每个学生的成绩是否大于85分,并计数:
```c
int count = 0;
for (int i = 0; i < 4; i++) {
if (students[i].score > 85) {
count++;
}
}
```
5. 输出结果:
```c
printf("成绩高于85分的学生有 %d 人。\n", count);
```
相关问题
输入5名学生的学号、姓名和3门课程(programming、database、network)的成绩,存入一个结构体数组中。编写sumScore函数,其功能是计算学生3门课的总成绩,并存入结构体数组中。在主函数中输入学生信息,调用sunScore函数,并输出学生的学号、姓名和总成绩信息。 要求: 1 定义结构体类型,包括int snum、 char namel、int scorel、float sum变量,分别表示学生的学号、姓名、成绩数组和总成绩。2 在主函数中输入学生的学号、姓名和3门课成绩。 3 调用sumScore函数,计算学生的平均成绩,存入结构体数组的sum变量中。4 在主函数中输出每个学生学号、姓名和总成绩信息。
以下是代码实现:
```c
#include <stdio.h>
struct student {
int snum;
char name[20];
int score[3];
float sum;
};
void sumScore(struct student *s) {
for(int i=0; i<5; i++) {
s[i].sum = 0;
for(int j=0; j<3; j++) {
s[i].sum += s[i].score[j];
}
}
}
int main() {
struct student s[5];
// 输入学生信息
printf("请输入5名学生的学号、姓名和3门课程(programming、database、network)的成绩:\n");
for(int i=0; i<5; i++) {
printf("请输入第%d个学生的学号:", i+1);
scanf("%d", &s[i].snum);
printf("请输入第%d个学生的姓名:", i+1);
scanf("%s", s[i].name);
printf("请输入第%d个学生的programming成绩:", i+1);
scanf("%d", &s[i].score[0]);
printf("请输入第%d个学生的database成绩:", i+1);
scanf("%d", &s[i].score[1]);
printf("请输入第%d个学生的network成绩:", i+1);
scanf("%d", &s[i].score[2]);
}
// 计算总成绩
sumScore(s);
// 输出学生信息
printf("\n学号\t姓名\t总成绩\n");
for(int i=0; i<5; i++) {
printf("%d\t%s\t%.2f\n", s[i].snum, s[i].name, s[i].sum);
}
return 0;
}
```
这段代码中,我们首先定义了一个包含学号、姓名、成绩数组和总成绩的结构体类型 `struct student`。然后,在 `main` 函数中,我们定义了一个结构体数组 `s`,用于存储输入的学生信息。
接着,我们通过 `for` 循环依次输入每个学生的学号、姓名和3门课程的成绩,并且调用了 `sumScore` 函数来计算每个学生的总成绩。
最后,我们再次通过 `for` 循环输出每个学生的学号、姓名和总成绩信息。
编写程序从键盘输入5个学生的信息,包括学生学号、姓名、性别、出生年月及成绩,用结构体数组保存学生的信息,要求用函数实现结构体数组的输入输出及求成绩最高学生的序号。
好的,这是一个比较典型的结构体数组的输入输出及最值问题,请按照以下步骤操作:
1. 定义结构体类型
```c++
#include <iostream>
using namespace std;
struct Student {
int id; // 学号
string name; // 姓名
char sex; // 性别
string birth; // 出生年月
float score; // 成绩
};
```
2. 编写输入函数
```c++
void input(Student students[], int len) {
for(int i = 0; i < len; i++) {
cout << "请输入第" << i+1 << "个学生的学号、姓名、性别、出生年月及成绩:" << endl;
cin >> students[i].id >> students[i].name >> students[i].sex >> students[i].birth >> students[i].score;
}
}
```
3. 编写输出函数
```c++
void output(Student students[], int len) {
for(int i = 0; i < len; i++) {
cout << "第" << i+1 << "个学生的信息为:" << endl;
cout << "学号:" << students[i].id << endl;
cout << "姓名:" << students[i].name << endl;
cout << "性别:" << students[i].sex << endl;
cout << "出生年月:" << students[i].birth << endl;
cout << "成绩:" << students[i].score << endl;
}
}
```
4. 编写求最值函数
```c++
int findMax(Student students[], int len) {
int maxIndex = 0;
float maxScore = students[0].score;
for(int i = 1; i < len; i++) {
if(students[i].score > maxScore) {
maxIndex = i;
maxScore = students[i].score;
}
}
return maxIndex;
}
```
5. 主函数调用
```c++
int main() {
const int len = 5;
Student students[len];
input(students, len);
output(students, len);
int maxIndex = findMax(students, len);
cout << "成绩最高的学生是第" << maxIndex+1 << "个学生,成绩为:" << students[maxIndex].score << endl;
return 0;
}
```
这样就完成了结构体数组的输入输出及最值问题。
阅读全文