/*============================================================= 目的:有个一个班4个学生,5门课,(1)求第一门课的平均分(2)找出有2们以上课程 不及格的学生,输出他们的学号和全部课程成绩和平均成绩(3)找出平均成绩在90分以 上或者全部课程成绩在85以上的学生分别编3个函数实现以上3个要求。 算法分析:1、 定义成绩数组,定义学号数组, 2、函数一:计算第一门课的平均分 3、 函数二:以成绩数组和学号数组为参数找出2门以上课程不及格的学生,输 出他们的学号和全部成绩和平均分 4、函数三:以成绩数组和学号数组为参数找出平均成绩在90分以上或者全部课程 成绩在85以上的学生。 ============================================================== 作者:最后的村长 时间:2009年11月6日 工具:DEV C++ 4.9.9.2 version:1.0 ==============================================================*/ #include <stdio.h> #include <stdlib.h> #define N 4 #define M 5 void average_score(float (*p)[M]);//计算第一门课的平均成绩
void search(float (*p)[M],unsigned id[N]);//找出有2门以上的课程不及格的学生,输出他们的学号和全部课程成绩及平均成绩
void find(float (*p)[M],unsigned id[N]);//找出平均成绩在90分以上或全部课程成绩在85分以上的学生
/*=============================================================*/ int main() { //定义并初始化成绩数组
float score[N][M]={{70,75,80,65,59},{90,92,88,88,99},{60,49,52,34,70},{60,43,32,21,50}}; //定义并初始化学号数组
unsigned id[N]={10537,10538,10539,10540}; //调用平均函数
average_score(score); //调用找两门不及格成绩函数
search(score,id); //调用高分搜索函数
find(score,id); system("PAUSE"); return 0; } //求第一门课的平均成绩
void average_score(float (*p)[M]) { float average;//定义平均成绩
float sum=0;//定义第一门课的总成绩
for(int i=0;i<N;i++) { sum+=*(*(p+i)+0);//求解第一门课总成绩
} average=sum/N;//求解第一门课平均成绩
puts("第一门课的平均成绩为:\n"); printf("%4.2f",average);//输出第一门课的平均成绩
} //找出两门以上课程不及格的学生,输出学号、全部课程成绩和平均成绩
void search(float (*p)[M],unsigned id[N]) { float sum=0;//定义每个人的总成绩
int count;//定义不及格标识符
for(int i=0;i<N;i++) { count=0;// 下一个同学不及格成绩数目自动归零
sum=0;//下一个同学的总成绩自动归零
for(int j=0;j<M;j++) { if(*(*(p+i)+j)<60) count++; if(count>=2) { printf("\n\n不及格学生的学号为:%u",id[i]);//输出存在2门成绩不及格学生的学号 ,这个学号输出缺少后两位???
printf("\n不及格学生的全部成绩为:");//输出这个学生的全部成绩
for(int k=0;k<M;k++) { sum+=*(*(p+i)+k); printf(" %4.2f ",*(*(p+i)+k)); } printf("\n此学生的平均成绩是:%4.2f",(sum/M));//输出这个学生的平均成绩
break; } } } } //找出平均成绩90分以上或者全部成绩在85分以上的学生
void find(float (*p)[M],unsigned id[N]) { float sum=0;//同学的总成绩
unsigned int count;//同学超过85分成绩的个数
for(int i=0;i<N;i++) { count=0;//下一个同学的高分成绩归零
sum=0;//下一个同学的总成绩归零
for(int j=0;j<M;j++) { sum=sum+*(*(p+i)+j); if(*(*(p+i)+j)>=85) count++; if(count==5) printf("\n\n学号为%u的学生所有成绩在85分以上",id[i]);//输出高分学生的学号
} if((sum/M)>=90) printf("\n\n学号为%u的学生平均成绩在90分以上",id[i]);//输出平均成绩高分的学生学号
} }
|