C++ 输入一行纯英文字母的字符串,按照字母表顺序重新排列并输出,先输出小写再输出大写

第一行输入T表示有T个测试实例第二行起,输入一行纯英文字母的字符串,且字母互不相同依次类推连续输入T行.
每行输出排序后的字符串

样例输入
2
SzuCaB
China

样例输出

auzBCS
ahinC

第1个回答  2013-03-20
#include <stdio.h>
void count(char* str, int occur[], int occur_[])
{
while(*str) {
if('a'<=*str&&*str<='z') occur[*str-'a']++;
else if('A'<=*str&&*str<='Z') occur_[*str-'A']++;
str++;
}
}
int main()
{
char s[256];
int c[26]= {0},C[26]= {0},i;
gets(s); /* 输入*/
count(s,c,C);
for(i=0; i<26; i++){
if (c[i] > 0)
printf("%c",(char)('a'+i));
}
for(i=0; i<26; i++){
if (C[i] > 0)
printf("%c",(char)('A'+i));
}
return 0;
}追问

..要连续输入T行 那怎么弄

追答

while(true){
char s[256];
int c[26]= {0},C[26]= {0},i;
gets(s); /* 输入*/
count(s,c,C);
for(i=0; i 0)
printf("%c",(char)('a'+i));
}
for(i=0; i 0)
printf("%c",(char)('A'+i));
}
}

本回答被提问者采纳
第2个回答  2013-03-20
void my_sort(char* a)
{
int len = strlen(a);
int temp = 0;
for (int i = 0; i < len; ++i)
{
for (int j = i +1; j < len; ++j)
{
if (a[i] > a[j])
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
}

int main()

{
cout << "input T:";
int T;
cin >> T;
char** p = new char*[T];
for (int i = 0;i <= T; ++i)
{
*(p+i) = new char[100];
gets(*(p+i));
my_sort(*(p+i));
}
for (int j = 0; j <= T; ++j)
{
cout << *(p+j) << endl;
}
return 0;

}本回答被网友采纳
相似回答