有一个5*5的整型矩阵,要求写一个函数把最小的四个数放在左上角,右上角,左下角,右下角.在矩阵中间放入最大的数
使用指针
有一个5*5的整型矩阵,要求写一个函数把最小的四个数放在左上角,右上角,左下角,右下角.在矩阵中间放入最大的数
使用指针
看着么久没人回复你,做个简单思路的函数给你吧。
#include <stdio.h>
#include "windows.h"
int fun(int *matrix)
{
if(!matrix) return 0;
int * pos_start,*pos_end;
int * pos_src[] = {matrix,matrix+1,matrix+2,matrix+3,matrix};
int * pos_des[] = {matrix,matrix+4,matrix+20,matrix+24,matrix+12};
int tmp[]={*matrix,*(matrix+1),*(matrix+2),*(matrix+3),*matrix};
pos_start = matrix,pos_end = matrix + 24;
int n;
while ( pos_start < pos_end )
{
if( *pos_start < * (pos_start+1) )
{
for( n = 0;n<4;n++)
{
if( tmp[n] > *pos_start )
{
tmp[n] = *pos_start,pos_src[n] = pos_start;
break;
}
}
if( tmp[4] <= *(pos_start+1) )
{
tmp[4]=*(pos_start+1),pos_src[4] = pos_start+1;
}
}
pos_start++;
}
for( n=0;n<5;n++)
{
*(pos_src[n]) = *(pos_des[n]);
*(pos_des[n]) = tmp[n];
}
return 1;
}
//以下为测试代码。
int arry[][5] ={
{1,23,321,23,0},
{123,312321,123123,12312,123123},
{2,123123,123213,123123,543},
{75467,7,45,2,34},
{12321,12321,2,3,123214}
};
int main()
{
fun( (int*)arry );
printf("------------------------------------------------------------\n");
for(int i=0;i<5;i++)
{
for(int n =0;n<5;n++)
printf("|%10d|",arry[i][n]);
printf("\n------------------------------------------------------------\n");
}
Sleep(10000);
}