美文网首页
Linux C 编程详解第五篇:二维数组

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

作者: Mr_Ray | 来源:发表于2017-02-18 23:57 被阅读0次

    二维数组 :

    • 存储类型 数据类型 数组名[行数][列数]
    • 列数不能够省略 , 行数可以省略
    • 数组元素的引用 : 数组名[行标][列标]

    练习 :

    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;
    }
    

    相关文章

      网友评论

          本文标题:Linux C 编程详解第五篇:二维数组

          本文链接:https://www.haomeiwen.com/subject/ribdwttx.html