немного отформатировал и поправил:
#include<stdio.h>
#include<string.h>
int main(){
char s[] = "saflkasnklfjaskljdfawepruqwuivn,xnzJFSFFNDASVKOEOMWFNDF";
char c;
int l = strlen(s);
for(int i=0; i<l; i++)
{
if(s[i]>='a')
s[i]-=32;
}
for(int i=0; i < l ;i++)
{
for(int j= i+1; j<l; j++)
{
if(s[i]>s[j])
{
c=s[i];
s[i]=s[j];
s[j]=c;
}
}
}
for(i=0;i<l;i++)
{
if(s[i]>='J'&&s[i]<='S')
printf("%c",s[i]);
//scanf("%c"); // непонятно зачем
}
getchar();
return 0; // требует стандарт
}
поиграл немного с STL

решения:
решений номер 2(первое предложила Наталья, которая кстати молодец

)
struct ToUpperFnc
{
template<typename T>
void operator()(T & c) const { c = toupper(c); }
};
template<typename T>
bool CheckChar(T c)
{
return c < 'J' || c > 'S';
}
void Solution2(const std::string & s_in)
{
std::string s = s_in;
// можно заменить на copy_if
std::for_each(s.begin(), s.end(), ToUpperFnc());
std::string::iterator it = std::remove_if(s.begin(), s.end(), CheckChar<char>);
s.erase(it, s.end());
std::sort(s.begin(), s.end());
// можно закомментрировать, если нужны все буквы
it = std::unique(s.begin(), s.end());
s.erase(it, s.end());
// вывод результата
std::cout << s << std::endl;
}
решение 3:
template <typename TCont>
struct InsertFnc
{
TCont & cont_;
InsertFnc(TCont & c) : cont_(c) {}
template<typename T>
void operator()(T & c)
{
char up_c = toupper(c);
if (!CheckChar(up_c))
cont_.insert(up_c);
}
};
template<typename T>
void printT(const T & c)
{
std::cout << c;
}
void Solution3(const std::string & s_in)
{
std::set<char> s; // можно заменить на multi_set, если нужны все буквы (с повторами)
InsertFnc<std::set<char> > f(s);
std::for_each(s_in.begin(), s_in.end(), f);
// вывод результата
std::for_each(s.begin(), s.end(), printT<char>);
std::cout << std::endl;
}