1253 - C语言10.23
时间限制 : 1 秒
内存限制 : 32 MB
写一个函数,将一个5×5的整形矩阵中最大的元素放在中心,4个角分别放4个最小的元素(顺序为从左到右,从上到下顺序依次从小到大存放)。所有的元素调整都需要通过位置的交换实现。在main函数中读入和输出矩阵,通过调用函数来实现矩阵的处理过程。
题目输入
共有5行,每行包括5个用空格隔开的整数,表示整个5×5的矩阵。保证整个矩阵中所有的元素互不相同,且最大的元素以及最小的4个元素初始时不在矩阵中心或四个角。
题目输出
与输入格式相同,输出按照题目描述中的方法处理后的矩阵。在每个整数后输出一个空格。
请注意行尾输出换行。
输入/输出样例
输入格式
6 7 8 9 10 1 2 3 4 5 11 12 13 14 15 21 22 23 24 25 16 17 18 19 20
输出格式
1 7 8 9 2 6 10 16 20 5 11 12 25 14 15 21 22 23 24 13 3 17 18 19 4
C语言解答
#include<stdio.h> main() { int a[5][5],t,i,j,b[25],n=0; for(i=0;i<5;i++) { for(j=0;j<5;j++) { scanf("%d",&a[i][j]); } } for(i=0;i<5;i++) /*将25个数存放在b数组中*/ { for(j=0;j<5;j++) { b[n++]=a[i][j]; } } for(i=0;i<25;i++) /*将25个数按从小到大排序*/ { for(j=24;j>i;j--) { if(b[j-1]>b[j]) { t=b[j-1]; b[j-1]=b[j]; b[j]=t; } } } for(i=0;i<5;i++) { for(j=0;j<5;j++) { if(a[i][j]==b[0]) { t=a[i][j]; a[i][j]=a[0][0]; a[0][0]=t; } if(a[i][j]==b[1]) { t=a[i][j]; a[i][j]=a[0][4]; a[0][4]=t; } if(a[i][j]==b[2]) { t=a[i][j]; a[i][j]=a[4][0]; a[4][0]=t; } if(a[i][j]==b[3]) { t=a[i][j]; a[i][j]=a[4][4]; a[4][4]=t; } if(a[i][j]==b[24]) { t=a[i][j]; a[i][j]=a[2][2]; a[2][2]=t; } } } for(i=0;i<5;i++) { for(j=0;j<5;j++) { printf("%d ",a[i][j]); } printf("\n"); } }
C++解答
#include <stdio.h> int main() { void T(int mat[][5], int n); int mat[5][5]; int i, j; for (i = 0;i < 5;i++) for (j = 0;j < 5;j++) scanf("%d", &mat[i][j]); T(mat, 5); for (i = 0;i < 5;i++) { for (j = 0;j < 5;j++) printf("%d ", mat[i][j]); printf("\n"); } return 0; } /* 矩阵处理函数 */ void T(int mat[][5], int n) { int i, j, temp; int *a, *b, *c, *d, *max; /* 设置4个最小元素以及最大元素指针的初始值 */ a = &mat[0][0]; b = &mat[0][0]; c = &mat[0][0]; d = &mat[0][0]; max = &mat[0][0]; for (i = 0;i < 5;i++) { for (j = 0;j < 5;j++) { if (mat[i][j] < *a) { d = c; c = b; b = a; a = &mat[i][j]; } else if (mat[i][j] < *b) { d = c; c = b; b = &mat[i][j]; } else if (mat[i][j] < *c) { d = c; c = &mat[i][j]; } else if (mat[i][j] < *d) { d = &mat[i][j]; } if (mat[i][j] > *max) max = &mat[i][j]; } } /* 依次替换4个最小元素以及最大的元素 */ temp = mat[0][0]; mat[0][0] = *a; *a = temp; temp = mat[0][4]; mat[0][4] = *b; *b = temp; temp = mat[4][0]; mat[4][0] = *c; *c = temp; temp = mat[4][4]; mat[4][4] = *d; *d = temp; temp = mat[2][2]; mat[2][2] = *max; *max = temp; }