用指针实现,一个班有四个学生,每个学生有5门课程的成绩,实现三种函数的结果

本文探讨了使用C语言处理学生成绩的三个函数:计算平均分、输出不及格科目超过两门的学生信息及学号,以及尝试筛选出平均成绩高于90分或所有科目成绩均大于85分的学生。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//第三章的第15题,一个班级四个学生,5门课程
#include<stdio.h>
#include<math.h>
void aver(int (*p)[5])
{
 int i=0,j;
 float ave;
float sum=0;
  
     for(j=0;j<5;j++)
	 {
	    sum+=*(*(p+i)+j);
	 }
   
   ave=sum/4;//总共有四个学生
   printf("第一门课的平均分是:%f\n",ave);


}

void oup(int (*p)[5],int *x)
{

	int n=0;//记录不及格的科目数是多少
	int i,j,t;
	float ave;
	float sum=0;
	for(i=0;i<4;i++)
	{
	  for(j=0;j<5;j++)
	  {
	     if(*(*(p+i)+j)<60)
			 n++;
		 if(n>=2)
		 {
		    printf("这个学生的学号是:%d\n",*(x+i));
			for(t=i,j=0;j<5;j++)
			{
				printf("学号为%d的学生的各科成绩为%d\t",*(x+i),*(*(p+i)+j));
				sum+=*(*(p+i)+j);
				ave=sum/5;
 
			}
			printf("输出第%d学生的平均成绩为%f\n",*(x+i),ave);
		 
		 }
	  }
	
	}

}

//以上两个函数的实现均是正确的

//再来看下面这个函数的实现是有问题的
void abov(int (*p)[5],int *x)
{

	int i,j,k;
    float ave,sum=0;
	for(i=0;i<4;i++)
	{
	  for(j=0;j<5;j++)
	  {
	     sum+=*(*(p+i)+j);
	  }
	  ave=sum/5;

	//  for(k=0;k<5;k++)
	  if(ave>90)
	  printf("%d学号的学生\n",*(x+i));
	
	}

	//平均数大于90或者没门课程都大于85,
	//或者的情况没有考虑

}
int main()
{
	int a[4][5]={{35,56,67,78,98},{45,55,67,77,88},{34,45,56,67,78},{67,88,89,90,77}};
	//每个学生的五个课程是
	int b[4]={1,2,3,4};//学生的学号是这么多
	
  //  float *p(float);//定义一个指针函数
     aver(a);
	 oup(a,b);
	 abov(a,b);
	
    return 0;
}

自我感觉实现的第三个小题有点问题,比如找出所有科目的成绩均大于85或者是平均成绩在90以上的学生的学号是多少?我目前只考虑了一种平均成绩大于90的情况

 

本题为谭浩强第四版第八章的第15题

有很多不足的地方,大家感兴趣的话可以帮忙指正一下。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sustyle

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值