#include <stdio.h>
#include <stdlib.h>
void sort(int b[], int n, char style);
int main() {
int a[100], i, n;
char style;
printf("xueshengshu:n=");
scanf("%d", &n);
printf("%d weitongxuedecj\n", n);
for (i = 0; i < n; i++)
scanf("%d", &a[i]);
getchar(); // 读取缓冲区中的换行符
printf("sx_a;jx_d\n");
scanf(" %c", &style); // 注意前面的空格
sort(a, n, style);
printf("pxhcj:\n");
for (i = 0; i < n; i++)
printf("%3d", a[i]);
printf("\n");
return 0; // 返回0表示程序成功执行
}
void sort(int b[], int n, char style) {
int i, j, t;
if (style == 'd') {
for (i = 0; i < n - 1; i++)
for (j = i + 1; j < n; j++)
if (b[i] < b[j]) {
t = b[i];
b[i] = b[j];
b[j] = t;
}
} else if (style == 'a') {
for (i = 0; i < n - 1; i++)
for (j = i + 1; j < n; j++)
if (b[i] > b[j]) {
t = b[i];
b[i] = b[j];
b[j] = t;
}
} else {
printf("请输入正确的值\n");
scanf(" %c", &style); // 注意前面的空格
sort(b, n, style);
}
}
如果把%c前面的空格删除则会出现两个“请输入正确的值”,可能的原因是回车算是style中一个元素。