跪求大神,c语言问题。编程,输入1个正整数n(1<n<=10),再输入n个整数,按绝对值从小到大排

2024-11-04 09:53:34
推荐回答(2个)
回答1:

C语言实现,采用选择排序:

#include  
#include 
#include 

void Exchange(int *A,int *B) //交换两个数的值
{
int temp;
temp=*A;
*A=*B;
*B=temp;
}

void selectsort_dir(int *T,int left,int right)//选择排序,[left,right]为排序范围
{
int i;
int maxnum;
do
{
maxnum=left;
for(i=left+1;i<=right;i++)
{
if(fabs(T[i]) }
if(i!=maxnum) Exchange(&T[left],&T[maxnum]);
}while(left++}

void main() 
{
int n,i,*p;
do
{
printf("输入整数个数(1~10):");
scanf("%d",&n);
}while(n<=1||n>10); //1~10之间

p = (int *)malloc(sizeof(int)*n); 
for(i=0;i {
printf("输入第%d个整数:",i+1);
scanf("%d",p+i);
}
for(i=0;i printf("\n");
selectsort_dir(p,0,n-1);
for(i=0;i }

测试结果:

回答2:

#include
void main()
{
int n,i,j,t,a[10];
scanf("%d",&n);
if(n>1&&n<=10)
{
for(i=0;i scanf("%d",&a[i]);
for(i=0;i for(j=0;j if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
for(i=0;i printf("%d ",a[i]);
}
}