C语言代码:已知两个字符串,把第一个字符串的头3个字符和第二个字符串的末尾3个字符合并成一个新字符串

题目描述
已知两个字符串,把第一个字符串的头3个字符和第二个字符串的末尾3个字符合并成一个新字符串

输入:
第一行输入T表示有T个测试实例

第二行输入第1个字符串,设定字符串只包含字母或数字,长度大于3

第三行输入第2个字符串,设定字符串只包含字母或数字,长度大于3

以此类推输入下个实例

输出:
每行输出合并后新的字符串

样例输入

2
china1949

szu1983

2012year

day14
样例输出

chi983

201y14

以下是我的公式,但是错的:

#include<stdio.h>
#include<string.h>
int main()
{
int T;
int i,j;
int b;
char stra[100],strb[100],strc[7];

scanf("%d%*c",&T);

while(T--)
{
scanf("%s%*c",stra);
scanf("%s%*c",strb);

b = strlen(strb) - 1;

for(i=0;i<3;i++)
strc[i]=stra[i];

for(i=b-3,j=3;i<b;i++,j++)
{
strc[j]=strb[i];

}

puts(strc);
}

return 0;
}

如果把最后的for语句中的i<b改为j<7则答案正确,我想知道我的答案有什么关键性错误吗?

#include<stdio.h>
#include<string.h>
int main()
{
int T;
int i,j;
int b;
char stra[100],strb[100],strc[7];

scanf("%d%*c",&T);

while(T--)
{
scanf("%s%*c",stra);
scanf("%s%*c",strb);

b = strlen(strb) ;//这里不用减1

for(i=0;i<3;i++)
strc[i]=stra[i];

for(i=b-3,j=3;i<=b;i++,j++)//这里i<=b
{
strc[j]=strb[i];

}

puts(strc);
}

return 0;
}
给你改了 对了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-11-26
#include <stdio.h>
#include <string.h>

int main(void)
{

char a[80],b[80];//两个字符串
char c[10];//新字符串
int len2;
int i,j,k=0;
printf("请输入字符串a:");
gets(a);
printf("请输入字符串b:");
gets(b);
for(i = 0; i < 3; i++)
{
c[k++] = a[i];
}
len2 = strlen(b);
for(i = len2-3; i <= len2; i++)
{
c[k++] = b[i];

}
puts(c);//输出新字符串

return 0;
}
第2个回答  2015-11-26
b = strlen(strb) - 1;这里不需要减去一个字符
相似回答