1 #include <stdio.h> 2 3 #include <stdlib.h> 4 5 int main() 6 7 { 8 9 int a[5][3] = { { 80,75,92 },{ 61,65,71 },{ 59,63,70 },{ 85,87,90 },{ 76,77,85 } }, j, k; 10 11 float sum1 = 0, sum2 = 0, sum3 = 0, ave = 0; 12 13 for (k = 0; k < 3; k++) 14 15 { 16 17 for (j = 0; j < 5; j++) 18 19 { 20 21 switch (k) 22 23 { 24 25 case 0: 26 27 sum1 += a[j][k]; 28 29 if(j>3) 30 31 { 32 33 printf("The math average scores is %5.2f ", sum1 / 5.0); 34 35 } 36 37 break; 38 39 case 1: 40 41 sum2 += a[j][k]; 42 43 if (j > 3) 44 45 { 46 47 printf("\n\n\tThe c average scores is %5.2f ", sum2 / 5.0); 48 49 } 50 51 break; 52 53 case 2: 54 55 sum3 += a[j][k]; 56 57 if (j > 3) 58 59 { 60 61 printf("\n\n\t\tThe foxpro average scores is %5.2f", sum3 / 5.0); 62 63 } 64 65 break; 66 67 default: 68 69 printf("Please input again!\n"); 70 71 } 72 73 } 74 75 ave = (sum1 + sum2 + sum3) / 3; 76 77 if (k > 1) 78 79 { 80 81 printf("\n\n\n\t\tThe total average is %5.2f\n", ave); 82 83 } 84 85 } 86 87 system("pause"); 88 89 return 0; 90 91 }
这个东西有点长哦!!自己编写的。
#include <stdio.h> #include <stdlib.h> int main() { int i, j, s = 0, average, v[3]; int a[5][3] = { {80,75,92},{61,65,71},{59,63,70},{85,87,90},{76,77,85} }; for (i = 0; i < 3; i++) { for (j = 0; j < 5; j++) { s = s + a[j][i]; } v[i] = s / 5; s = 0; } average = (v[0] + v[1] + v[2]) / 3; printf("math:%d\nc language:%d\ndFoxpro:%d\n", v[0], v[1], v[2]); printf("total:%d\n", average); system("pause"); return 0; }
首先是自己的,首先我们肯定是横向计算5个人,以学科为主,这样,我就应该定3那个,在我的答案中,也就是k(嵌套循环,外层循环,等待内层循环进行),然后在内层循环进行变,来计算这一科的平均分,而,k从0到2,代表3个学科,所以我就用了case来选择(case相当于else if),特别要注意,if语句不能把sum的计算包括进去,包括进去会造成,sum就只运算符合if语句那次。
答案的话,首先好在用一个一维数组v[i]代替了我的的switch...case语句,简便很多,但需要我注意for循环内层语句,for不能包括v[i]=s/5 s=0进去,因为包括进去,会造成多个v[i]输出,,额但是i唯一,所以只会输出最后一个的值,但这样会浪费计算时间,最后一个为答案,s归0又使得变量无法计算5个人一科成绩,只计算一个人/5。