【问题描述】
输入若干个字符串(每个字符串的长度不超过30个字符,字符串总数不超过30),和一个英文字符ch。 要求: - 删除每个字符串中的字符ch(区分大小写),得到新的字符串 - 将新的字符串按照字典逆序排序后输出
【输入形式】
-
第一行输入英文字符ch
-
每一行输入一个字符串
-
最后一行单独输入特殊字符@做为结束标志
【输出形式】
-
删除ch的新字符串按字典逆序输出
-
每行输出一个字符串
【样例输入】
e shangejiao fudean teongji shangcai @
【样例输出】
tongji shangjiao shangcai fudan
参考代码:
#include<stdio.h>
#include<string.h>
int main()
{
char a[30][30], n, c[30][30]={""};
char arr[30];
int i=0, j, temp=0,end=0, m1 = 0, m2 = 0,k;
scanf("%c", &n);
while(!end)
{
scanf("%s",&a[i]);//这个地方如果用gets(a[i]),则输入的字符串不能有一对的引号。
if(strcmp(a[i],"@")!=0)
{
i++;
}
else
end=1;
}
k=i;
for(i=0,m1=0;i<k;i++,m1++)
{
for(j=0,m2=0;j<30;j++,m2++)
{
while(a[i][j]==n)//不能用if,不能解决有多个n字符在一起的字符串
{
j++;
}
c[m1][m2]=a[i][j];
}
}
for(i=0;i<k;i++)
{
for(j=i+1;j<k;j++)
{
if(strcmp(c[i],c[j])<0)
{
strcpy(arr,c[i]);
strcpy(c[i],c[j]);
strcpy(c[j],arr);
}
}
}
for(i=0;i<k;i++)
{
puts(c[i]);
}
return 0;
}