第十次作业

 

一、实验内容

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

1.1 代码:

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

1.2 程序运行结果:

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

 2.1 代码:

#include <stdio.h>
#define M 5
int main()
{
	int a,i,j,score[M][M]={0},sum1,sum2,sum3,sum4;
	printf("请输入行数(列数)
");
	scanf("%d",&a);
	printf("请输入数字
"); 
	for(i=0;i<a;i++)
	{
		for(j=0;j<a;j++)
		{
			scanf("%d",&score[i][j]);
			printf("%d",score[i][j]);
		}
		printf("
");
	}
	for(i=0;i<a;i++)
	{
		sum1=0;
		for(j=0;j<a;j++)
		{
			sum1+=score[i][j];
		}
		printf("第%d行的和为%d
",i+1,sum1);
	}
	for(j=0;j<a;j++)
	{
		sum2=0;
		for(i=0;i<a;i++)
		{
			sum2+=score[i][j];
		}
		printf("第%d列的和为%d
",j+1,sum2);
	}
	sum3=0;
	for(i=0;i<a;i++)
	{
		for(j=0;j<a;j++)
		{
			if(i==j)
			{
				sum3+=score[i][j];
			}
		}
	}
		printf("对角线的和为%d
",sum3);
	sum4=0;
	for(i=0;i<a;i++)
	{
		for(j=0;j<a;j++)
		{
			if(i+j==a-1)
			{
				sum4+=score[i][j];
			}
		}
	}
	printf("副对角线的和为%d",sum4);
	return 0;
} 

2.2 程序运行结果:

二、实验总结

1.计算每个变量的时候都要重新赋值。

2.函数不用返回值。因为平均值数组是通过参数数组传过来的,可以把函数计算的平均值带回去

3.如果对数组每行求平均,那么平均值是多个,应该存放在一个数组里面,函数参数应该有一个存放平均值的数组

原文地址:https://www.cnblogs.com/wei530/p/6159088.html