#include <iostream>
using namespace std;
int main(){
void convert(int *p);
int a[5][5];
int i,j;
cout<<"输入一个5*5的矩阵:";
for(i=0;i<5;i++)
for(j=0;j<5;j++)
cin>>a[i][j];
int *p;
p = &a[0][0];
convert(p);
cout<<"改变后的矩阵为:"<<endl;
for(i=0;i<5;i++){
for(j=0;j<5;j++){
cout<<a[i][j]<<" ";
}
cout<<endl;
}
return 0;
}
void convert(int *p){
int i,j;
int *max,*min;
int temp;
max=p;
min=p;//都指向p[0]
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(*max<*(p+5*i+j)) max=p+5*i+j;//max指针指向p[i][j]
if(*min>*(p+5*i+j)) min=p+5*i+j;//min指针指向p[i][j]
temp =*max;*max=*(p+12);*(p+12)=temp;//把最大的放在中间
temp =*min;*min=*p;*p=temp;
//找第二个最小的
min=p+1;//min指向p[0][1]
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(*min>*(p+5*i+j)&&(p+5*i+j)!=p) min=p+5*i+j;
temp =*min;*min=*(p+4);*(p+4)=temp;
//找第三个最小的
min=p+1;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(*min>*(p+5*i+j)&&(p+5*i+j)!=p&&(p+5*i+j)!=p+4) min=p+5*i+j;
temp =*min;*min=*(p+20);*(p+20)=temp;
//找第四个最小的
min=p+1;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(*min>*(p+5*i+j) && (p+5*i+j)!=p && (p+5*i+j)!=p+4 && (p+5*i+j)!=p+20) min=p+5*i+j;
temp =*min;*min=*(p+24);*(p+24)=temp;
}
谭浩强c++第六章题10 6.10 将一个5*5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(按从左到右,从上到下顺序依次从小到大存放),写一函数实现之。用main函数调用。
最新推荐文章于 2022-09-29 21:11:52 发布