从结构数组接受数组
Accept array from struct array
我需要打印所有平均成绩大于或等于给定平均成绩的学生。
#include <stdio.h>
struct Student {
char name[20], surname[20];
int grades[50];
int number_of_grades;
};
void print_average(struct Student students[], int n, double avarage) {
double avarage_grade;
int i;
for (i = 0; i < n; i++) {
avarage_grade =
(double)(students[i].grades[i]) / students[i].number_of_grades;
if (avarage_grade >= avarage)
printf("%s %s\n", students[i].surname, students[i].name);
}
}
int main() {
struct Student students[] = {{"Meho", "Behic", {10, 9}, 2},
{"Meho", "Aehic", {10, 8}, 2},
{"Meho", "Cehic", {10, 9, 8, 7, 6}, 5},
{"Meho", "Dehic", {6, 9}, 2},
{"Meho", "Zehic", {10}, 1},
{"Meho", "Oehic", {10, 9, 9, 9}, 4}};
print_average(students, 6, 9.2);
return 0;
}
程序应该只打印两个学生。这不会打印任何内容,因为我在访问数组 grades 元素时犯了一个错误。
你能帮我解决这个问题吗?
当您计算平均分时,您只需要 单个 成绩并将其除以成绩数。你需要先把成绩加起来。
void print_average(struct Student students[], int n, double avarage) {
double avarage_grade;
int i, j;
for (i = 0; i < n; i++) {
for (j=0, avarage_grade=0; j<students[i].number_of_grades; j++) {
avarage_grade += students[i].grades[j];
}
avarage_grade /= students[i].number_of_grades;
if (avarage_grade >= avarage)
printf("%s %s\n", students[i].surname, students[i].name);
}
}
我需要打印所有平均成绩大于或等于给定平均成绩的学生。
#include <stdio.h>
struct Student {
char name[20], surname[20];
int grades[50];
int number_of_grades;
};
void print_average(struct Student students[], int n, double avarage) {
double avarage_grade;
int i;
for (i = 0; i < n; i++) {
avarage_grade =
(double)(students[i].grades[i]) / students[i].number_of_grades;
if (avarage_grade >= avarage)
printf("%s %s\n", students[i].surname, students[i].name);
}
}
int main() {
struct Student students[] = {{"Meho", "Behic", {10, 9}, 2},
{"Meho", "Aehic", {10, 8}, 2},
{"Meho", "Cehic", {10, 9, 8, 7, 6}, 5},
{"Meho", "Dehic", {6, 9}, 2},
{"Meho", "Zehic", {10}, 1},
{"Meho", "Oehic", {10, 9, 9, 9}, 4}};
print_average(students, 6, 9.2);
return 0;
}
程序应该只打印两个学生。这不会打印任何内容,因为我在访问数组 grades 元素时犯了一个错误。 你能帮我解决这个问题吗?
当您计算平均分时,您只需要 单个 成绩并将其除以成绩数。你需要先把成绩加起来。
void print_average(struct Student students[], int n, double avarage) {
double avarage_grade;
int i, j;
for (i = 0; i < n; i++) {
for (j=0, avarage_grade=0; j<students[i].number_of_grades; j++) {
avarage_grade += students[i].grades[j];
}
avarage_grade /= students[i].number_of_grades;
if (avarage_grade >= avarage)
printf("%s %s\n", students[i].surname, students[i].name);
}
}