关于c语言的一个问题

从键盘上先后读入两个字符串,假定存储在字符数组s1和s2中。②将字符串s2插入字符串s1中,插入方法为:s2的第i个字符插入到原s1的第i个字符后,如果s2比s1(假定s... 从键盘上先后读入两个字符串,假定存储在字符数组s1和s2中。②将字符串s2插入字符串s1中,插入方法为:s2的第i个字符插入到原s1的第i个字符后,如果s2比s1(假定s1的长度为L1)长,则s2的第L1个字符开始到s2结尾的所有字符按在s2中的顺序放在新生成的s1后。提示,合并时可使用中间数组。例如:
s1输入为"123456789",S2输入为"abcdefghijk",则输出的s1为: 1a2b3c4d5e6f7g8h9ijk
第一题:

#include<stdio.h>

#include<string.h>
#define max 1000
int main (void)
{
char a[max];
char b[max];
char c[max];
int i,n;
printf("please input a string1:");
gets(a);
printf("please input a string2:");
gets(b);
if(strlen(a)<=strlen(b))
{
for(i=0,n=0;i<=max-1||i<strlen(a);++i,++n)
{
c[i+n]=a[i];
c[2*i+1]=b[i];
}
for(i=strlen(a),n=1;i<strlen(b)||i<=max-1;++i,++n)
{
c[2*strlen(a)+n-1]=b[i];
}
c[strlen(a)+strlen(b)]='\0';
printf("%s\n",c);
}
else
{
for(i=0,n=0;i<=max-1||i<strlen(b);++i,++n)
{
c[i+n]=a[i];
c[2*i+1]=b[i];
}
for(i=strlen(b),n=1;i<strlen(a)||i<=max-1;++i,++n)
{
c[2*strlen(b)+n-1]=a[i];
}
c[strlen(a)+strlen(b)+1]='\0';
printf("%s\n",c);
}
return 0;
}
请问为什么我输出的要么是后面一连串的烫,或者后面什么都没有,总之只有第一个循环镶嵌正常,其它都不正常,本人是新手,希望大神能够解答一下,谢谢。。
展开
 我来答
lx_wp
2015-12-01 · 超过14用户采纳过TA的回答
知道答主
回答量:26
采纳率:0%
帮助的人:31.4万
展开全部
你不觉得你每个for循环中都加上;i<=max-1||i<strlen(a)这种或的语句很有问题么~~直接用实际的,不要加上max-1,再试试
TableDI
2024-07-18 广告
VLOOKUP是Excel中用于垂直查找的函数,其基本用法包括四个参数:1. 查找值:即在数据表首列中需要搜索的值。2. 数据表:包含查找值的单元格区域或数组。3. 返回值所在列数:指定返回查询区域中第几列的值。4. 查找方式:选择精确匹配... 点击进入详情页
本回答由TableDI提供
447587096
2015-11-30 · TA获得超过5043个赞
知道大有可为答主
回答量:2504
采纳率:70%
帮助的人:1138万
展开全部
烫说明少了字符串结束标识'\0'
追问
但是我码了'\0'的啊,而且无论是哪一个长,输出还不一样,一种是很多烫,一种是第一个循环过后全是空白了
追答
你的太长没看懂,我写了一个 你看看对不对

#include

#include
#define max 1000
int main (void)
{
char a[max];
char b[max];
char c[max];
int i=0,j=0,k=0,n;
printf("please input a string1:");
gets(a);
printf("please input a string2:");
gets(b);
while(i < strlen(a) && j < strlen(b))
{
if(k % 2 == 0 && i < strlen(a))
c[k++] = a[i++];
else
if(k % 2 != 0 && j < strlen(b))
{
c[k++] = b[j++];
}
}
while(i < strlen(a))
c[k++] = a[i++];
while(j < strlen(b))
c[k++] = b[j++];

c[k] = '\0';
puts(c);
return 0;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式