第十次

 1.有5名学生,每名学生有语文、数学和外语3门课的考试成绩。编程统计各学生的总分和平均分以及所有学生各科的平均分。要求成绩在程序中初始化,结果以表格的形式输出。

#include<stdio.h>
#define M 5
#define N 3
void score(int num[M][N]);
void aveforstudent(int num[M][N],double average1[]);
void aveforsubject(int num[M][N],double average2[]);
int main()
{
	int num[M][N],i,j,sum1;
	double average1[M],average2[N];
	score(num);
	aveforstudent(num,average1);
	aveforsubject(num,average2);
	printf("\t语文\t数学\t英语\t总分\t平均分\n");
	for(i=0;i<M;i++)
	{
	    printf("学生%d\t",i+1);
		sum1=0;
	    for(j=0;j<N;j++)
		{
            printf("%d\t",num[i][j]);
			sum1=sum1+num[i][j];
		}
		printf("%d\t",sum1);
		printf("%.2f",average1[i]);
		printf("\n");
	}
	printf("平均分\t");
	for(j=0;j<N;j++)
	{
		printf("%.2f\t",average2[j]);
	}
	return 0;
}
void score(int num[M][N])
{
	int i,j;
	for(i=0;i<M;i++)
	{
		printf("请分别输入第%d个学生的语文,数学,英语成绩:\n",i+1);
		for(j=0;j<N;j++)
		{
			scanf("%d",&num[i][j]);
		}
	} 
}
void aveforstudent(int num[M][N],double average1[])
{
	int i,j,sum;
	for(i=0;i<M;i++)
	{
		sum=0;
		for(j=0;j<N;j++)
		{
			sum=sum+num[i][j];
		}
		average1[i]=(double)sum/N;
	}
}
void aveforsubject(int num[M][N],double average2[])
{
	int i,j,sum;
	for(j=0;j<N;j++)
	{
		sum=0;
		for(i=0;i<M;i++)
		{
			sum=sum+num[i][j];
		}
		average2[j]=(double)sum/M;
	}
}
 

  

2.求任意方阵每行、每列、两对角线上元素之和。

#include<stdio.h>
#define M 3
#define N 3
int main()
{
	int num[M][N],i,j,a,b,sum1,sum2,sum3,sum4;
	printf("请输入任意九个数,组成方阵\n");
	for(i=0;i<M;i++)
	{
		for(j=0;j<N;j++)
		{
			scanf("%d",&num[i][j]);
		}
	}
	printf("方阵为:\n");
	for(i=0;i<M;i++)
	{
		for(j=0;j<N;j++)
		{
			if(j%3==0)
		    {
			    printf("\n");
		    }
		    printf("%3d",num[i][j]);
		}
	}
	printf("\n");
	for(a=0;a<M;a++)
	{
		sum1=0;
		sum2=0;
	    for(b=0;b<N;b++)
		{
		    sum1=sum1+num[a][b];
			sum2=sum2+num[b][a];
		}
		printf("第%d行的元素之和为%d\n",a+1,sum1);	
		printf("第%d列的元素之和为%d\n",a+1,sum2);
	}
	sum3=num[0][0]+num[1][1]+num[2][2];
	sum4=num[0][2]+num[1][1]+num[2][0];
	printf("从左上到右下的对角线元素之和为%d\n从左下到右上的对角线元素之和为%d",sum3,sum4);
	return 0;
}

  

 

 

实验总结

1.表格的输出使用\t,表示水平制表位,它的作用是将光标移到最接近8的倍数的位置,使得后面的输入从此开始,就是两个数间隔8个空格位置

2.计算学生的平均分时先遍历每个学生,计算课程的平均分先遍历每门课程

3.求方阵中每行每列元素之和时,存入二维数组要注意区分行和列

posted @ 2016-12-07 13:26  Burning~  阅读(214)  评论(1编辑  收藏  举报