读入一个字符串,字符串中包含ABC三个字符,个数不一定相等,按ABC的顺序输出,当某个字符用完时,剩下的仍然按照ABC的顺序输出。
输入格式:
题目包含多组用例,每组用例占一行,包含ABC三个字符,当输入“E”时表示输入结束。 1<=length<=100。
输出格式:
对于每组输入,请输出一行,表示按照要求处理后的字符串。 具体可见样例。
输入样例:
在这里给出一组输入。例如:
AABBBCCC
AAAABBBBBCCC
ABBBCC
E
结尾无空行
输出样例:
在这里给出相应的输出。例如:
ABCABCBC
ABCABCABCABB
ABCBCB
结尾无空行
#include<stdio.h>
#include<string.h>
int main(){
char x[100];
while(scanf("%s",x)){
if(strcmp(x,"E")==0)
break;
int a=0,b=0,c=0,i=0;
for(i=0;x[i]!='\0';i++){
if(x[i]=='A')
a++;
else if(x[i]=='B')
b++;
else if(x[i]=='C')
c++;
}
while(a!=0||b!=0||c!=0){
if(a!=0){
printf("A");
a--;
}
if(b!=0){
printf("B");
b--;
}
if(c!=0){
printf("C");
c--;
}
}
printf("\n");
}
return 0;
}
思路:首先进行循环输入,如果输入的是E就结束循环,要注意的是字符串的比较是用strcmp()函数的,不要直接比较。然后遍历输入的字符串的每一个字符,分别用,a,b,c三个整型变量表示字符串内的A,B,C的个数,然后再循环输出a,b,c对应的A,B,C的个数,再每一次输出的时候都要进行减一,注意a,b,c的初始化要放在循环体内,以保证每一次进行循环输入的时候A,B,C的个数都是0,进行新的一轮输出