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. 展开
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. 展开
展开全部
可以去掉,不过不能用 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
如果你知道*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
展开全部
必须不行啊,max和min是数组中的边界值,默认的值或者你自己给万一就是边界值就不对了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2010-12-16
展开全部
指针
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
*p是指针啊 如果改掉了下面的p的赋值就不能用了啊 如果要改下面的关于p的赋值都得改
之所以用指针就是为了写程序方便 好好看看指针吧
之所以用指针就是为了写程序方便 好好看看指针吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询