/*============================================================= 目的:将5*5的矩阵中最大的元素放在中心,4个角放4个最小的元素,写函数实现,main函数调用 算法分析:1、写一个最小值交换函数,实现四个最小元素的交换 2、写一个最大值交换函数 3、 4、 ============================================================== 作者:最后的村长 时间:2009年11月5日 工具:DEV C++ 4.9.9.2 version:1.0 ==============================================================*/ #include <stdio.h> #include <stdlib.h> #define N 5 /*=============================================================*/ void exchange_min(int (*p)[N],int start_row,int start_column); void exchange_max(int (*p)[N],int row,int column); void exchange(int *p1,int *p2); int main() { int a[N][N]; puts("请对5*5的矩阵进行初始化:/n"); for(int i=0;i<N;i++) { for(int j=0;j<N;j++) { printf("/na[%d][%d]=",i,j); scanf("%d",*(a+i)+j); if(j%4==0) printf("/n"); } } //将四个最小的元素放到数组第一排的前四个元素
exchange_min(a,0,0), exchange_min(a,0,1); exchange_min(a,0,2); exchange_min(a,0,3); //将矩阵中的最大值与中心互换
exchange_max(a,2,2); //实现四个角与前四个元素的内容互换
exchange(&a[0][1],&a[0][N-1]); exchange(&a[0][2],&a[N-1][0]); exchange(&a[0][3],&a[N-1][N-1]); //输出互换后的矩阵值
for(int i=0;i<N;i++) { for(int j=0;j<N;j++) { printf("/na[%d][%d]=%d",i,j,a[i][j]); if(j%4==0) printf("/n"); } } system("PAUSE"); return 0; } void exchange_min(int (*p)[N],int start_row,int start_column) { int *temp; for(int i=start_row+1;i<N;i++) for(int j=start_column+1;j<N;j++) { if(*(*(p+start_row)+start_column)>*(*(p+i)+j)) { temp=*(p+start_row)+start_column; *(p+start_row)+start_column=*(p+i)+j; *(p+i)+j=temp; } } }
void exchange_max(int (*p)[N],int row,int column) { int *temp; for(int i=0;i<N;i++) for(int j=0;j<N;j++) { if(*(*(p+row)+column)<*(*(p+i)+j)) { temp=*(p+row)+column; *(p+row)+column=*(p+i)+j; *(p+i)+j=temp; } } }
void exchange(int *p1,int *p2) { int *temp; temp=p1; p1=p2; p2=temp; }
|