C语言 指针习题 有一个班4个学生,五门课程。 1.求第一门课程的平均分 2.找出有两门以上课程不

2025-04-05 11:07:35
推荐回答(1个)
回答1:

我写了这个,你看看行不行。
#include
#define N 4
#define M 5
typedef struct//定义学生结构体数组
{
char name[15];
float score[M];
float ave;
}ST;
ST stu[N];

int i,j;
void average(ST stu[])//求平均成绩函数
{
for(i=0;i {
stu[i].ave=0;
for(j=0;j {
stu[i].ave+=stu[i].score[j];
}
stu[i].ave/=M;
}
}

void nopass(ST stu[])//找出有两门成绩不合格的学生并输出相应信息
{
int count;
printf("\n有两门成绩不合格的学生有:\n");
printf("姓名\t成绩1\t成绩2\t成绩3\t成绩4\t成绩5\t平均成绩\n");
for(i=0;i {
count=0;
for(j=0;j if(stu[i].score[j]<60)
count++;
if(count==2)
{
printf("%s\t",stu[i].name);
for(j=0;j {
printf("%.2f\t",stu[i].score[j]);
}
printf("%.2f\n",stu[i].ave);
}
}
}

void select(ST stu[])//找出满足条件的学生并输出
{
int flag;
printf("\n平均成绩在90分以上或者全部成绩在85分以上的学生有:\n");
printf("姓名\t成绩1\t成绩2\t成绩3\t成绩4\t成绩5\t平均成绩\n");
for(i=0;i {
flag=0;
if(stu[i].ave>=90)
{
flag=1;
}
else
{
for(j=0;j {
if(stu[i].score[j]<85)
break;
}
if(j>=M)
flag=1;
}
if(flag==1)
{
printf("%s\t",stu[i].name);
for(j=0;j {
printf("%.2f\t",stu[i].score[j]);
}
printf("%.2f\n",stu[i].ave);
}
}
}

main()
{
for(i=0;i {
printf("请输入第%d个学生的姓名:",i+1);
scanf("%s",stu[i].name);
for(j=0;j {
printf("请输入该生第%d门成绩:",j+1);
scanf("%f",&stu[i].score[j]);
}
}
average(stu);//运行函数
nopass(stu);
select(stu);
}