代码如下 供参考
#include
int main()
{
int a[5][5];
int i,j;
int maxi,maxj, mini,minj;
for(i = 0; i < 5; i ++)
for(j = 0; j < 5; j ++)
scanf("%d",&a[i][j]);
maxi = maxj = mini = minj = 0;
for(i = 0; i < 5; i ++)
for(j = 0; j < 5; j ++)
{
if(a[i][j] < a[mini][minj])
{
mini = i;
minj = j;
}
if(a[i][j] > a[maxi][maxj])
{
maxi = i;
maxj = j;
}
}
i = a[maxi][maxj];
a[maxi][maxj] = a[2][2];
a[2][2] = i;
i = a[mini][minj];
a[mini][minj] = a[0][0];
a[0][0] = i;
for(i = 0; i < 5; i ++)
{
for(j = 0; j < 5; j ++)
printf("%d ",a[i][j]);
printf("\n");
}
return 0;
}
//n阶方阵最大值和最小值
#include "stdio.h"
#include "malloc.h"
#include "math.h"
//函数声明
void mat_in(int * p, int n);//输入方阵
int * max(int * p, int n);//最大值
int * min(int * p, int n);//最小值
void swap(int *p , int * q);//交换
void mat_out(int * p, int n);//输出
void main()
{
int n,k;
int *pmax,*pmin;
printf("输入方阵的阶数(本题要求为方阵阶数为5):\n");
scanf("%d",&n);
k=n*n;//开辟动态数组元素的个数
int * p = (int *)malloc(n*n*sizeof(int));//创建动态数组
printf("输入数组数据\n");
mat_in(p,k);//输入n*n数组的数据
printf("输出数组原始数据\n");
mat_out(p,k);
printf("查找数组元素最大值:");
pmax = max(p,k);
printf("%d\n",*pmax);
printf("查找数组元素最小值:");
pmin = min(p,k);
printf("%d\n",*pmin);
swap(p,pmin);
swap(&p[k/2], pmax);
printf("输出交换后的数据\n");
mat_out(p,k);
}
//输入数组元素
void mat_in(int *p, int n)
{
int i;
for(i = 0;i < n; i++ )
scanf("%d",&p[i]);
}
//计算最大值,为方便后续交换,返回最大值的地址
int * max(int * p, int n)
{
int *pmax,i,max;
max=p[0];
for(i=1;i
if(p[i] > max)
{
max=p[i];
pmax=&p[i];
}
}
return pmax;
}
//计算最小值
int * min(int * p, int n)
{
int *pmin,i,min;
min=p[0];
for(i=1;i
if(p[i]< min)
{
min = p[i];
pmin = &p[i];
}
}
return pmin;
}
//交换
void swap(int * s, int * t)
{
int temp;
temp = *s;
*s = *t;
*t = temp;
}
//输出
void mat_out(int * p, int n)
{
int i,k=0;
int m;
m=int(sqrt(n));
for(i = 0; i < n; i++)
{
k++;
printf("%3d",p[i]);
if(k % m==0)
printf("\n");
}
printf("\n");
}
该程序可以实现包括5*5方阵在内的任何方阵的处理,我是通过动态数组实现的。优点:可以跨函数使用数组,程序的通用性强。
//刚写的code,测试通过,如果有疑问,欢迎交流
//
#include
#include
int main(){
int tar[5][5];
int i,j;
for(i = 0; i<5;i++){
for(j = 0; j<5; j++){
//scanf("%d", &tar[i][j]);
tar[i][j] = rand()%20; //随机生成的数字,测试用
}
}
//保存最大值,及最大的横纵坐标
int max_value = tar[0][0], max_idx_i = 0, max_idx_j = 0;
//保存最小值,及最小值的横纵坐标
int min_value = tar[0][0], min_idx_i = 0, min_idx_j = 0;
for(i =0; i<5; i++){
for(j = 0; j < 5; j++ ){
if(tar[i][j] > max_value){
max_value = tar[i][j];
max_idx_i = i;
max_idx_j = j;
}
if(tar[i][j] < min_value){
min_value = tar[i][j];
min_idx_i = i;
min_idx_j = j;
}
}
}
//交换
tar[max_idx_i][max_idx_j] = tar[2][2];
tar[2][2] = max_value;
tar[min_idx_i][min_idx_j] = tar[0][0];
tar[0][0] = min_value;
for(i = 0; i<5; i++){
for(j = 0; j<5; j++){
printf("%3d", tar[i][j]);
}
printf("\n");
}
return 0;
}