1.有5名学生,每名学生有语文、数学和外语3门课的考试成绩。编程统计各学生的总分和平均分以及所有学生各科的平均分。要求成绩在程序中初始化,结果以表格的形式输出。
1 #include<stdio.h> 2 #define M 5 3 #define N 5 4 void aveforcourse1(int score[5][5] ,double average1[]); 5 void aveforcourse2(int score[5][5] ,double average2[]); 6 void readscore(int score[M][N]); 7 int main() 8 { 9 int i,j,sum=0,score[5][5]; 10 double average1[5],average2[5]; 11 readscore(score); 12 aveforcourse1(score,average1); 13 aveforcourse2(score,average2); 14 printf(" 语文 数学 英语 总分 平均值 "); 15 for(i=0;i<M;i++) 16 { 17 18 printf(" "); 19 for(j=0;j<4;j++) 20 { 21 printf(" %d",score[i][j]); 22 } 23 printf("%12.2f",average1[i]); 24 } 25 printf(" 平均值 "); 26 for(i=0;i<3;i++) 27 { 28 printf(" %.2f",average2[i]); 29 } 30 return 0; 31 } 32 void aveforcourse1(int score[5][5],double average1[]) 33 { 34 int i,j,sum; 35 for(i=0;i<M;i++) 36 { 37 sum=0; 38 for(j=0;j<3;j++) 39 { 40 sum+=score[i][j]; 41 } 42 average1[i]=(double)sum/3; 43 44 } 45 } 46 void aveforcourse2(int score[5][5],double average2[]) 47 { 48 int i,j,sum; 49 for(i=0;i<3;i++) 50 { 51 sum=0; 52 for(j=0;j<5;j++) 53 { 54 sum+=score[j][i]; 55 } 56 average2[i]=(double)sum/5; 57 58 } 59 } 60 void readscore(int score[M][M]) 61 { 62 int i,j,sum; 63 printf("输入 "); 64 for(i=0;i<M;i++) 65 { 66 sum=0; 67 printf("第%d个人: ",i+1); 68 for(j=0;j<3;j++) 69 { 70 scanf("%d",&score[i][j]); 71 sum+=score[i][j]; 72 } 73 score[i][3]=sum; 74 } 75 76 }
2.求任意方阵每行、每列、两对角线上元素之和。
1 #include<stdio.h> 2 #define N 99 3 int main() 4 { 5 int x,sum,shu[N][N],i,j,y; 6 printf("输入方阵的长:"); 7 scanf("%d",&x); 8 for(i=0;i<x;i++) 9 { 10 for(j=0;j<x;j++) 11 { 12 y++; 13 shu[i][j]=y; 14 printf("%4d",y); 15 } 16 printf(" "); 17 } 18 printf(" "); 19 for(i=0;i<x;i++) 20 { 21 sum=0; 22 for(j=0;j<x;j++) 23 { 24 sum=sum+shu[i][j]; 25 26 } 27 printf("第%d行的和为%d ",i+1,sum); 28 } 29 for(j=0;j<x;j++) 30 { 31 sum=0; 32 for(i=0;i<x;i++) 33 { 34 sum=sum+shu[i][j]; 35 36 } 37 printf("第%d列的和为%d ",j+1,sum); 38 } 39 sum=0; 40 for(i=0;i<x;i++) 41 { 42 for(j=0;j<x;j++) 43 { 44 if(i==j) 45 { 46 sum=sum+shu[i][j]; 47 } 48 } 49 } 50 printf("左上-右下的数的和为%d ",sum); 51 sum=0; 52 for(i=0;i<x;i++) 53 { 54 for(j=x;j>=0;j--) 55 { 56 if(i==j) 57 { 58 sum=sum+shu[i][j]; 59 } 60 } 61 } 62 printf("右上-左下的数的和为%d ",sum); 63 return 0; 64 }
二、实验总结(实验中遇到的问题及解决方法)
1主要是思路上的问题,如果有大局观就没有问题,但是连四路都没有。
2条理要清晰,以便改正是方便下手。
3运用for循环时不一定从小到大,思维要灵活。