向函数传递二维数组问题(实例)

//向函数传递二维数组问题实例
#include<stdio.h>
#define student_N 40 
#define course_N  3
void ReadScore(int score[][course_N],long num[],int n);
void AverforStud(int score[][course_N],int sum[],int n,float aver[]);
void Averforcourse(int score[][course_N],int sum[],int n,float aver[]);
void Print(int score[][course_N],
long num[],int sumS[],
float averS[],int sumC[],float averC[],int n);//调用函数时(注意函数形参与调用函数时的变量互相对应) 

int main()
{
	int score[student_N][course_N],
	sumS[student_N],sumC[course_N],n;
	long num[student_N];
	float averS[student_N],averC[course_N];
	printf("input the total number of  the students:");
	scanf("%d",&n);
	ReadScore(score,num,n);         //成绩,人数,学号读入 
	AverforStud(score,sumS,n,averS);//计算每个学生总分平均分 
	Averforcourse(score,sumC,n,averC);        // 科目平均分 
	Print(score,num,sumS,averS,sumC,averC,n);
	//Print(num,score,sumS,averS,sumC,n,averC);   //成绩输出 
	return 0;
} 


void ReadScore(int score[][course_N],long num[],int n)
{
	printf("input student ID and score  as:MT  EN   PH:\n");
	for(int i=0;i<n;i++)
	{
		scanf("%ld",&num[i]);
		for(int j=0;j<course_N;j++)
		{
			scanf("%d",&score[i][j]);
		}
	}
}void AverforStud(int score[][course_N],
int sum[],int n,float aver[])
{
	for(int i=0;i<n;i++)
	{
		sum[i]=0;
		for(int j=0;j<course_N;j++)
		{
			sum[i]=sum[i]+score[i][j]; 
		}
		aver[i]=(float)sum[i]/course_N;
	}
}



void Averforcourse(int score[][course_N],
	int sum[],int n,float aver[])
	{
		for(int j=0;j<course_N;j++)
		{
			sum[j]=0;
			for(int i=0;i<n;i++)
			{
				sum[j]=sum[j]+score[i][j]; 
			}
			aver[j]=(float)sum[j]/n;
		}
	}

//计算每门课程的平均分和总分 
void Print(int score[][course_N],
long num[],int sum[],int sumS[],int n,
float averC[],float averS[],int sumC[])
{
	int i,j;
	printf("student ID\t MT\t  EN\t  PH\t  SUM\t AVER\t");
	for(i=0;i<n;i++)
	{
		printf("%12ld",num[i]);
		//学号打印
		for(j=0;j<=course_N;j++) 
		{
			printf("%4d\t",score[i][j]);
		}
		printf("%4d\t %5.lf\n",sumS[i],averS[i]);
		printf("SumofCourse\t");
		for(j=0;j<=course_N;j++)
		{
			printf("%4d\t",sumC[j]);
		 }  
		 printf("\nAverforcourse\t");
		 for(j=0;j<=course_N;j++)
		 {
		 	printf("%4.lf\t",averC[j]);		 	
		 }
		 printf("\n");
    }
} 

猜你喜欢

转载自blog.csdn.net/CSDN447447LJH/article/details/91449870