1.题目:
有5名学生,每名学生有语文、数学和外语3门课的考试成绩。编程统计各学生的总分和平均分以及所有学生各科的平均分。要求成绩在程序中初始化,结果以表格的形式输出。
代码:
#include <stdio.h>
#define M 5
#define N 3
void Score(int score[M][N]);
void aveforstudent(int score[M][N],double average1[]);
void aveforsubject(int score[M][N],double average2[]);
int main()
{
int score[M][N],i,j,sum1;
double average1[M],average2[N];
Score(score);
aveforstudent(score,average1);
aveforsubject(score,average2);
printf("\t语文\t数学\t英语\t总分\t平均分\n");
for(i=0;i<M;i++)
{
printf("学生%d\t",i+1);
sum1=0;
for(j=0;j<N;j++)
{
printf("%d\t",score[i][j]);
sum1=sum1+score[i][j];
}
printf("%d\t",sum1);0
printf("%.2f",average1[i]);
printf("\n");
}
printf("平均分\t");
for(j=0;j<N;j++)
{
printf("%.2f\t",average2[j]);
}
return 0;
}
void aveforstudent(int score[M][N],double average1[])
{
int i,j,sum;
for(i=0;i<M;i++)
{
sum=0;
for(j=0;j<N;j++)
{
sum=sum+score[i][j];
}
average1[i]=(double)sum/N;
}
}
void aveforsubject(int score[M][N],double average2[])
{
int i,j,sum;
for(j=0;j<N;j++)
{
sum=0;
for(i=0;i<M;i++)
{
sum=sum+score[i][j];
}
average2[j]=(double)sum/M;
}
}
void Score(int score[M][N])
{
int i,j;
for(i=0;i<M;i++)
{
printf("请输入第%d个学生成绩\n",i+1);
for(j=0;j<N;j++)
{
scanf("%d",&score[i][j]);
}
}
}
运行结果:

2.
题目:
求任意方阵每行、每列、两对角线上元素之和。
代码:
#include<stdio.h>
#define M 3
#define N 3
int main()
{
int num[M][N],i,j,a,b,sum1,sum2,sum3,sum4;
printf("请输入任意九个数,组成方阵\n");
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
scanf("%d",&num[i][j]);
}
}
printf("方阵为:\n");
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
if(j%3==0)
{
printf("\n");
}
printf("%3d",num[i][j]);
}
}
printf("\n");
for(a=0;a<M;a++)
{
sum1=0;
sum2=0;
for(b=0;b<N;b++)
{
sum1=sum1+num[a][b];
sum2=sum2+num[b][a];
}
printf("第%d行的元素之和为%d\n",a+1,sum1);
printf("第%d列的元素之和为%d\n",a+1,sum2);
}
sum3=num[0][0]+num[1][1]+num[2][2];
sum4=num[0][2]+num[1][1]+num[2][0];
printf("从左上到右下的对角线元素之和为%d\n从左下到右上的对角线元素之和为%d",sum3,sum4);
return 0;
}
运行结果:

实验总结:
1.编写时要清醒,方便错误时查看,要仔细对应函数
2.理解题意,先从特殊值考虑有时候也能考虑出来结果
3.注意函数类型
4.分析理解题意
浙公网安备 33010602011771号