急急急!!!请各位大侠看看下面程序的排序部分用指针进行排序怎么不对啊?仅看排序部分,小弟初学 ,谢谢

2025-02-25 11:11:25
推荐回答(3个)
回答1:

/*
34 9 10 22 35
a[2] = 10, *(a + 2) = 10, *(p + 2) = 10
34 9 10 22 35
排序后为:
9 10 22 34 35
请按任意键继续. . .
*/
#include
int main() {
int i,j,t,a[5],*p;
p = a;// a[]的首地址给p
for(i = 0;i < 5;i++) scanf("%d",p + i);/*利用指针进行元素的输入*/
printf("a[2] = %d, *(a + 2) = %d, *(p + 2) = %d\n",a[2],*(a + 2),*(p + 2));
p = a;
for(i = 0;i < 5;i++,p++) printf("%d ",*p);
printf("\n");
for(i = 0;i < 4;i++) {
for(j = i + 1; j < 5; ++j) {
if(a[i] > a[j]) {
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
}
printf("排序后为:\n");
p = a;
for(i = 0;i < 5; i++,p++) printf("%d ",*p);
printf("\n");
return 0;
}

回答2:

你这个问题就大了...
while(*p<=a[4]&&*rt<=a[4])
{
*rt=a[1];
if(p tem=*p;*p=*rt;*rt=tem;
p++;rt++;}/*
改成

for (;*p!=a+3;p++)
for(*rt=a+1;*rt!='\0';p++)
{
tem=*p;*p=*rt;*rt=tem;
}
试试

回答3:

问你们老师