C语言代码;本题要求实现一个函数,根据主程序运行提示完成一组整数的递增或递减排序。 函数接口定义: static void sortAorD(int *array, int n, int (*compare)(int a, int b)) 其中array是要排序的数组的起始地址,n是要排序的数的个数,compare 是函数指针,具体含义见给出的程序。 裁判测试程序样例: 本程序运行时,若输入符号A, 则按照升序排序,输入符号D,则按降序排序。 #include <string.h> static int array[20]; static int ascending(int a, int b); static int descending(int a, int b); static void sortAorD(int array[ ], int n, int (*compare)(int a, int b)) ; typedef struct { char name; int (*cmd)(int a, int b); }SortCmd; int main() { int k,n; char cmdType; scanf("%c", &cmdType); scanf("%d", &n) ; SortCmd cmds[]={ {'A', ascending}, /* Ascending */ {'D', descending} /*Descending */ }; for (k = 0; k<n; k++) scanf("%d", &array[k]); for (k = 0; k < sizeof(cmds)/sizeof(cmds[0]); k++) { if (cmdType==cmds[k].name) sortAorD(array, n, cmds[k].cmd); } for (k=0; k<n; k++) printf("%d ", array[k]); } static int ascending(int a, int b) { return (a>=b); } static int descending(int a, int b) { return (a<b); } 输入样例: 在这里给出一组输入。例如: A 15 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 输出样例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
时间: 2024-01-07 08:05:01 浏览: 75
代码如下:
```c
#include <stdio.h>
#include <string.h>
static int array[20];
static int ascending(int a, int b);
static int descending(int a, int b);
static void sortAorD(int array[], int n, int (*compare)(int a, int b));
typedef struct {
char name;
int (*cmd)(int a, int b);
} SortCmd;
int main() {
int k, n;
char cmdType;
scanf("%c", &cmdType);
scanf("%d", &n);
SortCmd cmds[] = {
{'A', ascending}, /* Ascending */
{'D', descending} /*Descending */
};
for (k = 0; k < n; k++) scanf("%d", &array[k]);
for (k = 0; k < sizeof(cmds) / sizeof(cmds[0]); k++) {
if (cmdType == cmds[k].name)
sortAorD(array, n, cmds[k].cmd);
}
for (k = 0; k < n; k++) printf("%d ", array[k]);
return 0;
}
static int ascending(int a, int b) {
return (a >= b);
}
static int descending(int a, int b) {
return (a < b);
}
static void sortAorD(int array[], int n, int (*compare)(int a, int b)) {
int i, j, temp;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - 1 - i; j++) {
if (compare(array[j], array[j + 1])) {
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}
```
阅读全文