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("\t语文\t数学\t英语\t总分\t平均值\n");
15 for(i=0;i<M;i++)
16 {
17
18 printf("\n");
19 for(j=0;j<4;j++)
20 {
21 printf("\t%d",score[i][j]);
22 }
23 printf("%12.2f",average1[i]);
24 }
25 printf("\n平均值\n");
26 for(i=0;i<3;i++)
27 {
28 printf("\t%.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("输入\n");
64 for(i=0;i<M;i++)
65 {
66 sum=0;
67 printf("第%d个人:\n",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("\n");
17 }
18 printf("\n");
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\n",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\n",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\n",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\n",sum);
63 return 0;
64 }

二、实验总结(实验中遇到的问题及解决方法)
1主要是思路上的问题,如果有大局观就没有问题,但是连四路都没有。
2条理要清晰,以便改正是方便下手。
3运用for循环时不一定从小到大,思维要灵活。
来源:http://www.cnblogs.com/yeqingsong/p/6146388.html