第十次实验作业

时间:2022-09-04 21:31:02

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

#include<stdio.h>
#define M 6
#define N 5
int main()
{
int i,j,f=0,sum;
double ave,a[6][5]={56,78,98,0,0,63,78,82,0,0,69,79,95,0,0,95,86,46,0,0,63,67,89};
for(i=0;i<5;i++)
{
sum
=0;
for(j=0;j<3;j++)
{
sum
=sum+a[i][j];
ave
=0;
}
a[i][
3]=sum;
ave
=(double)sum/3;
a[i][
4]=ave;
}
printf(
" 语文 数学 英语 总分 平均分");
printf(
"\n");
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
printf(
" ");
printf(
"%.2f ",a[i][j]);
f
++;
}
if(j==5)
{
printf(
"\n");
}
}
for(i=0;i<5;i++)
{
sum
=0;
for(j=0;j<5;j++)
{
sum
=sum+a[j][i];
ave
=0;
ave
=(double)sum/5;
a[i][
6]=ave;
}
}
printf(
"平均分");
for(i=0;i<5;i++)
{
printf(
"%.2f ",a[i][6]);
}
printf(
"\n");
return 0;
}

 

       第十次实验作业            

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

#include<stdio.h>
#define N 5
int main()
{
int n,i,j,hangsum,liesum,duisum1,duisum2,a[N][N]={0};
for(i=0;i<N;i++)
for(j=0;j<N;j++)
{
a[i][j]
=n;
n
++;
printf(
"%3d",a[i][j]);
}
printf(
"\n");
for(i=0;i<N;i++)
{
hangsum
=0;
for(j=0;j<N;j++)
{
hangsum
+=a[i][j];
}
printf(
"第%d行的元素之和为%d\n",i+1,hangsum);
}
for(j=0;j<N;j++)
{
liesum
=0;
for(i=0;i<N;i++)
{
liesum
+=a[i][j];
}
printf(
"第%d列的元素之和为%d\n",j+1,liesum);
}
for(i=0;i<N;i++)
{
duisum1
=0;
duisum2
=0;
for(j=0;j<N;j++)
{
duisum1
=a[0][0]+a[1][1]+a[2][2]+a[3][3]+a[4][4];
duisum2
=a[0][4]+a[1][3]+a[3][1]+a[4][0];
}
}
printf(
"左上到右下对角线的和为%d\n",duisum1);
printf(
"左下到右上对角线的和为%d\n",duisum2);
return 0;
}

 

第十次实验作业

 

 二、实验总结(实验中遇到的问题及解决方法) 

1.注意不要越界。

2.在声明函数的二维数组形参时,可以省略第一维的长度,但不能省略数组第二维的长度。

3.在求和的时候要在循环里边给sum附初始值。