c语言程序设计第三版P279 10.15,完成数据的输入、输出、排序和题目中的要求。
2011-05-26
展开全部
#include <stdio.h>
#include <string.h>
#define M 4
#define N 5
void main()
{
void aver_count1(char *cou,float *sco);
void aver_stu(float *sco,float *ave);
void fail2(char *cou,int *num,float *sco,float *ave);
void good(char *cou,int *num,float *sco,float *ave);
char course[N][10],*cou;
float score[M][N],aver[M],*sco,*ave;
int number[M],*num,i,j;
cou=course[0];
printf("输入%d门课程名\n\n",N);
for(i=0;i<N;i++)
scanf("%s",cou+i*10);
printf("\n\n按顺序输入%d个学生学号和%d门课程的成绩\n\n",M,N);
printf("学号 ");
for(i=0;i<N;i++)
printf("%s ",cou+i*10);
num=number;
sco=&score[0][0];
for(i=0;i<M;i++)
{
scanf("%d",num+i);
for(j=0;j<N;j++)
{
scanf("%f",sco+i*N+j);
}
}
aver_count1(cou,sco);
ave=aver;
aver_stu(sco,ave);
ave=aver;
fail2(cou,num,sco,ave);
ave=aver;
good(cou,num,sco,ave);
}
void aver_count1(char *cou,float *sco)
{
int i;
float sum,aver;
sum=0;
for(i=0;i<M;i++)
sum+=(*(sco+i*N));
aver=sum/M;
printf("第一门课%s的平均成绩为:%f\n\n",cou,aver);
}
void aver_stu(float *sco,float *ave)
{
int i,j;
float sum;
for(i=0;i<M;i++)
{
sum=0;
for(j=0;j<N;j++)
{
sum+=(*(sco+i*N+j));
}
*(ave+i)=sum/N;
}
}
void fail2(char *cou,int *num,float *sco,float *ave)
{
int i,j,k,flag;
printf("============两门以上课程不及格的学生============\n\n");
printf("学号");
for(i=0;i<N;i++)
printf(" %-8s",cou+i*10);
printf(" 平均成绩\n\n");
for(i=0;i<M;i++)
{
flag=0;
for(j=0;j<N;j++)
{
if(*(sco+i*N+j)<60) flag+=1;
}
if(flag>2)
{
printf("%-8d",*(num+i));
for(k=0;k<N;k++)
{
printf("%-8.2f",*(sco+i*N+k));
}
printf("%-8.2f\n\n",*(ave+i));
}
}
}
void good(char *cou,int *num,float *sco,float *ave)
{
int i,j,k,flag;
printf("============平均成绩在90分以上或者每门课在85分以上的学生============\n\n");
printf("学号");
for(i=0;i<N;i++)
printf(" %-8s",cou+i*10);
printf(" 平均成绩\n\n");
for(i=0;i<M;i++)
{
flag=0;
for(j=0;j<N;j++)
{
if(*(sco+i*N+j)>=85) flag+=1;
}
if(flag==5||(*(ave+i)>=90))
{
printf("%-8d",*(num+i));
for(k=0;k<N;k++)
{
printf("%-8.2f",*(sco+i*N+k));
}
printf("%-8.2f\n\n",*(ave+i));
}
}
}
#include <string.h>
#define M 4
#define N 5
void main()
{
void aver_count1(char *cou,float *sco);
void aver_stu(float *sco,float *ave);
void fail2(char *cou,int *num,float *sco,float *ave);
void good(char *cou,int *num,float *sco,float *ave);
char course[N][10],*cou;
float score[M][N],aver[M],*sco,*ave;
int number[M],*num,i,j;
cou=course[0];
printf("输入%d门课程名\n\n",N);
for(i=0;i<N;i++)
scanf("%s",cou+i*10);
printf("\n\n按顺序输入%d个学生学号和%d门课程的成绩\n\n",M,N);
printf("学号 ");
for(i=0;i<N;i++)
printf("%s ",cou+i*10);
num=number;
sco=&score[0][0];
for(i=0;i<M;i++)
{
scanf("%d",num+i);
for(j=0;j<N;j++)
{
scanf("%f",sco+i*N+j);
}
}
aver_count1(cou,sco);
ave=aver;
aver_stu(sco,ave);
ave=aver;
fail2(cou,num,sco,ave);
ave=aver;
good(cou,num,sco,ave);
}
void aver_count1(char *cou,float *sco)
{
int i;
float sum,aver;
sum=0;
for(i=0;i<M;i++)
sum+=(*(sco+i*N));
aver=sum/M;
printf("第一门课%s的平均成绩为:%f\n\n",cou,aver);
}
void aver_stu(float *sco,float *ave)
{
int i,j;
float sum;
for(i=0;i<M;i++)
{
sum=0;
for(j=0;j<N;j++)
{
sum+=(*(sco+i*N+j));
}
*(ave+i)=sum/N;
}
}
void fail2(char *cou,int *num,float *sco,float *ave)
{
int i,j,k,flag;
printf("============两门以上课程不及格的学生============\n\n");
printf("学号");
for(i=0;i<N;i++)
printf(" %-8s",cou+i*10);
printf(" 平均成绩\n\n");
for(i=0;i<M;i++)
{
flag=0;
for(j=0;j<N;j++)
{
if(*(sco+i*N+j)<60) flag+=1;
}
if(flag>2)
{
printf("%-8d",*(num+i));
for(k=0;k<N;k++)
{
printf("%-8.2f",*(sco+i*N+k));
}
printf("%-8.2f\n\n",*(ave+i));
}
}
}
void good(char *cou,int *num,float *sco,float *ave)
{
int i,j,k,flag;
printf("============平均成绩在90分以上或者每门课在85分以上的学生============\n\n");
printf("学号");
for(i=0;i<N;i++)
printf(" %-8s",cou+i*10);
printf(" 平均成绩\n\n");
for(i=0;i<M;i++)
{
flag=0;
for(j=0;j<N;j++)
{
if(*(sco+i*N+j)>=85) flag+=1;
}
if(flag==5||(*(ave+i)>=90))
{
printf("%-8d",*(num+i));
for(k=0;k<N;k++)
{
printf("%-8.2f",*(sco+i*N+k));
}
printf("%-8.2f\n\n",*(ave+i));
}
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询