c语言字符串提取与合成问题?

用户输入字符串abcdefg,将下标为偶数的字符串提出来合并成一个新的字符串aceg,再将下标为奇数的字符串提出来合并成一个新的字符串bdf,再将两个新的字符串连接起来输... 用户输入字符串abcdefg,将下标为偶数的字符串提出来合并成一个新的字符串aceg,再将下标为奇数的字符串提出来合并成一个新的字符串bdf,再将两个新的字符串连接起来输出acegbdf。 展开
 我来答
自我编程
2021-11-21 · 科技优质答主
自我编程
采纳数:1481 获赞数:4283

向TA提问 私信TA
展开全部

按要求,将原字符串拆分成两个字符串分别单独保存。

思路:

一、两个指针分别指向数组第一项和第二项,对应偶数项和奇数项,之后指针同时循环+2取值保存在对应数组。

二、拼接字符串直接使用字符串函数strcat。(不想使用库函数,也可循环赋值)。

#include <stdio.h>

#include <string.h>

#define M 20 //数组最大长度

int splitStr(char str[],char oStr[],char eStr[]);//拆分str到oStr和eStr

int main()

{

    char str[M+1],oStr[M+1],eStr[M+1];//str为原字符串,oStr为奇数字符串,eStr为偶数字符串

    printf("请输入一个字符串(最大%d个字符):",M);

    scanf("%s",str);

    splitStr(str,oStr,eStr);

    printf("其中奇数项组成的字符串为:%s\n",oStr);

    printf("其中偶数项组成的字符串为:%s\n",eStr);

    strcat(eStr,oStr);//将偶数组和奇数组组合后放在偶数组中

    printf("将偶数组和奇数组组合后新数组为%s\n",eStr);

    return 0;

}

int splitStr(char str[],char oStr[],char eStr[])

{

    int i=0,j=0;

    char *op=str+1,*ep=str;//op指向奇数项,ep指向偶数项,循环+2取值

    while(1)

    {

        if(*ep==0) break;

        if(*ep) eStr[i++]=*ep;

        if(*ep && *op) oStr[j++]=*op;

        if(*op==0) break;

        ep+=2,op+=2;

    }

    eStr[i]=0,oStr[j]=0;

    return 1;

}

shine1991
科技发烧友

2021-11-21 · 智能家居/数码/手机/智能家电产品都懂点
知道顶级答主
回答量:4.7万
采纳率:82%
帮助的人:2.3亿
展开全部

#include <stdio.h>

void func(char *s)

{

    int i;

    for(i=0;s[i];i++)

        if(i%2==0)

            putchar(s[i]);

    for(i=0;s[i];i++)

        if(i%2)

            putchar(s[i]);

}

int main()

{

    char s[100];

    gets(s);

    func(s);

    return 0;

}

追问
大佬 可以用数组的方式实现吗?还有提取出来的两个字符串要先分别输出哦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
听不清啊
高粉答主

2021-11-21 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部

#include <stdio.h>

int main()

{ char s[100],s1[100]={0},s2[50]={0};

  int i,j,k;

  gets(s);

  for(i=j=0;s[i];i++)

    if(i%2==0)s1[j++]=s[i];

  puts(s1);

  for(i=k=0;s[i];i++)

    if(i%2)s2[k++]=s[i];

  puts(s2);

  for(i=0;s2[i];i++)

    s1[j++]=s2[i];  

  puts(s1);

  return 0;

}

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式