C语言实验——矩阵下三角元素之和 SDUT

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 
#include
#include
#include
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] !!!请特别注意

你可能感兴趣的:(SDUT,OJ,二维数组)