关于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;
}
请问为什么我输出的要么是后面一连串的烫,或者后面什么都没有,总之只有第一个循环镶嵌正常,其它都不正常,本人是新手,希望大神能够解答一下,谢谢。。 展开
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;
}
请问为什么我输出的要么是后面一连串的烫,或者后面什么都没有,总之只有第一个循环镶嵌正常,其它都不正常,本人是新手,希望大神能够解答一下,谢谢。。 展开
2个回答
TableDI
2024-07-18 广告
2024-07-18 广告
VLOOKUP是Excel中用于垂直查找的函数,其基本用法包括四个参数:1. 查找值:即在数据表首列中需要搜索的值。2. 数据表:包含查找值的单元格区域或数组。3. 返回值所在列数:指定返回查询区域中第几列的值。4. 查找方式:选择精确匹配...
点击进入详情页
本回答由TableDI提供
展开全部
烫说明少了字符串结束标识'\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;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询