#include<stdio.h>
#include<math.h>
int main(void)
{
void sort(int *a,int n);
int a[11];
int i,j,k,temp,*p=a; //初始化指针 ,a是数组首地址
for(i=0;i<10;i++){
scanf("%d",p+i);
}
sort(a,10);
for(i=0;i<10;i++) printf("%d\t",*(p+i));
}
void sort(int *a,int n)
{
int i,j,k,temp;
for(i=0;i<9;i++){
k=i;
for(j=i+1;j<10;j++) if(fabs(a[j])<fabs(a[k])) k=j;
temp=a[k];
a[k]=*(a+i);
*(a+i)=temp;
}
}
相似题型:编程,对n个输入数按绝对值从小到大排序后输出(运行时先输入n的值,然后用malloc函数为数组动态分配存储单元)
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main(void)
{
int n,i,j,k,temp,*a;
printf("请输入数据个数\n"); scanf("%d",&n);
a=(int*)malloc(n*sizeof(int)); //由malloc函数分配的,以a为首地址的存储空间
for(i=0;i<n;i++) scanf("%d",a+i);
for(i=0;i<n-1;i++){
k=i;
for(j=i+1;j<n;j++) if(fabs(a[j])<fabs(a[k])) k=j;
temp=a[k];
a[k]=*(a+i);
*(a+i)=temp;
}
for(i=0;i<n;i++) printf("%d\t",*(a+i));
free(a);
}