永发信息网

一道C语言的题目

答案:1  悬赏:30  手机版
解决时间 2021-05-23 04:27
  • 提问者网友:鼻尖触碰
  • 2021-05-22 18:44

有一个5*5的整型矩阵,要求写一个函数把最小的四个数放在左上角,右上角,左下角,右下角.在矩阵中间放入最大的数

使用指针

最佳答案
  • 五星知识达人网友:雾月
  • 2021-05-22 19:35

看着么久没人回复你,做个简单思路的函数给你吧。


#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);
}

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯