您的位置:首页 > 编程语言 > C语言/C++

C语言:将一个5x5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素....

2015-04-07 14:34 393 查看
题目:将一个5x5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(顺序为从左到右,从上到下依次从小到大存放),写一函数实现之。用main函数调用

对二维数组进行排序

#include<stdio.h>
void main(){void sort(int *);
int array[5][5] = {{5,4,0,15,65},{6,7,9,14,16},{98,75,66,47,32},{10,53,1,13,19},{120,99,35,39,28}};
int *p = array,i,j;
sort(p);

for(i=0;i<5;i++){
        for(j=0;j<5;j++){
            printf("%3d ",array[i][j]);
        }
        printf("\n");
    }
    return 0;
}

void sort(int *p){
    int i,j,temp;
    for(i=0;i<25;i++){
        for(j=0;j<25-i;j++){
            if(*(p+j) > *(p+j+1)){
                temp = *(p+j+1);
                *(p+j+1) = *(p+j);
                *(p+j) = temp;
            }
        }
    }
    return ;
}


代码:

#include<stdio.h>
void sort(int [][]);
int array[5][5] = {{5,4,0,15,65},{6,7,9,14,16},{98,75,66,47,32},{10,53,1,13,19},{120,99,35,39,28}};
sort(array);
return 0;
}

void sort(int array[][5]){
    int i,j,temp;
    int *p = array;
    int newArray[5][5];
    //把传进来的数组复制到新数组中 对传进来的数组进行排序
    for(i=0;i<5;i++){
        for(j=0;j<5;j++){
            newArray[i][j] = array[i][j];
        }
    }
    //先对二维数组进行排序 找到最小的前四位 和 最大第一位数 的数值
    for(i=0;i<25;i++){
        for(j=0;j<25-i;j++){
            if(*(p+j) > *(p+j+1)){
                temp = *(p+j+1);
                *(p+j+1) = *(p+j);
                *(p+j) = temp;
            }
        }
    }

    //交换 找到数值后 再对数值的位置进行确定
    for(i=0;i<5;i++){
        for(j=0;j<5;j++){
        /*这几个if语句就是确定array中最小的前四位和最大的一位数
        在newAray中对应的具体位置 找到对应的数值位置后 进行交换
        可能有点繁琐
        */
            if(newArray[i][j] == array[0][0]){
                temp = newArray[i][j];
                newArray[i][j] = newArray[0][0];
                newArray[0][0] = temp;
            }
            if(newArray[i][j] == array[0][1]){
                temp = newArray[i][j];
                newArray[i][j] = newArray[0][4];
                newArray[0][4] = temp;
            }
            if(newArray[i][j] == array[0][2]){
                temp = newArray[i][j];
                newArray[i][j] = newArray[4][0];
                newArray[4][0] = temp;
            }
            if(newArray[i][j] == array[0][3]){
                temp = newArray[i][j];
                newArray[i][j] = newArray[4][4];
                newArray[4][4] = temp;
            }
            if(newArray[i][j] == array[4][4]){
                temp =newArray[i][j];
                newArray[i][j] = newArray[2][2];
                newArray[2][2] = temp;
            }
        }
    }

    for(i=0;i<5;i++){
        for(j=0;j<5;j++){
            printf("%3d",newArray[i][j] );
        }
        printf("\n");
    }

    //这里输出了排序好的二维数组
    for(i=0;i<5;i++){
        for(j=0;j<5;j++){
            printf("%3d",array[i][j] );
        }
        printf("\n");
    }

    return ;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐