本题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2020
本题主要使用一种排序方法,我借鉴了冒泡排序法的思想
刚开始我使用了动态数组,结果提交总是不过,但格式与功能自认为均达到了题目的要求,代码如下:
#include<stdio.h>
#include<malloc.h>
#include<math.h>
int main()
{
int n,i,j,t;
while(scanf("%d",&n)!=EOF&&n!=0)
{
int*a=(int*)malloc(sizeof(int)*n);
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
for(j=1;j<=n-1;j++)
for(i=1;i<=n-j;i++)
{
if(abs(a[i])<abs(a[i+1]))
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
for(i=1;i<n;i++)
{
printf("%d ",a[i]);
}
printf("%d\n",a[n]);
free(a);
}
return 0;
}
后来不使用动态数组,再提交直接过了!!
#include<stdio.h>
#include<math.h>
int main()
{
int n,i,j,t;
int a[101];
while(scanf("%d",&n)!=EOF&&n!=0)
{
int*a=(int*)malloc(sizeof(int)*n);
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
for(j=1;j<=n-1;j++)
for(i=1;i<=n-j;i++)
{
if(abs(a[i])<abs(a[i+1]))
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
for(i=1;i<n;i++)
{
printf("%d ",a[i]);
}
printf("%d\n",a[n]);
free(a);
}
return 0;
}