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(" 语文 数学 英语 总分 平均分 "); for(i=0;i<M;i++) { printf("学生%d ",i+1); sum1=0; for(j=0;j<N;j++) { printf("%d ",score[i][j]); sum1=sum1+score[i][j]; } printf("%d ",sum1);0 printf("%.2f",average1[i]); printf(" "); } printf("平均分 "); for(j=0;j<N;j++) { printf("%.2f ",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个学生成绩 ",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("请输入任意九个数,组成方阵 "); for(i=0;i<M;i++) { for(j=0;j<N;j++) { scanf("%d",&num[i][j]); } } printf("方阵为: "); for(i=0;i<M;i++) { for(j=0;j<N;j++) { if(j%3==0) { printf(" "); } printf("%3d",num[i][j]); } } printf(" "); 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 ",a+1,sum1); printf("第%d列的元素之和为%d ",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 从左下到右上的对角线元素之和为%d",sum3,sum4); return 0; }
运行结果:
实验总结:
1.编写时要清醒,方便错误时查看,要仔细对应函数
2.理解题意,先从特殊值考虑有时候也能考虑出来结果
3.注意函数类型
4.分析理解题意