C语言指针写程序找出平均成绩在90分以上或全部课程成绩在85分以上的学生,分别编力个函数实现以上三个要求.
时间: 2023-06-24 18:07:54 浏览: 158
以下是通过C语言指针编写的程序,用于找出平均成绩在90分以上或全部课程成绩在85分以上的学生:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_STUDENTS 100
#define MAX_COURSES 10
typedef struct {
char name[20];
int scores[MAX_COURSES];
double average;
} Student;
void input(Student *student) {
printf("Enter student name: ");
scanf("%s", student->name);
for(int i = 0; i < MAX_COURSES; i++) {
printf("Enter score for course %d: ", i+1);
scanf("%d", &student->scores[i]);
}
}
void calculate_average(Student *student) {
double sum = 0;
for(int i = 0; i < MAX_COURSES; i++) {
sum += student->scores[i];
}
student->average = sum / MAX_COURSES;
}
void print(Student *student) {
printf("%s's scores: ", student->name);
for(int i = 0; i < MAX_COURSES; i++) {
printf("%d ", student->scores[i]);
}
printf("\nAverage score: %.2f\n", student->average);
}
void find_above_average(Student *students, int num_students) {
printf("Students with average score above 90:\n");
for(int i = 0; i < num_students; i++) {
if(students[i].average > 90) {
printf("%s\n", students[i].name);
}
}
}
void find_above_score(Student *students, int num_students, int score) {
printf("Students with all scores above %d:\n", score);
for(int i = 0; i < num_students; i++) {
int count = 0;
for(int j = 0; j < MAX_COURSES; j++) {
if(students[i].scores[j] > score) {
count++;
}
}
if(count == MAX_COURSES) {
printf("%s\n", students[i].name);
}
}
}
int main() {
Student students[MAX_STUDENTS];
int num_students;
printf("Enter number of students: ");
scanf("%d", &num_students);
for(int i = 0; i < num_students; i++) {
input(&students[i]);
calculate_average(&students[i]);
print(&students[i]);
}
find_above_average(students, num_students);
find_above_score(students, num_students, 85);
return 0;
}
```
该程序首先定义了一个`Student`结构体,包含学生的姓名、每门课程的分数和平均分数。然后定义了四个函数:
- `input`:用于输入学生的姓名和每门课程的成绩。
- `calculate_average`:用于计算学生的平均分数。
- `print`:用于输出学生的姓名、每门课程的分数和平均分数。
- `find_above_average`:用于找出平均分数在90分以上的学生,并输出他们的姓名。
- `find_above_score`:用于找出全部课程成绩在85分以上的学生,并输出他们的姓名。
在`main`函数中,首先输入学生的数量,然后循环输入每个学生的信息并计算平均分数,并输出每个学生的信息。最后调用`find_above_average`和`find_above_score`函数,输出符合条件的学生的姓名。
阅读全文