m0_63538177 2021-11-24 09:33 采纳率: 88.6%
浏览 151
已结题

c语言字符串改造题..

描述
一个字符串,存放在一个数组中,编程序将其改造之后输出:
(1)将S的所有第偶数个字符按照从大到小的次序放在S的后半部分;
(2)将S的所有第奇数个字符按照从小到大的次序放在S的前半部分;

格式
输入格式
输入一个字符串
字符串长度小于15

输出格式
输出改造后的字符串

样例
样例输入
ABCDEFGHIJKL
样例输出
ACEGIKLJHFDB

  • 写回答

2条回答 默认 最新

  • 关注

    代码如下:

    #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;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月2日
  • 已采纳回答 11月24日
  • 创建了问题 11月24日

悬赏问题

  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用
  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教