一个字符串,存放在一个数组中,编程序将其改造之后输出:
(1)将S的所有第偶数个字符按照从大到小的次序放在S的后半部分;
(2)将S的所有第奇数个字符按照从小到大的次序放在S的前半部分;
解题思路:
原思路为挑出偶数位置的字符直接放在字符串的最后面,后来发现偶数位置字符需要从大到小排列;
改变策略为把偶数位置字符直接剪切到另一个数组中,运行并修改了几遍,发现输出的结果总是有问题,后来发现直接剪切后,原数组字符数量减少,奇偶位置的字符改变;
最终决定分出两组新数组,一组存放奇数位置数组,一组存放偶数位置数组,原数组保持不变用来判断奇偶位置,然后对两新数组内字符进行排序,最终合并·排好序的两数组并输出。
运行代码:
#include <stdio.h>
#include<string.h>
int main() {
char a[15];
gets(a);
int n=strlen(a);
char b[15]="", c[15]="";
int B=0, C=0;
for(int i=0;i<n;i++)
{
if((i+1)%2==0)
{
b[B]=a[i];
B++;
}
else
{
c[C]=a[i];
C++;
}
}
b[B]='\0';
c[C]='\0';
int A;
for(int i=0;i<C-1;i++)
{
for(int j=0;j<C-1-i;j++)
{
if(c[j]>c[j+1])
{
A=c[j];
c[j]=c[j+1];
c[j+1]=A;
}
}
}
for(int i=0;i<B-1;i++)
{
for(int j=0;j<B-1-i;j++)
{
if(b[j]<b[j+1])
{
A=b[j];
b[j]=b[j+1];
b[j+1]=A;
}
}
}
strcpy(a, c);
strcat(a, b);
printf("%s",a);
return 0;
}
涉及知识点:
1.字符数组的输入与输出
2.数组内容的增删
3.冒泡排序
4.字符比大小等
我会吸取这次写题的思路与经验,尚未掌握的知识还有很多,学习之路还很长,继续努力!
489

被折叠的 条评论
为什么被折叠?



