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

代码:

#include<stdio.h>
int main(){
	void avsco(float *pscore,float *paver);
	void avg(char (*pcourse)[10],float *pscore);
	void fail2(char course[5][10],int num[],float *pscore,float aver[4]);
	void good(char course[5][10],int num[4],float *pscore,float aver[4]);
	int i,j,num[4],*pnum;
	float score[4][5],*paver,*pscore,aver[4];
	char (*pcourse)[10],course[5][10];//pcourse指向一位数组
	printf("plese input course:");
	pcourse=course;
	for(i=0;i<5;i++)
		scanf("%s",course[i]);
	pscore=&score[0][0];
	pnum=&num[0];
	for(i=0;i<4;i++){
		scanf("%d",pnum+i);
		for(j=0;j<5;j++)
			scanf("%f",pscore+5*i+j);
	}
	paver=&aver[0];
	printf("\n");
	avsco(pscore,paver);
	avg(pcourse,pscore);
	printf("\n");
	fail2(pcourse,pnum,pscore, paver);
	printf("\n");
	good(pcourse,pnum,pscore,paver);
	return 0;

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

}
//求第一课程的平均成绩
void avg(char (*pcourse)[10],float *pscore){
	int i;
	float sum=0.0,average1;
	for(i=0;i<4;i++)
		sum=sum+(*(pscore+5*i));
	average1=sum/4;
	printf("course 1:%s average score :%7.2f\n",*pcourse,average1);
}
//找两门以上不及格的学生的函数
void fail2(char course[5][10],int num[],float *pscore,float aver[4]){
	int i,j,k,label;
	printf("=============Student who is fail in two courses=======\n");
	printf("NO.");
	for(i=0;i<5;i++)
		printf("%11s",course[i]);
	printf("	average\n");
	for(i=0;i<4;i++){
		label=0;
		for(j=0;j<5;j++)
			if(*(pscore+5*i+j)<60.0) label++;
		if(label>=2)
		{
			printf("%d",num[i]);
			for(k=0;k<5;k++)
				printf("%11.2f",*(pscore+5*i+k));
			printf("%11.2f\n",aver[i]);
		}

	}

}
//找出成绩优秀的学生(各门成绩在85以上或平均分在90分以上)的函数
void good(char course[5][10],int num[4],float *pscore,float aver[4]){
	int i,j,k,n;
	printf("=============Student who is fail in two courses=======\n");
	printf("NO.");
	for(i=0;i<5;i++)
		printf("%11s",course[i]);
	printf("	average\n");
	for(i=0;i<4;i++){
		n=0;
		for(j=0;j<5;j++)
			if(*(pscore+5*i+j)>85) n++;
		if(n==5||aver[i]>=90){
			printf("%d",num[i]);
			for(k=0;k<5;k++)
				printf("%11.2f",*(pscore+5*i+k));
			printf("%11.2f\n",aver[i]);
		
		}
	}
}

运行结果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值