感谢自信男孩
Description
对用户输入的n个整数进行排序,排序时用户可以指定排序方法,输入1代表进行升序排序,输入2代表进行降序排序,输入3代表按绝对值降序进行排序。
用户选择相应的排序方法后,输入n及n个数,将排序结果进行输出。
Input
多实例测试,每组测试输入包括两部分
第一部分:一个整数代表用户的选择,如果用户输入0,则结束程序。
第二部分:包括两行
第一行是一个整数n(1<=n<=1000),代表待排序整数的个数
第二行是n个待排序的整数
Output
如果用户选择0则结束程序,否则输出按照指定的排序方法对n个整数排序后的结果
Sample Input
1
3
3 1 2
2
3
3 1 2
0
Sample Output
1 2 3
3 2 1
在这里插入代码片
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int k;
int comp_sheng(const void*a,const void*b)
{
return *(int*)a - *(int*)b;
}
int comp_jiang(const void*a,const void*b)
{
return *(int*)b - *(int*)a;
}
int comp_abs_jiang(const void *a, const void *b)
{
return (abs(*(int *)b) - abs(*(int *)a));
}
int print(int *a,int b)
{
for(int i = 0;i < b;i++)
{
printf("%d ",a[i]);
}
printf("\n");
}
int main(void)
{
int n,a[1000];
while(scanf("%d",&k) != EOF&&k != 0)
{
scanf("%d",&n);
if (n > 1000)
n = 1000;
for(int i = 0; i < n; i++)
{
scanf("%d",&a[i]);
}
switch(k)
{
case 1:
qsort(a,n,sizeof(int),comp_sheng);
break;
case 2:
qsort(a,n,sizeof(int),comp_jiang);
break;
case 3:
qsort(a,n,sizeof(int),comp_abs_jiang);
break;
}
print(a,n);
}
return 0;
}