| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 394 人关注过本帖
标题:矩阵换位置,用返回指针值的函数的问题
只看楼主 加入收藏
q2527193
Rank: 1
等 级:新手上路
帖 子:8
专家分:7
注 册:2012-1-15
结帖率:100%
收藏
 问题点数:0 回复次数:0 
矩阵换位置,用返回指针值的函数的问题
/*将一个5*5的矩阵中最大的元素放在中心,四个角分别放四个最小的元素(顺序从左到
  右,从上到下顺序依次从小到大存放),写一个函数实现之。用main 函数调用。
  例如原来矩阵:
  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
  改变后的矩阵
  11 34 33 32 12
  30 29 28 27 26
  25 24 35 22 21
  20 19 18 17 16
  13 23 15 31 14 */



#include <stdio.h>
#include <stdlib.h>

int *max1(int ai[][5]);     
int *min(int ai[][5]);

int main()
{
    int ai[5][5];
    int ia, ib;
    int *temp1, *temp;

    temp1 = max1(ai);        /*指向最大值,并能记录下行和列*/
    temp = min(ai);             /*指向4个最小值,并能记录下行和列*/
   
    for(ia = 0; ia < 5; ia++)      /*输入数组*/
    {
        for(ib = 0; ib < 5; ib++)
        
            scanf("%d", &ai[ia][ib]);   
    }

   

    ai[temp1[1]][temp1[2]] = ai[2][2];       /*把最大值和中间的值换位置*/
    ai[2][2] = temp1[0];


    ai[temp[1]][temp[2]] = ai[0][0];         /*把最小值1和ai[0][0]换位置*/
    ai[0][0] = temp[0];

    ai[temp[4]][temp[5]] = ai[0][4];         /*把最小值2和ai[0][4]换位置*/
    ai[0][4] = temp[3];

    ai[temp[7]][temp[8]] = ai[4][0];         /*把最小值3和ai[4][0]换位置*/
    ai[4][0] = temp[6];

    ai[temp[10]][temp[11]] = ai[4][4];       /*把最小值4和ai[4][4]换位置*/
    ai[4][4] = temp[9];
   
    for(ia = 0; ia < 5; ia++)                /*输出数组*/
    {
        for(ib = 0; ib < 5; ib++)
            printf("%d", ai[ia][ib]);
        printf("\n");
    }

    return 0;
}

int *max1(int ai[][5])      
{
    int max, ia, ib;
    int *p1 = (int *)malloc(sizeof(int)*3);     /*开辟3个整型的空间*/

    max = ai[0][0];
    for(ia = 0; ia < 5; ia++)          /*求出最大值*/
    {
        for(ib = 0; ib < 5; ib++)
            if(ai[ia][ib] > max)
            {
                max = ai[ia][ib];
                p1[0] = max;       /*最大值、行、列保存*/
                p1[1] = ia;      
                p1[2] = ib;
            }
    }
    return p1;
}

int *min(int ai[][5])
{
    int min1, min2, min3 ,min4, ia, ib;
    int *p = (int *)malloc(sizeof(int)*12);        /*开辟12个整型的空间*/

    min1 = ai[0][0];

    for(ia = 0; ia < 5; ia++)             /*求出最小值1*/
    {
        for(ib = 0; ib < 5; ib++)
            if(min1 > ai[ia][ib])
            {
                min1 = ai[ia][ib];
                p[0] = min1;              /*最小值1、行、列保存*/
                p[1] = ia;
                p[2] = ib;
            }
    }

    min2 = ai[0][0];


    for(ia = 0; ia < 5; ia++)            /*求出最小值2*/
    {
        for(ib = 0; ib < 5; ib++)
            if((min2 > ai[ia][ib])&&(ai[ia][ib] != min1))
            {   
                    min2 = ai[ia][ib];
                    p[3] = min2;             /*最小值2、行、列保存*/
                    p[4] = ia;
                    p[5] = ib;   
            }
    }

    min3 = ai[0][0];

    for(ia = 0; ia < 5; ia++)                        /*求出最小值3*/
    {
        for(ib = 0; ib < 5; ib++)
            if((min3 > ai[ia][ib])&&(ai[ia][ib] != min2)&&(ai[ia][ib] != min1))
            {
                min3 = ai[ia][ib];
                p[6] = min3;                    /*最小值3、行、列保存*/               
                p[7] = ia;
                p[8] = ib;
            }
    }

    min4 = ai[0][0];

    for(ia = 0; ia < 5; ia++)                    /*求出最小值4*/
    {
        for(ib = 0; ib < 5; ib++)
            if((min4 > ai[ia][ib])&&(ai[ia][ib] != min3)&&(ai[ia][ib] != min2)&&(ai[ia][ib] != min1))
            {
                min4 = ai[ia][ib];
                p[9] = min4;                /*最小值4、行、列保存*/        
                p[10] = ia;
                p[11] = ib;
            }
    }

    return p;
}
搜索更多相关主题的帖子: 矩阵 include 最大的 元素 
2012-04-25 22:39
快速回复:矩阵换位置,用返回指针值的函数的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019692 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved