C语言——二维数组应用

专题1:将二维数组作为矩阵处理

例:设有 5*5方阵

 

  0 1 2 3 4
a[0]          
a[1]          
a[2]          
a[3]          
a[4]          

/* 二维数组输入 */

for( int i = 0; i < 6; i ++)
{
    for(int j = 0; j < 6; j ++)
    (
        scanf("%d", &a[i][j]);         //  a[i]+j
    )
)


/* 二维数组输出 */

for( int i = 0; i < 6; i ++)
{
    for(int j = 0; j < 6; j ++)
    (
        pirntf("%3d", a[i][j]);         //  a[i]+j
    )
    printf("\n");
)

1:输出该方阵所有元素


2:输出该方阵周边元素之和

 

分析一:整体 - 内部

#include 
#define N 5
int main(void)
{
    int i, j;
    int a[N][N];
    int sum = 0;
    for(i = 0; i < N; i ++)
    {
        for(j = 0; j < N; j ++)
        {
            scanf("%d",&a[i]+j);
            sum += a[i][j];                  // 整体元素和
        }
    }
    
    //  内部元素和
    for(i = 1; i < N-1; i ++)
    {
        for(j = 1; j < N-1; j ++)
        {
            sum -= a[i][j];
        }
    }
    
    printf("%d", sum);
    return 0;
}

分析二:直接外圈分析求和

#include 
#define N 5
int main(void)
{
    int i, j;
    int a[N][N];
    int sum = 0;
    for(i = 0; i < N; i ++)
    {
        for(j = 0; j < N; j ++)
        {
            scanf("%d",&a[i]+j);

            // 外部元素直接求和
            if( i == 0 || i == N-1 || j == 0 || j == N-1)
                sum += a[i][j];
        }
    }
    
    printf("%d", sum);
    return 0;
}

3:求两条对角线元素之和

方法:分析下标关系,一次性遍历求和

#include 
#define N 5
int main(void)
{
    int i, j;
    int a[N][N];
    int sum = 0;
    for(i = 0; i < N; i ++)
    {
        for(j = 0; j < N; j ++)
        {
            scanf("%d",&a[i]+j);
            
            //  分析下标
            if( i == j || i+j == N-1 )
                sum += a[i][j];
        }
    }
    
    printf("%d", sum);
    return 0;
}

4:求该方阵的转置方阵

思路分析:行列交换,从下标分析


#include 
#define N 5
int main(void)
{
    int i, j;
    int a[N][N];
    int swap;
    for(i = 0; i < N; i ++)
    {
        for(j = 0; j < N; j ++)
        {
            scanf("%d",&a[i][j]);
        }
    }
 
    // 核心    
    for(i = 0; i < N-1; i ++)
    {
        for(j = i+1; j < N; j ++)
        {
            swap = a[i][j];
            a[i][j] = a[j][i];
            a[j][i] = swap;
        }
    }
    
    for(i = 0; i < N; i ++)
    {
        for(j = 0; j < N; j ++)
        {
            printf("%d  ",a[i][j]);
        }
        printf("\n");
    }
    return 0;
}

5:螺旋方阵:N阶方阵,1~N*N的数以螺旋状填入

6:鞍点判断

7:矩阵乘法

 

 

你可能感兴趣的:(蓝桥杯基础练习,c语言,算法)