vc++6.0用选择法对数组a中的元素升序排列。自定义main函数

定义函数void sort(int a[ ],int n),自定义main函数,并在其中调用sort函数. #include<stdio.h>
void main()
{
int n,*p,a[n];
printf("input n:");
scanf("%d",&n);
printf("input array of integers:");
scanf("%d",&n);
*p=a[n];
printf("after sorted the array is:%s",*p);
}
void sort(int a[n],int n)
{
int temp,i,j,k;
int *p;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(p[k]>p[j])
k=j;
if(i!=k)
{
temp=p[i];
p[i]=p[k];
p[k]=temp;
}
}
}
},哪儿错了?

#include<stdio.h>
void main()
{
void sort(int a[],int n);//先声明一下
int n;
printf("input n:");
scanf("%d",&n);
int *a=new int[n];//由于n不确定,所以要动态生成一个a[n]数组
printf("input array of integers:");
for(int i=0;i<n;i++) //输入时要一个一个元素赋值,不然只给第一个元素赋值了
{
scanf("%d",&a[i]);
}
sort(a,n);//函数调用,前面是声明,定义在后面;
printf("after sorted the array is:");
for( i=0;i<n;i++)
{
printf("%2d",a[i]);
}
}

void sort(int a[],int n)//传数组时,传给函数的只是数组首元素地址,不用表明数组大小
{
int temp,i,j,k;//不用定义*p,直接用a进行操作,*p是局部变量,不会保存的
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(a[k]>a[j])
k=j;
} //等这个循环结束以后才交换
if(i!=k)
{
temp=a[i];
a[i]=a[k];
a[k]=temp;
}

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