5X5矩阵调换!
2011-02-01 09:29
267 查看
将一个5X5矩阵中最大的元素放在中心,4个角分别放4个最小的元素,写一函数实现之!
#include<stdio.h>
int main()
{
void change(int *);
int i,j,*p,a[5][5];
printf("please input martix:/n");
for(i=0;i<5;i++)
for(j=0;j<5;j++)
scanf("%d",&a[i][j]);
p=&a[0][0];
change(p);
printf("the output marix:/n");
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
printf("%4d",a[i][j]);
}
printf("/n");
}
return 0;
}
void change(int *p)
{
int temp,i,j;
int *pmin,*pmax;
pmin=p;
pmax=p;
for(i=0;i<5;i++)
for(j=i;j<5;j++)
{
if(*pmin>*(p+5*i+j)) pmin=p+5*i+j;
if(*pmax<*(p+5*i+j)) pmax=p+5*i+j;
}
temp=*(p+12);
*(p+12)=*pmax;
*pmax=temp;
temp=*p;
*p=*pmin;
*pmin=temp;
pmin=p+1;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
{
if((i==0)&&(j==0)) continue;
if(*pmin>*(p+5*i+j)) pmin=p+5*i+j;
}
temp=*pmin;
*pmin=*(p+4);
*(p+4)=temp;
pmin=p+1;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
{
if(((i==0)&&(j==0))||((i==0)&&(j==4))) continue;
if(*pmin>*(p+5*i+j)) pmin=p+5*i+j;
}
temp=*pmin;
*pmin=*(p+20);
*(p+20)=temp;
pmin=p+1;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
{
if(((i==0)&&(j==0))||((i==0)&&(j==4))||((i==4)&&(j==0))) continue;
if(*pmin>*(p+5*i+j)) pmin=p+5*i+j;
}
temp=*pmin;
*pmin=*(p+24);
*(p+24)=temp;
}
#include<stdio.h>
int main()
{
void change(int *);
int i,j,*p,a[5][5];
printf("please input martix:/n");
for(i=0;i<5;i++)
for(j=0;j<5;j++)
scanf("%d",&a[i][j]);
p=&a[0][0];
change(p);
printf("the output marix:/n");
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
printf("%4d",a[i][j]);
}
printf("/n");
}
return 0;
}
void change(int *p)
{
int temp,i,j;
int *pmin,*pmax;
pmin=p;
pmax=p;
for(i=0;i<5;i++)
for(j=i;j<5;j++)
{
if(*pmin>*(p+5*i+j)) pmin=p+5*i+j;
if(*pmax<*(p+5*i+j)) pmax=p+5*i+j;
}
temp=*(p+12);
*(p+12)=*pmax;
*pmax=temp;
temp=*p;
*p=*pmin;
*pmin=temp;
pmin=p+1;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
{
if((i==0)&&(j==0)) continue;
if(*pmin>*(p+5*i+j)) pmin=p+5*i+j;
}
temp=*pmin;
*pmin=*(p+4);
*(p+4)=temp;
pmin=p+1;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
{
if(((i==0)&&(j==0))||((i==0)&&(j==4))) continue;
if(*pmin>*(p+5*i+j)) pmin=p+5*i+j;
}
temp=*pmin;
*pmin=*(p+20);
*(p+20)=temp;
pmin=p+1;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
{
if(((i==0)&&(j==0))||((i==0)&&(j==4))||((i==4)&&(j==0))) continue;
if(*pmin>*(p+5*i+j)) pmin=p+5*i+j;
}
temp=*pmin;
*pmin=*(p+24);
*(p+24)=temp;
}
相关文章推荐
- 51单片机模拟PS2协议制作5X5矩阵工业键盘
- 数组矩阵调换
- 矩阵的顺序调换
- 5x5矩阵调整大小位置!
- poj Cow Relays 矩阵乘法思想与floyd
- 矩阵加速递推 入门指南
- 第九周项目2-对称矩阵压缩存储的实现与应用(2)
- 第九周 项目三-稀疏矩阵的三元组表示的应用(二)
- BZOJ 1059-矩阵游戏(二分图最大匹配)
- 将n*n矩阵顺时针旋转90度输出
- 矩阵的加、减、乘、除、求逆运算的实现
- 矩阵快速幂 小讲
- HDOJ 4920 Matrix multiplication (矩阵相乘)
- 稀疏矩阵-压缩存储-列转置法- 一次定位快速转置法
- POJ_3150_矩阵快速幂+循环矩阵的乘法
- 剑指offer之顺时针打印矩阵
- poj 3233 矩阵快速幂 + 二分求和
- poj3070Fibonacci(矩阵快速幂)
- Spark中稀疏矩阵的存储方式
- 秩为1的矩阵,向量,绩的联合使用