將一個5*5 矩陣中最大的放在中間,四個角分別放最小的資料,順序分別是左右上下,通過函式完成。

風塵璞發表於2016-10-03

#include <stdio.h>

void init_tab(int tab[][5])
{
    int i, j;
    for(i = 0; i < 5; i++)
    {
        for(j = 0; j < 5; j++)
            tab[i][j] = i * 5 + j;
    }
}
int dis_tab(int tab[][5])
{
    int i, j;
    for(i = 0; i < 5; i++)
    {
        for(j = 0; j < 5; j++)
            tab[i][j] = i * 5 + j;

        printf("tab[%d][%d] = %d\n",i, j, tab[i][j]);
    }
    putchar('\n');
}

void cpy_tab(int dst[25], int src[5][5])
{
    int i, j;

    for(i = 0; i < 5; i++)
    {
        for(j = 0; j < 5; j++)
        {
            *dst++ = src[i][j];
        }
    }
}

void dos_tab(int * tmp)
{
    int i;

    for(i = 0; i < 25; i++)
    {
        printf("tmp:[%d]\n", tmp[i]);
    }
}

void sort_tab(int * tmp)
{
    int i, j;
    int tmp1;

    for(i = 0; i < 25 - 1; i++)
    {
        for(j = i + 1; j < 25; j++)
        {
            if(tmp[i] > tmp[j])
            {
                tmp1 = tmp[i];
                tmp[i] = tmp[j];
                tmp[j] = tmp1;
            }
        }
    }
}

void swap_tab(int * a, int *b)
{
    int tmp;
    tmp = *a;
    *a = *b;
    *b = tmp;
}

void deal_tab(int tab[][5])
{
    int tmp[25];
    int i , j;

    cpy_tab(tmp, tab);
    dis_tmp(tmp);
    printf("***************\n");
    sort tab(tmp);
    dis_tmp(tmp);
    printf("******************\n");

    for(i = 0; i < 5; i++)
    {
        for(j = 0; j < 5; j++)
        {
            if(tab[i][j] == tmp[24])
            {
                swap_tab(&tab[i][j], &tab[i][j]);
            }
            if(tab[i][j] == tmp[0])
            {
                swap_tab(&tab[i][j], &tab[0][0]);
            }
            if(tab[i][j] == tmp[1])
            {
                swap_tab(&tab[i][j],&tab[0][4]);
            }
        }
    }
}



int main()
{
    int tab[5][5];

    init_tab(tab);
    dis_tab(tab);
    cpy_tab(tab);
    swap_tab(tab);
    deal_tab(tab);
    sort_tab(tab);
    dos_tab(tab);
    return 0;
}


相關文章