HJ101 输入整型数组和排序标识,对其元素按照升序或降序进行排序
#include <stdio.h>
int compareLower(const void *a, const void *b)
{
return *(int*)b - *(int*)a;
}
int compareUpper(const void *a, const void *b)
{
return *(int*)a - *(int*)b;
}
int main() {
int array[1001] = {0};
int num = 0;
int type = 0;
while (scanf("%d", &num) != EOF) { // 注意 while 处理多个 case
// 64 位输出请用 printf("%lld") to
for(int i = 0; i < num; i++)
{
scanf("%d", &array[i]);
}
scanf("%d", &type);
int (*compare)(const void*, const void*);
if(type == 0)
{
compare = compareUpper;
}
else {
compare = compareLower;
}
qsort(array, num, sizeof(int), compare);
for(int i = 0; i < num; i++)
{
printf("%d ", array[i]);
}
}
return 0;
}
这个题目不难,而且我尝试使用了函数指针。