首页 > 代码库 > 第十次作业

第十次作业

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

#include <stdio.h>
#define M 5
#define N 3
void readScore(int score[M][M]);//输入函数 
void aveforStud(int score[M][M],double ave1[]);//计算每个学生的平均值 
void aveforCourse(int score[M][M],double ave2[]);//计算每门课程的平均分 
int main()
{
	int i,j,score[M][M];
	double ave1[M],ave2[M];
	readScore(score);
    aveforStud(score,ave1);
    aveforCourse(score,ave2);
    printf("       语文      数学      英语      总分      平均分"); 
    for(i=0;i<5;i++)
    { 
    
    	printf("\n");
    	for(j=0;j<4;j++)
    	{
    		printf("%10d",score[i][j]);
		}
		printf("%12.2f",ave1[i]);
	}
	printf("\n");
      printf("平均分"); 
      	for(j=0;j<N;j++)
	{
		printf("%4.2f      ",ave2[j]);
	}
   
	return 0;
}
void readScore(int score[M][M])
{
	int i,j,sum=0;
	printf("输入成绩\n"); 
	for(i=0;i<M;i++)
	{
		sum=0;
		printf("输入第%d个学生的成绩:\n",i+1);
		for(j=0;j<N;j++)
		{
			scanf("%d",&score[i][j]);
            sum+=score[i][j];
		}
			score[i][3]=sum;
	}
	
}
void aveforStud(int score[M][M],double ave1[])
{
	int i,j,sum;
	for(i=0;i<M;i++)
	{
		sum=0;
		for(j=0;j<N;j++)
		{
			sum+=score[i][j];
		}
	   ave1[i]=(double)sum/N;

    }
}
void aveforCourse(int score[M][M],double ave2[])
{
	int i,j,sum;
	for(j=0;j<N;j++)
	{
		sum=0;
		for(i=0;i<M;i++)
		{
			sum+=score[i][j];
		}
		ave2[j]=(double)sum/M; 
	}
}

  技术分享

 

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

#include <stdio.h>
#define N 100
int main()
{
	int a[N][N],i,j,m,n=0,sum=0;
	printf("输入行数\n");
	scanf("%d",&m);
	for(i=0;i<m;i++)
	{
		printf("\n");
		for(j=0;j<m;j++)
		{
		 n++;
		 a[i][j]=n;
		 printf("%4d",n);
		}
	}
	printf("\n");
	for(i=0;i<m;i++)
	{
		sum=0;
		for(j=0;j<m;j++)
		{
			sum+=a[i][j];
			
		}
		printf("第%d行的和为%d\n",i+1,sum);
	}
	for(j=0;j<m;j++)
	{
		sum=0;
		for(i=0;i<m;i++)
		{
			sum+=a[i][j];
			
		}
		printf("第%d列的和为%d\n",j+1,sum);
	}
	sum=0;
		for(i=0;i<m;i++)
	{
		for(j=0;j<m;j++)
		{
			if(i==j)
			{
			  sum+=a[i][j];
			}	
		}
	}
	printf("从左上到右下的对角线的和为%d\n",sum);
	sum=0;
	for(i=0;i<m;i++)
	{
		for(j=m;j>=0;j--)
		{
			if(i==j)
			{
			  sum+=a[i][j];
			}	
		}
	}
	printf("从右上到左下的对角线的和为%d\n",sum);
	return 0;
}

  技术分享

实验总结:1.注意使用一维或二维数组时,避免越界现象,造成输出错误结果。

              2.在输出表格形式的数据时使用二维数组。

              3.编写程序前一定要先思考大体程序结构,在进行编写。

              4.调用函数时,必须是已有函数,认真,细心。

第十次作业