一、实验内容
1.有5名学生,每名学生有语文、数学和外语3门课的考试成绩。编程统计各学生的总分和平均分以及所有学生各科的平均分。要求成绩在程序中初始化,结果以表格的形式输出。
#include<stdio.h>
#define N 5
#define M 3
int main()
{
int fen[N][M]={{100,99,98},{97,96,95},{94,93,92},{91,90,89},{88,87,86}},sum1,sum2,i,j,a=0;
double ave1,ave2,b=0,c=0,d=0;
printf(" 语文 数学 英语 总分 平均分\n ");
sum1=0;
sum2=0;
ave1=0;
ave2=0;
for(i=0;i<N;i++) // 5行
{
for(j=0;j<M;j++) //三列
{
printf("%d\t",fen[i][j]);
a++;
sum1=sum1+fen[i][j];
ave1=sum1/3;
if(a%3==0)
{
printf("%d\t%.2lf\n\t",sum1,ave1);
sum1=0;
}
if(j==0)
{
b=b+fen[i][j];
}
if(j==1)
{
c=c+fen[i][j];
}
if(j==2)
{
d=d+fen[i][j];
}
}
}
printf("\b\b\b\b\b\b\b\b平均分\t%.2f\t%.2f\t%.2f",b/5,c/5,d/5);
return 0;
}
2.求任意方阵每行、每列、两对角线上元素之和。
#include<stdio.h>
#define N 3 //HANG
#define M 3 //LIE
int main()
{
int queue[N][M]={{1,2,3},{1,2,3},{1,2,3}},a,b,c,lie1=0,lie2=0,lie3=0,hang1=0,hang2=0,hang3=0,xie1=0,xie2=0,i;
for(a=0;a<N;a++)
{
for(b=0;b<M;b++)
{
printf("\t%d\t",queue[a][b]);
c++;
if(c%3==0)
{
printf("\n");
}
}
}
for(i=0;i<3;i++)
{
hang1=hang1+queue[0][i];
hang2=hang2+queue[1][i];
hang3=hang3+queue[2][i];
lie1=lie1+queue[i][0];
lie2=lie2+queue[i][1];
lie3=lie3+queue[i][2];
xie1=xie1+queue[i][i];
xie2=xie2+queue[i][N-1-i];
}
printf("第一行的和为%d\n",hang1);
printf("第二行的和为%d\n",hang2);
printf("第三行的和为%d\n",hang3);
printf("第一列的和为%d\n",lie1);
printf("第二列的和为%d\n",lie2);
printf("第三列的和为%d\n",lie3);
printf("斜向右下的和为%d\n",xie1);
printf("斜向左下的和为%d\n",xie2);
return 0;
}
实验总结:
1、注意循环嵌套
2、测试时可以先用简单的数进行测试
3、\b为退格 1字符长度 \t 4个字符
4、二维数组的第一个[]中可以省略,第二个则不可以