完成实验: 某班有30个学生,按如下要求编写程序。 (1)用input( )函数输入学生的学号、姓名、数学成绩、计算机成绩;(2)用output( )丙数输出每个同学的学号、姓名、数学成绩、计算机成绩; (3)用avg( )函数输山每个同学的平均分; (4)用pass( )函数统计两门课成绩都及格的学生人数; (5)用maxc()函数输出计算机成绩最高的学生; (6)在main( )丽数中调用这些函数r。
时间: 2023-03-30 18:01:37 浏览: 210
我可以回答这个问题。以下是程序的代码:
#include <stdio.h>
#include <string.h>
struct student {
char id[10];
char name[20];
float math;
float computer;
float average;
};
void input(struct student *s) {
printf("请输入学生的学号、姓名、数学成绩、计算机成绩:\n");
scanf("%s %s %f %f", s->id, s->name, &s->math, &s->computer);
}
void output(struct student s) {
printf("%s %s %.2f %.2f\n", s.id, s.name, s.math, s.computer);
}
void avg(struct student *s) {
s->average = (s->math + s->computer) / 2;
printf("%s %s 的平均分是 %.2f\n", s->id, s->name, s->average);
}
int pass(struct student s[], int n) {
int count = ;
for (int i = ; i < n; i++) {
if (s[i].math >= 60 && s[i].computer >= 60) {
count++;
}
}
printf("两门课成绩都及格的学生人数是 %d\n", count);
return count;
}
void maxc(struct student s[], int n) {
int max_index = ;
for (int i = 1; i < n; i++) {
if (s[i].computer > s[max_index].computer) {
max_index = i;
}
}
printf("计算机成绩最高的学生是 %s %s,成绩是 %.2f\n", s[max_index].id, s[max_index].name, s[max_index].computer);
}
int main() {
struct student s[30];
int n = ;
while (1) {
printf("请输入第 %d 个学生的信息:\n", n+1);
input(&s[n]);
output(s[n]);
avg(&s[n]);
n++;
if (n >= 30) {
break;
}
printf("是否继续输入?(y/n)\n");
char c;
scanf(" %c", &c);
if (c == 'n' || c == 'N') {
break;
}
}
pass(s, n);
maxc(s, n);
return ;
}