⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 73.c

📁 这是一个经过本人一个月的时间自己做的关于c的小程序
💻 C
字号:
/*
在一个5*5矩阵中最大的元素放在中心,
4个角分别放4个最小的元素(四个最小的元素按从左到右,
从上到下的顺序,依次从小到大存放),写一个函数实现。
*/
#include<stdio.h>
void change(int *p);
void mofang1()
{
 
	int a[5][5],*p,i,j;
	for(i=0;i<5;i++)
	{
		for(j=0;j<5;j++)
		{
			a[i][j]=5*i+j; //对二维数组赋值
		}
	}
	p=&a[0][0];//把二维数组的首地址赋值给指针
	change(p);
	printf("after change,the matrix:\n");
	for(i=0;i<5;i++)
	{ 
		for(j=0;j<5;j++)
		{
			printf("%3d",a[i][j]);
		}
		printf("\n");
	}
}
void change(int *p)
{
	int i,j,temp;
	int *pmax,*pmin;
	pmax=p;
	pmin=p;

	for(i=0;i<5;i++)
	{
		for(j=0;j<5;j++)
		{
			if(*pmax<*(p+5*i+j)) pmax=p+5*i+j; //查找二维数组的最大值;
			if(*pmin>*(p+5*i+j)) pmin=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((p+5*i+j)!=p&&*pmin>*(p+5*i+j)) //寻找下一个的最小值;
				pmin=p+5*i+j;
		}
	}
 
	temp=*(p+4); //第二个最小值与二维数组的右上角的元素进行值交换
	*(p+4)=*pmin;
	*pmin=temp;

	pmin=p+1;
	for(i=0;i<5;i++)
	{
		for(j=0;j<5;j++)
		{
			if((p+5*i+j)!=(p+4)&&(p+5*i+j)!=p&&*pmin>*(p+5*i+j)) //寻找第三个最小值
				pmin=p+5*i+j;
		}
	}
	temp=*(p+20);  //第三个最小值与二维数组的左下角元素交换
	*(p+20)=*pmin;
	*pmin=temp;

	pmin=p+1;
	for(i=0;i<5;i++)
	{
		 for(j=0;j<5;j++)
		{
			if((p+5*i+j)!=(p+20)&&(p+5*i+j)!=(p+4)&&(p+5*i+j)!=p&&*pmin>*(p+5*i+j)) //寻找第四个最小值
			pmin=p+5*i+j;
		}
	}

	temp=*(p+24);   //第四个最小值与二维数组的右下角的元素进行交换
	*(p+24)=*pmin;
	*pmin=temp;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -