求问我编写的C-Free程序哪里出问题了问题?
答案:1 悬赏:10 手机版
解决时间 2021-11-24 23:37
- 提问者网友:鐵馬踏冰河
- 2021-11-24 17:52
求问我编写的C-Free程序哪里出问题了问题?
最佳答案
- 五星知识达人网友:廢物販賣機
- 2021-11-24 18:21
#include
#include
int main()
{
char a[100],b[100];
char link(char s1[],char s2[]);
int i;
gets(a);
gets(b);
i=link(a,b);
printf("总长=%d
",i);
puts(a);
}
char link(char s1[],char s2[])
{
int i,j=0,l1,l2;
char temp[100];
l1=strlen(s1);
l2=strlen(s2);
if(l1>=l2)
for(i=0;s1[i]!='';i++)
{
temp[j++]=s1[i];
if(s2[i]!='')
temp[j++]=s2[i];
}
else
for(i=0;s2[i]!='';i++)
{
if(s1[i]!='')
temp[j++]=s1[i];
temp[j++]=s2[i];
}
j--;
for(i=0;i<=j;i++)
s1[i]=temp[i];
s1[i]=''; //加个字符串的结束标记
return i;
}追问
还是不行……和之前运行的结果一样,最后几位都会出乱码
追答你设计的有问题,if(l1>=l2)
for(i=0;s1[i]!='';i++)
{
temp[j++]=s1[i];
if(s2[i]!='')
temp[j++]=s2[i];
}
你应该用s2[i]!='' 经行判断,你如果用s1[i]判断,肯定不对
#include
#include
int main()
{
char a[100],b[100];
char link(char s1[],char s2[]);
int i;
gets(a);
gets(b);
i=link(a,b);
printf("总长=%d
",i);
puts(a);
}
char link(char s1[],char s2[])
{
int i,j,min,l1,l2;
char temp[100];
l1=strlen(s1);
l2=strlen(s2);
min=(l1>l2)?l2:l1;
for(i=0;i {
temp[2*i]=s1[i];
temp[2*i+1]=s2[i];
}
if(l1>min)
for(j=min;j temp[min+j]=s1[i];
if(l2>min)
for(j=min;j temp[min+j]=s2[i];
for(i=0;i s1[i]=temp[i];
s1[l1+l2]='';
return l1+l2;
}追问但l1>=l2时说明s2短,如果for( )里面用s2!='\0'进行判断,那temp根本取不到s1(长串)的后面几个字符啊追答if(s2[i]!='\0') 根本不成立。。。。再想想追问嗯谢谢啦,我找到问题了,这样改就对了
if(s2[i]!='\0'&&i<=l2)
下面那个if也这样加个范围就好了
#include
int main()
{
char a[100],b[100];
char link(char s1[],char s2[]);
int i;
gets(a);
gets(b);
i=link(a,b);
printf("总长=%d
",i);
puts(a);
}
char link(char s1[],char s2[])
{
int i,j=0,l1,l2;
char temp[100];
l1=strlen(s1);
l2=strlen(s2);
if(l1>=l2)
for(i=0;s1[i]!='';i++)
{
temp[j++]=s1[i];
if(s2[i]!='')
temp[j++]=s2[i];
}
else
for(i=0;s2[i]!='';i++)
{
if(s1[i]!='')
temp[j++]=s1[i];
temp[j++]=s2[i];
}
j--;
for(i=0;i<=j;i++)
s1[i]=temp[i];
s1[i]=''; //加个字符串的结束标记
return i;
}追问
还是不行……和之前运行的结果一样,最后几位都会出乱码
追答你设计的有问题,if(l1>=l2)
for(i=0;s1[i]!='';i++)
{
temp[j++]=s1[i];
if(s2[i]!='')
temp[j++]=s2[i];
}
你应该用s2[i]!='' 经行判断,你如果用s1[i]判断,肯定不对
#include
#include
int main()
{
char a[100],b[100];
char link(char s1[],char s2[]);
int i;
gets(a);
gets(b);
i=link(a,b);
printf("总长=%d
",i);
puts(a);
}
char link(char s1[],char s2[])
{
int i,j,min,l1,l2;
char temp[100];
l1=strlen(s1);
l2=strlen(s2);
min=(l1>l2)?l2:l1;
for(i=0;i
temp[2*i]=s1[i];
temp[2*i+1]=s2[i];
}
if(l1>min)
for(j=min;j
if(l2>min)
for(j=min;j
for(i=0;i
s1[l1+l2]='';
return l1+l2;
}追问但l1>=l2时说明s2短,如果for( )里面用s2!='\0'进行判断,那temp根本取不到s1(长串)的后面几个字符啊追答if(s2[i]!='\0') 根本不成立。。。。再想想追问嗯谢谢啦,我找到问题了,这样改就对了
if(s2[i]!='\0'&&i<=l2)
下面那个if也这样加个范围就好了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯