将这两个字符串交叉连接。

来源:互联网 发布:olap oltp 知乎 编辑:程序博客网 时间:2024/06/16 00:12

杂题......表示功力明显不足,这么简单的水题,花的时间却不短。


原题:

输入两个字符串,要求将这两个字符串交叉连接。如串1为"ABCD",串2为"123456",则合并后的串为"A1B2C3D456"。


先贴上代码。


#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <string.h>int main(){int len1, len2, i, j, max;char str1[100], str2[100], tmp;scanf("%s", str1);  //输入1串scanf("%s", str2);  //输入2串len1 = strlen(str1);len2 = strlen(str2);str1[len1] = ' ';max = len1 > len2 ? len1 : len2;for (i = len1 - 1; i > 0; i--){str1[2 * i] = str1[i];str1[2 * i - 1] = ' ';}for (i = 1; i <= len2; i++)str1[2 * i - 1] = str2[i - 1];if (len2 >= len1){j = len1 - 1;for (i = 2 * len1 - 1; i < len1 + len2; i++)str1[i] = str2[j++];}for (i = 0; i < 2 * max - 1; i++){if (str1[i] != ' ')printf("%c", str1[i]);}return 0;}



.....突然发现这个题目做的太复杂了,换了一种解法,直接输出。。。


代码如下:



#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <string.h>int main(){int len1, len2, i = 0, j = 0;char str1[100], str2[100];scanf("%s", str1);scanf("%s", str2);len1 = strlen(str1);len2 = strlen(str2);for (i = 0; i < len1 + len2; i++){if (i < len1)printf("%c", str1[i]);if (j < len2)printf("%c", str2[j++]);}return 0;}








0 0
原创粉丝点击