请求修改代码的逻辑错误

img

img

img

![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/654243846966159.jpg "#left"
我想要达成这个题目的要求,可惜还是设计有一点问题,就是输入不管是a还是b都是降序,请大家帮我修改修改,说出我代码的问题。谢谢。语法没有bug.

你那个sort2中r是哪来的

供参考:

#include <stdio.h>
#define N 10
void Sort1(int a[], int n);
void Sort2(int a[], int n, char style = 'd'); //函数声明,最后形参char style = 'd'
int main()                                    //带默认初始赋值,在函数调用时可以省略
{                                             //最后参数 style 的实参赋值,默认降序排序
    char ch = 'a'; //字符变量 ch 初始值为 'a'
    int a[N] = { 2,1,5,4,6,3,9,7,8,10 }, i, n = 10;//定义数组a[N],以及元素个数 n = 

    printf("输出省略参数 style 的调用:\n");
    Sort2(a, n);//这里省略 style 的调用,等同于 Sort2(a, n, 'd');
                //这句也实现 Sort1(a, n) 函数一样的功能
    for (i = 0; i < n; i++)//输出排序后的数组
        printf("%d ", a[i]);
    printf("\n");

    printf("输出参数style = ch = 'a' 的调用:\n");
    //scanf(" %c", &ch); 输入排序的标志
    Sort2(a, n, ch); //按 ch 的值 'a' 升序排序
    for (i = 0; i < n; i++)//输出排序后的数组
        printf("%d ", a[i]);
    return 0;
}
void Sort1(int a[], int n)//函数 Sort1() 实现 降序排序
{
    int i, j, t;
    for (j = 0; j < n - 1; j++)
    {
        for (i = 0; i < n - 1 - j; i++)
        {
            if (a[i] < a[i + 1])
            {
                t = a[i];
                a[i] = a[i + 1];
                a[i + 1] = t;
            }
        }
    }
}
void Sort2(int a[], int n, char style)//函数 Sort2() 实现
{
    int i, j, t;
    if (style != 'a' && style != 'd')
        return;//函数参数 style 传入的值不正确,则函数什么也不干
    for (j = 0; j < n - 1; j++)
    {
        for (i = 0; i < n - 1 - j; i++)
        {
            if (a[i] > a[i + 1] && style == 'a' || a[i] < a[i + 1] && style == 'd')
            {
                t = a[i];
                a[i] = a[i + 1];
                a[i + 1] = t;
            }
        }
    }
}