第十次作业
1.有5名学生,每名学生有语文、数学和外语3门课的考试成绩。编程统计各学生的总分和平均分以及所有学生各科的平均分。要求成绩在程序中初始化,结果以表格的形式输出。
#include<stdio.h>
#define N 3
#define M 5
void readScore(int score[M][M]);
void aveforStud(int score[M][M],double ave[M][M]);
void aveforCourse(int score[M][M],double asd[4]);
int main()
{
int score[M][M],i,j;
double ave[M][M],asd[4];
readScore(score);
aveforStud(score,ave);
printf(" 语文 数学 英语 总分 平均分\n");
for(i=0;i<M;i++)
{
for(j=0;j<4;j++)
{
printf(" %8d",score[i][j]);
}
printf("% 8.2f\n",ave[i][4]);
printf("\n");
}
aveforCourse(score,asd);
printf("平均分");
for(i=0;i<4;i++)
{
printf("%7.2f ",asd[i]);
}
}
void readScore(int score[M][M])
{
int j,i,sum=0;
printf("输入成绩");
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 ave[M][M])
{
int i;
for(i=0;i<M;i++)
{
ave[i][4]=score[i][3]/3.0;
}
}
void aveforCourse(int score[M][M],double asd[4])
{
int i,j,sum;
for(i=0;i<4;i++)
{
sum=0;
for(j=0;j<5;j++)
{
sum+=score[j][i];
}
asd[i]=sum/5.0;
}
}

2.求任意方阵每行、每列、两对角线上元素之和。
#include<stdio.h>
#define N1 100
#define N2 100
int main()
{
int zhen[N1][N2],n1,i,j,sum;
printf("请输入方阵的行数:");
scanf("%d",&n1);
for(i=0;i<n1;i++)
{
printf("请输入第%d行的数\n",i+1);
for(j=0;j<n1;j++)
{
scanf("%d",&zhen[i][j]);
}
}
for(i=0;i<n1;i++)
{
printf("\n");
for(j=0;j<n1;j++)
{
printf(" %d ",zhen[i][j]);
}
}
for(i=0;i<n1;i++)
{
sum=0;
for(j=0;j<n1;j++)
{
sum+=zhen[i][j];
}
printf("\n方阵第%d行的和为:%d",i+1,sum);
}
for(j=0;j<n1;j++)
{
sum=0;
for(i=0;i<n1;i++)
{
sum+=zhen[i][j];
}
printf("\n方阵第%d列的和为:%d",j+1,sum);
}
sum=0;
for(i=0;i<n1;i++)
{
for(j=0;j<n1;j++)
{
if(i==j)
{
sum+=zhen[i][j];
}
}
}
printf("\n对角线元素之和为%d",sum);
sum=0;
for(i=0;i<n1;i++)
{
for(j=0;j<n1;j++)
{
if(i+j==n1-1)
sum+=zhen[i][j];
}
}
printf("\n对角线元素之和为%d",sum);
return 0;
}

实验总结:
1、注意循环嵌套
2、测试时可以先用简单的数进行测试
3、\b为退格 1字符长度 \t 4个字符

浙公网安备 33010602011771号