Linux C 编程详解第五篇:二维数组

2017-02-18  本文已影响0人  Mr_Ray

二维数组 :

练习 :

1.找出二维数组中的最大值, 如果有多个最大值, 找出其位置以及数值.(不要排序).
#include <stdio.h>

int main(int argc, const char *argv[])
{
    int a[3][4] = {{1,23,4,23}, {234,123,342,45}, {342,45,234,67}};
    int i, j;
    int max = a[0][0];

    for(i = 0; i < 3; i++)
    {
        for(j = 0; j < 4; j++)
        {
            if(max < a[i][j])
            {
                max = a[i][j];
            }
        }

    }

    for(i = 0; i < 3; i++)
    {
        for(j = 0; j < 4; j++)
        {
            if(max == a[i][j])
            {
                printf("最大值为: a[%d][%d] = %d \n", i, j, a[i][j]);
            }
        }
    }

    return 0;
}
2.行列互换. (不允许另外增加存储空间).
#include <stdio.h>

int main(int argc, const char *argv[])
{
    int a[4][4] = {{1,2,3,4}, {5,6,7,8}, {9,10,11,12}, {13,14,15,16}};
    int i, j;
    int temp;

    for(i = 0; i < 4; i++)
    {
        for(j = 0; j < i; j++)
        {
            temp = a[i][j];
            a[i][j] = a[j][i];
            a[j][i] = temp;
        }
    }

    for(i = 0; i < 4; i++)
    {
        for(j = 0; j < 4; j++)
        {
            printf("%2d ",a[i][j]);
        }
        printf("\n");
    }
    return 0;
}
3.找出数组中的特殊值,为一行中的最大值, 同时为一列中的最小值.
#include <stdio.h>

int main(int argc, const char *argv[])
{
    int a[3][4] = {{1,2,3,7}, {3,4,5,8}, {1,2,3,9}};
    int i, j, k;
    int x, y;
    int temp, max, min;

    for(i = 0; i < 3; i++)
    {
        max = a[i][0];
        y = 0;
        for(j = 0; j < 4; j++)
        {
            if(max < a[i][j])
            {
                max = a[i][j];
                y = j;
            }
        }
        min = a[i][y];
        x = i;
        for(k = 0; k < 3; k++)
        {
            if(min > a[k][y])
            {
                min = a[k][y];
                x = k;
            }
        }
        if(x == i)
        {
            printf("特殊值为:a[%d][%d] = %d\n", x, y, a[x][y]);
        }
    }
    return 0;
}
上一篇 下一篇

猜你喜欢

热点阅读