C语言,的,一句编程语言的作用,求助

#include<stdio.h>voidsort(int*p,intn){intmin,max;min=max=*p;inti,b,c;for(i=0;i<n;i++)... #include<stdio.h>

void sort(int *p,int n)
{int min,max; min=max=*p; int i,b,c;
for(i=0;i<n;i++)
{if(*(p+i)>max) {max=*(p+i);b=i;}
else if(*(p+i)<min) {min=*(p+i);c=i;}
}

int temp1,temp2;
//temp1=0;
//temp2=0;
//p=a;
{temp1=min;*(p+c)=*p;*p=temp1; }
{temp2=max;*(p+b)=*(p+9);*(p+9)=temp2; }
}

void print(int *p,int n)
{ int i;
for(i=0;i<n;i++)
printf("%d ",*(p+i) );
printf("\n");
}
void main()
{int a[10]={34,55,66,56,51,3,4,6,7,8};
sort(a,10);
print(a,10);
}

第3行的“min=max=*p”为什么不能去掉,或者把*p改为一个常数,1.
展开
 我来答
eadwin
2010-12-16 · 超过15用户采纳过TA的回答
知道答主
回答量:21
采纳率:0%
帮助的人:41万
展开全部
可以去掉,不过不能用 1 代替 *p, 可以这样 max = MAX_INT; min = MIN_INT;

如果你知道*p的取值区间,如(0, 100] 那么 max = 0; min = 101; 如果你不知道*p的取值空间,那么可以 max = ((unsigned int)-1)>>1; min = - ((unsigned int)-1)>>1; 也就是设为int型最大和最小值。

如果不去掉,for(i=0;i<n;i++) 这句,可以优化为 for(i=1;i<n;i++),同时该算法有bug,赋值时,应该将b和c赋值为0,否则无法正确获取最大值和最小值的index
M_SunQi
2010-12-16 · TA获得超过165个赞
知道小有建树答主
回答量:82
采纳率:0%
帮助的人:101万
展开全部
必须不行啊,max和min是数组中的边界值,默认的值或者你自己给万一就是边界值就不对了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2010-12-16
展开全部
指针
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wo104926
2010-12-16 · 超过19用户采纳过TA的回答
知道答主
回答量:54
采纳率:0%
帮助的人:33.3万
展开全部
*p是指针啊 如果改掉了下面的p的赋值就不能用了啊 如果要改下面的关于p的赋值都得改
之所以用指针就是为了写程序方便 好好看看指针吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式