70,020
社区成员




# include<stdio.h>
void main()
{ int data[8],*p,*p2,*k,temp,i;
p=data;
for(i=0;i<8;i++)
{ scanf("%d",p);
p++; }
for(p=data;p<data+8-1;p++)
{ k=p;
for(p2=p+1;p2<data+8;p2++)
if(*p<*p2) k=p2;
if(k!=p)
{temp=*p;
*p=*p2;
*p2=temp;}
}
for(i=0,p=data;i<8;i++,p++)
printf("%3d",*p);
}
# include<stdio.h>
# include<string.h>
void main()
{ int data[8],*p,*p2,temp,i;
p=data;
for(i=0;i<8;i++)
{ scanf("%d",p);
p++; }
for(p=data;p<data+8-1;p++)
{ for(p2=p+1;p2<data+8;p2++)
if(*p<*p2)
{temp=*p;
*p=*p2;
*p2=temp;}
}
for(i=0,p=data;i<8;i++,p++)
printf("%3d",*p);
printf("\n");
}
程序有问题
void main()
{ int data[3],*p,*p2,*k,temp,i;
p=data;
for(i=0;i<3;i++)
{ scanf("%d",p);
p++; }
for(p=data;p<data+3-1;p++)
{
k=p;
for(p2=p+1;p2<data+3;p2++)
{
if(*p<*p2) k=p2;
if(k!=p)
{
temp=*p;
*p=*p2;
*p2=temp;
}
}
}
for(i=0,p=data;i<3;i++,p++)
printf("%3d",*p);
}
for(p=data;p<data+8-1;p++)
{ k=p;
for(p2=p+1;p2<data+8;p2++)//这个循环之后p2=data+8已经越界了,你后面还用了
if(*p<*p2) k=p2;
if(k!=p) //此时和*p2交换会得到垃圾数据的,而且你的p2不一定是最大值
{temp=*p;
*p=*p2;
*p2=temp;}
}
for(p=data;p<data+8-1;p++)
{ k=p;
for(p2=p+1;p2<data+8;p2++)//这个循环找到剩下数字中的最大值,由k指向
if(*k<*p2) k=p2;
if(k!=p)
{temp=*p;
*p=*k;
*k=temp;}
}