C言語による2次元配列の超基本的な扱い

yahoo知恵袋で次の質問投稿がありました。

c言語 2次元配列に関して質問です
添付した問題の点数の出力、if文での判定がうまくできません
分かる方がいましたら教えてください

質問者は大学生でしょうか。
このような少し勉強すればわかるような課題について、解答を丸ごと求めるような質問は、ふざけているようにしか思えません。
また、もしこれにまともに回答する人がいたならば、それも非常に問題があると思います。

本題ですが、この課題の解答例を以下に示します。

 1#include <stdio.h>
 2
 3int main (void){
 4    int x;
 5    int sum[10];
 6    int matrix[][10] = {
 7        {87, 45, 77, 93, 59, 60, 41, 70, 80, 49},
 8        {78, 65, 82, 97, 55, 87, 45, 65, 72, 51},
 9    };
10
11    for(x=0; x<10; x++){
12        sum[x] = matrix[0][x] + matrix[1][x];
13        if (sum[x] >= 150) {
14            /* 150点以上は優秀 */
15            printf("数学%3d, 英語%3d, 合計%4d: 優秀\n", matrix[0][x], matrix[1][x], sum[x]);
16        } else if(sum[x] >= 120){
17            /* 120点以上150点未満は合格 */
18            printf("数学%3d, 英語%3d, 合計%4d: 合格\n", matrix[0][x], matrix[1][x], sum[x]);
19        } else {
20            /* 120点未満は不合格 */
21            printf("数学%3d, 英語%3d, 合計%4d: 不合格\n", matrix[0][x], matrix[1][x], sum[x]);
22        }
23    }
24    return 0;
25}