使用函数的方法,输入N个整数,用冒泡排序算法将它们按升序排序后输出
#include <stdio.h>
#define N 10
void sort (int *p, int n);
int main(void)
{
int a[N],*pa ;
int i;
for(pa=a;pa<a+N;pa++)
scanf("%d",pa);
sort(a,N);
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
void sort (int *p, int n)
{
int i,j,tmp;
for(j=0;j<n-1;j++)
{
for(i=0;i<n-j-1;i++)
{
if(*(p+i)>*(p+i+1))
{
tmp=*(p+i);
*(p+i+1)=*(p+i);
*(p+i)=tmp;
}
}
}
}
运行无法输出正确的答案
请指正代码哪里错误了,谢谢
scanf("%d",pa);
pa可是地址你怎么输入,还有下面的互换也错了,已改好,望采纳
#include <stdio.h>
#define N 10
void sort(int *p, int n);
int main(void)
{
int a[N], *pa;
int i;
for (pa = a; pa<a + N; pa++)
scanf("%d",&(*pa));
sort(a, N);
for (i = 0; i<N; i++)
printf("%d ", a[i]);
printf("\n");
return 0;
}
void sort(int *p, int n)
{
int i, j, tmp;
for (j = 0; j<n - 1; j++)
{
for (i = 0; i<n - j - 1; i++)
{
if (*(p + i)>*(p + i + 1))
{
tmp = *(p + i);
*(p + i) = *(p + i + 1);
*(p + i + 1) = tmp;
}
}
}
}
你好,28和29行代码修改如下:
*(p+i)=*(p+i+1);
*(p+i+1)=tmp;
望采纳!