为什么达不到正序数字,倒序字母大写的效果?感觉思路很清晰呀

#include
#include
#include
#include
using namespace std;
void f(string s)//小写转为大写
{
for(int i = 0; i < s.length(); i++)
{
if(s[i] >= 'a' && s[i] <= 'z')
{
s[i] -= 32;
}
}
for(int i = 0; i < s.length(); i++)
cout<
}
void sort(string x)//正序排列
{
int n = x.length();
for(int i = 0; i < n-1; i++)
{
for(int j = 0; j < n-1-i; j++)
{
if(x[j] > x[j+1])
{
char temp = x[j];
x[j] = x[j+1];
x[j+1] = temp;
}
}
}
for(int i = 0; i < n; i++)
cout<
}
void sortD(string x)//倒序排列
{
int n = x.length();
for(int i = 0; i < n-1; i++)
{
for(int j = 0; j < n-1-i; j++)
{
if(x[j] < x[j+1])
{
char temp = x[j];
x[j] = x[j+1];
x[j+1] = temp;
}
}
}
for(int i = 0; i < n; i++)
cout<
}
int main()
{
string SN, sn, ss;
cin>>SN;

int n = SN.length();
for(int i = 0; i < n; i++)
{
    if(isdigit(SN[i]))
    {
        sn = SN[i];//给sn赋值
    }
    if(isalpha(SN[i]))
    {
       ss =  SN[i];//给ss赋值
    }
}
f(ss);
sort(sn);
sortD(ss);

cout<//字符串相加

return 0;

}