c语言问题,用指针方法处理 输入10个整数,将其中最小的数与第一个数交换,将最大的数与最后一个数交

为什么最小值与第一个数交换值的时候只有两个语句(*(p+i)=*p;*p=min;)两个值交换时不是要借助一个中间变量吗?还有为什么要在相等时加break?思路是什么?谢... 为什么最小值与第一个数交换值的时候只有两个语句(*(p+i)=*p;*p=min;)两个值交换时不是要借助一个中间变量吗?还有为什么要在相等时加break?思路是什么?谢谢 展开
 我来答
My_Persistence
2018-03-27 · TA获得超过3468个赞
知道大有可为答主
回答量:1201
采纳率:81%
帮助的人:436万
展开全部
//下面我跟你分析下关键的一些语句
p=a;  //指针p初始指向数组a,亦即指向数组的首元素地址,这个我想你是清楚的
max=min=*p;  //初始默认a[0]既是最大值有时最小值
for(i=0;i<10;i++)
if(min>*(p+i)) min=*(p+1); //这个for循环是求取最小值并赋值给min保存
for(i=0;i<10;i++)
if(min==*(p+i)) break; //这个for循环是找到数组中最小值的那个数组元素的位置
*(p+i)=*p; *p=min;  //*p是a[0],*(p+i)就是上面的for循环找到的最小值的数组元素,把a[0]的值赋值给这个元素,然后将最小值min赋值给a[0]
//下面求最大值的方式是一样的,就不再累赘了。
dream小和
2018-03-27 · 超过42用户采纳过TA的回答
知道小有建树答主
回答量:178
采纳率:26%
帮助的人:16.9万
展开全部
首先,里面有三个变量,*(p),*(p+i),min,min就是中间变量; 其次,为什么要break,那个if(==)就是为了找到它的位置。找到之后就不用循环了,所以break出去。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式