输入m个学生,每个学生有4门课,在主调函数中输入学生的相关信息,编写三个函数:
(1)求第一门课的平均分。要求用指针传递子函数形参值。
(2)找出有两门课以上不及格的学生,输出他们的学号和全部成绩,要求用指针实现。
(3)找出平均分在90分以上或全部成绩在85分以上的学生。要求用指针传递子函数形参值。
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
void aver(int (*p1)[4],int *p2)
{
int i,j,x=0;
for(j=0;j<*p2;j++)
x+=*(*(p1+j));
x=x/(*p2);
printf("第一门课平均分为%d\n\n",x);
}
void find1(int (*p3)[4],int *p4)
{
int i,j,k;
printf("不合格学生为:\n");
for(i=0;i<*p4;i++)
{
k=0;
for(j=0;j<4;j++)
if(*(*(p3+i)+j)<60)
k++;
//printf("%d",k);
if(k>=2)
{
printf("第%d名 ",i+1);
for(j=0;j<4;j++)
printf("%-3d",*(*(p3+i)+j));
printf("\n");
}
}
printf("\n");
}
#include<time.h>
#include<stdlib.h>
void aver(int (*p1)[4],int *p2)
{
int i,j,x=0;
for(j=0;j<*p2;j++)
x+=*(*(p1+j));
x=x/(*p2);
printf("第一门课平均分为%d\n\n",x);
}
void find1(int (*p3)[4],int *p4)
{
int i,j,k;
printf("不合格学生为:\n");
for(i=0;i<*p4;i++)
{
k=0;
for(j=0;j<4;j++)
if(*(*(p3+i)+j)<60)
k++;
//printf("%d",k);
if(k>=2)
{
printf("第%d名 ",i+1);
for(j=0;j<4;j++)
printf("%-3d",*(*(p3+i)+j));
printf("\n");
}
}
printf("\n");
}
void find2(int (*p5)[4],int *p6)
{
int i,j,k,sum;
for(i=0;i<*p6;i++)
{
k=0;sum=0;
for(j=0;j<4;j++)
{
sum+=*(*(p5+i)+j);
if(*(*(p5+i)+j)>85)
k++;
}
if(sum/4>=90||k==4)
printf("第%d名优秀\n",i+1);
}
}
{
int i,j,k,sum;
for(i=0;i<*p6;i++)
{
k=0;sum=0;
for(j=0;j<4;j++)
{
sum+=*(*(p5+i)+j);
if(*(*(p5+i)+j)>85)
k++;
}
if(sum/4>=90||k==4)
printf("第%d名优秀\n",i+1);
}
}
int main()
{
int a[50][4],i,j,m;
int (*p)[4];
srand(time(0));
printf("几个学生:");
scanf("%d",&m);
for(p=a,i=0;i<m;i++)
for(j=0;j<4;j++)
*(*(p+i)+j)=rand()%50+40;
for(p=a,i=0;i<m;i++)
{
for(j=0;j<4;j++)
printf("%-3d",*(*(p+i)+j));
printf("\n");
}
printf("\n");
aver(a,&m);
find1(a,&m);
find2(a,&m);
}
{
int a[50][4],i,j,m;
int (*p)[4];
srand(time(0));
printf("几个学生:");
scanf("%d",&m);
for(p=a,i=0;i<m;i++)
for(j=0;j<4;j++)
*(*(p+i)+j)=rand()%50+40;
for(p=a,i=0;i<m;i++)
{
for(j=0;j<4;j++)
printf("%-3d",*(*(p+i)+j));
printf("\n");
}
printf("\n");
aver(a,&m);
find1(a,&m);
find2(a,&m);
}