文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>C程序习题-进行数组元素移动[10.10]

C程序习题-进行数组元素移动[10.10]

时间:2010-08-20  来源:chengxiaopeng

    将一个5*5的矩阵中的最大元素放在中心,4个角分别放上4个最小的元素(顺序为从左到右,从上到下顺序依次从小到大存放),写一函数实现之。用main函数调用。     我们遇到这道题,首先需要遍历整个矩阵,然后把最大元素,最小元素找到。然后将a[0][0]赋值为最小元素,将a[2][2]元素赋值为最大值。然后再依再找到第二小,第三小,第四小的元素。和剩下的三个角的元素进行替换。代码如下:  

#include <stdio.h>

void operate(int *);
void print_data(int *);
int main(int argc,char *argv[])
{
    int arr[5][5] = {{35,34,33,32,31},{30,29,28,27,26},{25,24,23,22,21},{20,19,18,17,16},{15,14,13,12,11}},*p,i;
    p = arr;
    printf("the soure data:\n");
    print_data(p);
    operate(p);
    printf("the result is :\n");
    print_data(p);
    system("pause");
    return 0;
}

void operate(int *arr)
{
    int i,j,temp;
    int *p,*max,*min;
    p = arr;
    max = p;
    min = p;
    for (i = 0; i < 5; i++)
    {
        for (j = 0; j < 5;j++)
        {
            if (*(p + 5 * i + j) > *max)
            {
               max = p + 5 * i + j;
            }
            if (*(p + 5 * i + j) < *min)
            {
               min = p + 5 * i + j;
            }
        }
    }
    
    p = arr;
    temp = *(p + 5 * 2 + 2);
    *(p + 5 * 2 + 2) = *max;
    *max = temp;
    
    p = arr;
    temp = *p;
    *p = *min;
    *min = temp;
    
    p = arr;
    min = p + 1;
    for (i = 0; i < 5; i++)
    {
        for (j = 0; j < 5;j++)
        {
            if ((p + 5 * i + j != p) && *(p + 5 * i + j) < *min)
            {
               min = p + 5 * i + j;
            }
        }
    }
    p =arr;
    temp = *(p + 0 * 5 + 4);
    *(p + 0 * 5 + 4) = *min;
    *min = temp;
    
    p = arr;
    min = p + 1;
    for (i = 0; i < 5; i++)
    {
        for (j = 0; j < 5;j++)
        {
            if ((p + 5 * i + j != p) && (p + 5 * i + j != (p + 0 * 5 + 4)) && *(p + 5 * i + j) < *min)
            {
               min = p + 5 * i + j;
            }
        }
    }
    p =arr;
    temp = *(p + 4 * 5 + 0);
    *(p + 4 * 5 + 0) = *min;
    *min = temp;
    
    p = arr;
    min = p + 1;
    for (i = 0; i < 5; i++)
    {
        for (j = 0; j < 5;j++)
        {
            if ((p + 5 * i + j != p) && (p + 5 * i + j != (p + 0 * 5 + 4)) && (p + 4 * 5 + 0 != p + 5 * i + j ) && *(p + 5 * i + j) < *min)
            {
               min = p + 5 * i + j;
            }
        }
    }
    p =arr;
    temp = *(p + 4 * 5 + 4);
    *(p + 4 * 5 + 4) = *min;
    *min = temp;
}

void print_data(int *arr)
{
     int i,j,*p;
     p = arr;
     for (i = 0; i < 5; i++)
     {
         for (j = 0; j < 5; j++)
         {
             printf("%4d",*(p + 5 * i + j));
         }
         printf("\n");
     }
     
}


运行结果如下所示:
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载