C语言,用指针的形式把一个一位数组从小到大输出,求大神指点

#include <stdio.h>
void main()
{
void average(int a[],int n);
int a[50];
int i,n;
printf("Enter n:");
scanf("%d",&n);
printf("Enter data:");
for(i=0;i<n;i++)
scanf("%d",a+i);
average(a,n);
for(i=0;i<n;i++)
printf("%d",*(a+i));
}

void average(int a[],int n)
{
int i,temp;
int *p;
for(i=0;i<n-1;i++)
for(p=a;p<a+n-i;p++)
if(*p>*(p+1))
{
temp=*p;
*p=*(p+1);
*(p+1)=temp;
}
}

你这个使用的是冒泡排序:

void average(int a[],int n)
{
 int i,temp;
 int *p;
 for(i=0;i<n-1;i++)
  for(p=a;p<a+n-i-1;p++)//因为下面使用了p+1,所以p的地址最大只能指向倒数第二个
   if(*p>*(p+1))
   {
    temp=*p;
    *p=*(p+1);
    *(p+1)=temp;
   }
}

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网