将一个5*5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(顺序为从左到右, 从上到下依次从小到大存放),写一函数实现之。用main函数调用
/*将一个5*5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(顺序为从左到右,从上到下依次从小到大存放),写一函数实现之。用main函数调用*/#include <stdio.h>int main(){int fun(int a[][5]);int a[5][5];int i,j;printf("请输入:\n");for(i = 0;i &...
·
/*将一个5*5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(顺序为从左到右,
从上到下依次从小到大存放),写一函数实现之。用main函数调用*/
#include <stdio.h>
int main()
{
int fun(int a[][5]);
int a[5][5];
int i,j;
printf("请输入:\n");
for(i = 0;i < 5;i++)
{
for(j = 0;j < 5;j++)
{
scanf("%d",&a[i][j]);
}
}
fun(a);
printf("输出:\n");
for(i = 0;i < 5;i++)
{
for(j = 0;j < 5;j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
}
int fun(int a[][5])
{
int fun2(int *p,int *q);
int (*p)[5];
p = a;
int i,j,max,min,k,l,t;
//最大的数
max = a[0][0];
for(i = 0;i < 5;i++)
{
for(j = 0;j < 5;j++)
{
if(*(*(p + i) + j) > max)
{
max = *(*(p + i) + j);
k = i;
l = j;
}
}
}
fun2(*(p + 2) + 2,*(p + k) + l);
//最小的数
min = a[0][0];
k = l = 0;
for(i = 0;i < 5;i++)
{
for(j = 0;j < 5;j++)
{
if(*(*(p + i) + j) < min)
{
min = *(*(p + i) + j);
k = i;
l = j;
}
}
}
fun2(*(p + 0) + 0,*(p + k) + l);
//第二小的数
min = a[0][1];
k = 0;
l = 1;
for(i = 0;i < 5;i++)
{
for(j = 0;j < 5;j++)
{
if(i == 0&&j == 0) continue;
if(*(*(p + i) + j) < min)
{
min = *(*(p + i) + j);
k = i;
l = j;
}
}
}
fun2(*(p + 0) + 4,*(p + k) + l);
//第三小的数
min = a[0][1];
k = 0;
l = 1;
for(i = 0;i < 5;i++)
{
for(j = 0;j < 5;j++)
{
if(i == 0&&j == 0) continue;
if(i == 0&&j == 4) continue;
if(*(*(p + i) + j) < min)
{
min = *(*(p + i) + j);
k = i;
l = j;
}
}
}
fun2(*(p + 4) + 0,*(p + k) + l);
//第四小的数
min = a[0][1];
k = 0;
l = 1;
for(i = 0;i < 5;i++)
{
for(j = 0;j < 5;j++)
{
if(i == 0&&j == 0) continue;
if(i == 0&&j == 4) continue;
if(i == 4&&j == 0) continue;
if(*(*(p + i) + j) < min)
{
min = *(*(p + i) + j);
k = i;
l = j;
}
}
}
fun2(*(p + 4) + 4,*(p + k) + l);
}
int fun2(int *p,int *q)
{
int t;
t = *p;
*p = *q;
*q = t;
}
谭浩强C程序设计(第四版)p291第10题
复习:
1.如何用指针表示二维数组
2.如何用字符数组名做指针表示二维数组
我只是按照我自己理解的题目要求解答的题目,在我感觉这道题出的有点无聊,唯一的好处就是我知道了二维数组怎么用指针表示。
运行结果:
更多推荐
已为社区贡献1条内容
所有评论(0)