您的位置:首页 > 编程语言 > C语言/C++

字符排序(美团网笔试题)C语言实现

2014-09-11 22:01 106 查看


#include<stdio.h>
#include<string.h>
void sort(char str[],int len)
{
int i,j;
int temp;
for (i=0;i<len;i++)
{
for (j=len-1;j>i;j--)
{
if (str[j]-str[j-1]==32||str[j-1]-str[j]==32)
{
if (str[j]-str[j-1]==32)
{
temp=str[j];
str[j]=str[j-1];
str[j-1]=temp;
}
}
else
if ((str[j]>='A'&&str[j]<='Z'&&str[j-1]>='A'&&str[j-1]<='Z')||(str[j]>='a'&&str[j]<='z'&&str[j-1]>='a'&&str[j-1]<='z'))
{
if (str[j]<str[j-1])
{
temp=str[j];
str[j]=str[j-1];
str[j-1]=temp;
}
}
else
if (str[j]>='a'&&str[j]<='z'&&str[j-1]>='A'&&str[j-1]<='Z')
{
if (str[j]<(str[j-1]+32))
{
temp=str[j];
str[j]=str[j-1];
str[j-1]=temp;
}
}
else if (str[j-1]>='a'&&str[j-1]<='z'&&str[j]>='A'&&str[j]<='Z')
{
if ((str[j]+32)<str[j-1])
{
temp=str[j];
str[j]=str[j-1];
str[j-1]=temp;
}
}

}
}
for (i=0;i<len;i++)
{
if(i!=len-1)
printf("%c,",str[i]);
else
printf("%c\n",str[i]);
}
}
int main()
{
char str[1024];
char ch;
int num=0;
while(scanf("%c",&ch)==1)
{
if(ch!=',')
str[num++]=ch;
}
//gets(str);
sort(str,num-1);
return 0;
}
注意字符串输入时,num会计算enter字符,因此在调用函数时,要num-1.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: