1. 程式人生 > >C語言實驗——矩陣下三角元素之和

C語言實驗——矩陣下三角元素之和

C語言實驗——矩陣下三角元素之和

***此題的目的是 訓練指標的使用 ***

Problem Description
輸入一個正整數n(1<=n<=10),再輸入n*n的矩陣,要求求該矩陣的下三角元素之和。
Input
輸入包括n+1行。
第一行為整數n;
接下來的n行為矩陣資料。
Output
矩陣的下三角元素之和。
Sample Input
5
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
5 6 7 8 9
Sample Output
75
Hint
Source

#include <stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
int main()
{
    int n, i, j;
    scanf("%d", &n);
    int a[11][11];
    memset(a, 0, sizeof(a));
    for(i = 0; i < n; i++)
    {
        for(j = 0; j < n; j++)
        {
    //a是二維陣列首元素的地址,代表的是首行a[0]
    的起始地址&a[0],a + i代表a[i]行的首地址,
    即a[i]
            scanf("%d", (*(a + i) + j));
        }//二維陣列中元素a[i][j]的地址為 *(a + i) + j
    }//a + i為行指標,等於&a[i]
    int sum = 0;
    for(i = 0; i < n; i++)
    {
        for(j = 0; j <= i; j++)
        {
            sum += *(*(a + i) + j);
        }//元素a[i][j]的值表示為 *(*(a + i) + j)
    }
    printf("%d\n", sum);
    return 0;
}

這道題中的指標變數還可以有多種變換
例如:
元素a[i][j]的地址表示為:
(1)&a[i][j]  (2) a[i]+j  (3) *(a+i)+j
元素a[i][j]的值表示為:
(1)a[i][j]   (2) *(a[i] +j)  (3) *(*(a+i)+j)

a是二維陣列首元素的地址,代表的是首行a[0]的起始地址&a[0]。
a+i代表a[i]行的首地址,即&a[i] !!!請特別注意