10.15有一个班4个学生,5门课。(1)求第一门课的平均分;(2)找出有两门以上课程不及格的学生,输出他们的学号和全部课程成绩及平均成绩;(3)找出平均成绩在90分以上或全部课程成绩在85分以上的学生。分别编3个函数实现上3个要求。

时间:2022-11-17 23:21:56

不是很难,但是有点繁琐的一道题。注意要把用于计数的变量 count 放到合适的位置。

10.15有一个班4个学生,5门课。(1)求第一门课的平均分;(2)找出有两门以上课程不及格的学生,输出他们的学号和全部课程成绩及平均成绩;(3)找出平均成绩在90分以上或全部课程成绩在85分以上的学生。分别编3个函数实现上3个要求。

 

#include <stdio.h>

int main(){
void avcour1(char (* pcourse)[10], float (* pscore)[5]);
void avsco(float (*pscore)[5],float * paver);
void fail2(char (* pcourse)[10], int * pnum, float (* pscore)[5], float * paver);
void good(char (* pcourse)[10], int * pnum, float (* pscore)[5], float * paver);

char course[5][10]={"English","Computer","Math","Physics","Chemistry"};
char (* pcourse)[10];

int i, j,* pnum;
int num[4]={1001,1002,1003,1004};
float score[4][5]={{34,56,88,99,89},
{
77,88,99,67,78},
{
99,90,87,86,89},
{
78,89,99,56,77}};
float (* pscore)[5],* paver;
float aver[4];

pnum
=num; //一维数组,存放学生编号
pscore=score; //二维数组,存放学生的成绩
pcourse=course; //一维数组,存放课程名称
paver=aver; //一维数组,存放每名学生平均成绩

//将学生编号和成绩打印
printf("NO. ");
for(i=0; i<5; i++){
printf(
",%s ",course[i]);
}
printf(
"\n");
//打印学生编号和成绩
for(i=0; i<4; i++){
printf(
"%-8d",num[i]);
for(j=0; j<5; j++){
printf(
"%4.2f ",score[i][j]);
}
printf(
"\n");
}

//每名学生所有课程的平均成绩
avsco(pscore, paver);

//1.求所有学生第一门课程的平均成绩
avcour1(pcourse, pscore);
//2.找出两门以上课程不及格的学生,输出学号,成绩,平均成绩
fail2(pcourse, pnum, pscore, paver);
//3.找出平均成绩在90分以上或全部课程成绩在85分以上的学生,输出学号,成绩,平均成绩
good(pcourse, pnum, pscore, paver);

return 0;
}

void avsco(float (*pscore)[5],float * paver){
int i,j;
float sum,avg;
for(i=0; i<4; i++){
sum
=0;
for(j=0; j<5; j++){
sum
+= *(*(pscore+i)+j);
}
avg
= sum/5;//第i个学生的平均成绩
*(paver+i)=avg;
}

for(i=0; i<4; i++){
printf(
"第%d个学生的平均成绩为%4.2f \n",i+1,*(paver+i));
}
}

//1.
void avcour1(char (* pcourse)[10], float (* pscore)[5]){
int i;
float sum=0,avg1;
for(i=0; i<4; i++){
sum
+= *(*(pscore+i));
}
avg1
= (float)sum/4;
printf(
"第一门课%s的平均成绩为:%4.2f\n",* pcourse,avg1);
}

//2.找出两门以上课程不及格的学生,输出学号,成绩,平均成绩
void fail2(char (* pcourse)[10], int * pnum, float (* pscore)[5], float * paver){
int i,j,count;

printf(
"\n下面的学生有两门及以上的课程不及格.\n");
//将学生编号和成绩打印
printf("NO. ");
for(i=0; i<5; i++){
printf(
",%s ",*(pcourse+i));
}
printf(
"average");
printf(
"\n");


for(i=0; i<4; i++){
count
=0;
for(j=0; j<5; j++){
if(*(*(pscore+i)+j) < 60 ) count++;
}
if(count>=2){
printf(
"%-8d",*(pnum+i));
for(j=0; j<5; j++){
printf(
"%4.2f ",*(*(pscore+i)+j));
}
printf(
"%4.2f ",*(paver+i));
printf(
"\n");
}
}
}

//3.找出平均成绩在90分以上或全部课程成绩在85分以上的学生,输出学号,成绩,平均成绩
void good(char (* pcourse)[10], int * pnum, float (* pscore)[5], float * paver){
int i,j,count;
printf(
"\n下面的学生平均成绩在90分以上或全部课程成绩在85分以上.\n");
//将学生编号和课程打印
printf("NO. ");
for(i=0; i<5; i++){
printf(
",%s ",*(pcourse+i));
}
printf(
"average");
printf(
"\n");
for(i=0; i<4; i++){
count
=0;
for(j=0; j<5; j++){
if(*(*(pscore+i)+j) > 85) count++;
}
if(count==5 || *(paver+i)>90){
printf(
"%-8d",*(pnum+i));
for(j=0; j<5; j++){
printf(
"%4.2f ",*(*(pscore+i)+j));
}
printf(
"%4.2f ",*(paver+i));
printf(
"\n");
}
}
}

 

结果:

10.15有一个班4个学生,5门课。(1)求第一门课的平均分;(2)找出有两门以上课程不及格的学生,输出他们的学号和全部课程成绩及平均成绩;(3)找出平均成绩在90分以上或全部课程成绩在85分以上的学生。分别编3个函数实现上3个要求。