如图,为什么最后输出的数组没有改变,求大神解惑
你的排序函数mp调用的位置和调用的方式不对,用mp(a,c)。而且初始化数组a时,c变量不是一个常数,c要换为一个常数代替。初学者吧 0……0
写代码太粗心了,你这代码竟然能编译成功?数组申请方式不对,还有排序也有错误,mp函数调用位置应该在下面调用。你试下下面的代码:
#include <stdio.h>
int mp(int *p,int c)
{
int i,j,temp;
for (i=0;i<c-1;i++)
{
for (j=0;j<c-1;j++)
{
if(*(p+j)>*(p+j+1))
{
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
return 0;
}
int main()
{
int i,c;
printf("input number:\n");
scanf("%d",&c);
int *a = new int[c];
for(i=0;i<c;i++)
{
printf("input:");
scanf("%d",&a[i]);
}
mp(a,c);
for (i=0;i<c;i++)
{
printf("%d ",a[i]);
}
printf("\n",a[i]);
delete a;
return 0;
}
谢谢楼上各位,问题解决了, temp=*(p+j);
(p+j)=(p+j+1);
(p+j)=temp; //这里的错误 改成(p+j+1)就好了