描述
一个字符串,存放在一个数组中,编程序将其改造之后输出:
(1)将S的所有第偶数个字符按照从大到小的次序放在S的后半部分;
(2)将S的所有第奇数个字符按照从小到大的次序放在S的前半部分;
格式
输入格式
输入一个字符串
字符串长度小于15
输出格式
输出改造后的字符串
样例
样例输入
ABCDEFGHIJKL
样例输出
ACEGIKLJHFDB
描述
一个字符串,存放在一个数组中,编程序将其改造之后输出:
(1)将S的所有第偶数个字符按照从大到小的次序放在S的后半部分;
(2)将S的所有第奇数个字符按照从小到大的次序放在S的前半部分;
格式
输入格式
输入一个字符串
字符串长度小于15
输出格式
输出改造后的字符串
样例
样例输入
ABCDEFGHIJKL
样例输出
ACEGIKLJHFDB
代码如下:
#include <stdio.h>
#include <string.h>
int main()
{
char buf[200],s1[100],s2[100];
int i=0,j=0,k=0;
int p,q;
char ch;
gets(buf);//读取一行字符串
while (buf[i])
{
if(i%2==0)
s1[j++] = buf[i]; //奇数位
else
s2[k++] = buf[i]; //偶数位
i++;
}
s1[j] = 0;
s2[k] = 0;
//偶数位从大到小排序
for (p=0;p<k-1;p++)
{
for (q=0;q<k-1-p;q++)
{
if(s2[q] < s2[q+1])
{
ch = s2[q];
s2[q]=s2[q+1];
s2[q+1]=ch;
}
}
}
//奇数位从小到大排序
for (p=0;p<j-1;p++)
{
for (q=0;q<j-1-p;q++)
{
if(s1[q] > s1[q+1])
{
ch = s1[q];
s1[q]=s1[q+1];
s1[q+1]=ch;
}
}
}
memset(buf,0,200);
strcpy(buf,s1);
strcat(buf,s2);
printf("%s",buf);
return 0;
}