用指针实现选择法排序问题
从键盘输入8个数,用选择法按由大到小的顺序排列
为什么程序这样写能编译通过,但是执行时,输入参数后,提示出现“遇到问题需要关闭”
问题出在哪里呢?
但是这样写就可以:
为什么程序这样写能编译通过,但是执行时,输入参数后,提示出现“遇到问题需要关闭”
# 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");
}
...全文


