指针习题10(答案版)

博主在解决一系列指针习题时遇到困难,详细记录了一道涉及矩阵输入、指针操作及最大最小值交换的习题解答过程。通过对比自己的方法与答案给出的方法,博主表达了对答案技巧的感慨。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

感觉接下来的几道指针习题的难度上来了,楼主已经搞不出来了,,,所以第11题(下一篇)改为研究答案了。。。
链接 题目和楼主的方法
答案的方法
代码

#include<stdio.h>
int main()
{void change(int *p);
 int a[5][5],*p,i,j;
 printf("input matrix:\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("Now,matrix:\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 i,j,temp;
 int *pmax,*pmin;
 pmax=p;
 pmin=p;
 for(i=0;j<5;i++)
 {for(j=i;j<5;j++)
   {if(*pmax<*(p+5*i+j))
    {pmax=p+5*i+j;
	}
	if(*pmax>*(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=*pmin;
   *pmin=*(p+4);
   *(p+4)=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=*pmin;
      *pmin=*(p+20);
      *(p+20)=temp;
      pmin=p+1;
      for(i=0;i<5;i++)
        for(j=0;j<5;j++)
         if(((p+5*i+j)!=p)&&((p+5*i+j)!=(p+4))&&((p+5*i+j)!=(p+20))&&(*pmin>*(p+5*i+j)))
         pmin=p+5*i+j;
         temp=*pmin;
         *pmin=*(p+24);
         *(p+24)=temp;
 }
}

答案给的方法楼主只能说太***(这里省略1000字)
大家看看就好,不要深究了 。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值