编一程序,将两个字符串连接起来,不用strcat函数,给个思想吧!

keyinwind 2002-11-04 02:29:08
我按照数据结构书上给的算法写的,没有写完

#define MAXSTRLEN 255
#include<stdio.h>
#include<string.h>


typedef unsigned char SString[MAXSTRLEN+1];//0号单元存放串的长度

main()
{
printf("input the first string :\n);
scanf("%s :\n",&string1);
printf("input the second string :\n);
scanf("%s :\n",&string2);
Concat(T,string1,string2);

}

string Concat(SString &T ,SString S1,SString S2)
{
if(S1[0]+S2[0]<=MAXSTRLEN)
{
T[1..S1[0]] = S1[1..S1[0]];
T[S1[0]+1..S1[0]+S2[0]] = S2[1..S2[0]];
T[0]=S1[0]+S2[0];
}
}

上面的代码只给出了T够大,S2未被截断的情况
我的问题是:
if(S1[0]+S2[0]<=MAXSTRLEN)
{
T[1..S1[0]] = S1[1..S1[0]];
T[S1[0]+1..S1[0]+S2[0]] = S2[1..S2[0]];
T[0]=S1[0]+S2[0];
}
这一步怎样写出来
我这么写(但是有问题!):
if (strlen(S1)+strlen(S2)<=MAXSTRLEN)
{ for(int i=1;i<=strlen(S1);i++)
T[i]=S1[i];
T[strlen(S1)+i]=S2[i];
T[0]=S1[0]+S2[0];
}
但是无法实现!
该怎么改? 哪里可以下载到 谭老 C程序设计 的课后习题的答案? 急用!
另外请帮忙丢上杨辉三角的算法! 拜谢!

...全文
1071 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zxm954712 2002-11-04
  • 打赏
  • 举报
回复
杨辉三角算法:
for(i=3; i< 行数; i++)
for(j =2 ; j <= i-1; j++)
a[i][j] = a[i-1][j-1] + a[i-1][j];
tanyangbin 2002-11-04
  • 打赏
  • 举报
回复
int j;
if (strlen(s1)+strlen(s2)<=maxstrlen)
{ for(int i=1;i<=strlen(S1);i++)
t[j++]=s1[i];
for(int i=1;i<=maxstrlen;i++)
t[j++]=s2[i];
t[0]=s1[0]+s2[0];
}
zxm954712 2002-11-04
  • 打赏
  • 举报
回复
可以这样啊,S1[0]表示S1的长度,S2[0]表示S2的长度:
if (S1[0] + S2[0] <= MAXSSTRLEN) {
for(int iFor=1; iFor <= S1[0]; iFor++) {
T[iFor] = S1[iFor];
}
for(iFor=1; iFor<= S2[0]; iFor++) {
T[S1[0]+iFor] = S2[iFor];
}
T[0] = S1[0] + S2[0];
}
black_snail 2002-11-04
  • 打赏
  • 举报
回复
哪里可以下载到 谭老 C程序设计 的课后习题的答案: SSREADER
if (strlen(S1)+strlen(S2)<=MAXSTRLEN)
{ for(int i=1;i<=strlen(S1);i++)
T[i]=S1[i];
T[strlen(S1)+i]=S2[i];
T[0]=S1[0]+S2[0];
}
--->
if (strlen(S1)+strlen(S2)+1<=MAXSTRLEN)
{ for(int i=0;i<=strlen(S1);i++)
T[i]=S1[i];
T[strlen(S1)+i]=S2[i];
T[0]=S1[0]+S2[0];
}

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧