c语言编程题

从键盘输入3个字符串,每个字符串以回车符作为结束标志,将三个字符串以输入先后顺序合并到字符串s中。... 从键盘输入3个字符串,每个字符串以回车符作为结束标志,将三个字符串以输入先后顺序合并到字符串s中。 展开
 我来答
蔺涉波清心
2020-06-02 · TA获得超过3862个赞
知道大有可为答主
回答量:3047
采纳率:30%
帮助的人:199万
展开全部
#include
#include
#include
#include
#include

//定义二叉树节点数据结构
typedef
struct
node{
struct
node
*lchild;
char
data;
struct
node
*rchild;
}bitnode,*bitree;
//构造截取子串函数,start从零开始.
char
*get_substr(char
*strDest,int
start,int
end)
{
if(start>end)
return
NULL;
//如果左子树或右子树为空则返回空串
char
*strSub;
//字串指针
strSub=(char*)malloc((end-start+2)*sizeof(char));
int
i;
for(i=start;i<=end;i++)
strSub[i-start]=strDest[i];
strSub[end-start+1]='\0';
return
strSub;
}
//前序遍历二叉树,并输出
void
preorder_traverse(bitree
bt){
if(bt
!=
NULL)
{
printf("%c",bt->data);
preorder_traverse(bt->lchild);
preorder_traverse(bt->rchild);
}
}
//根据中序和后序遍历结果递归构造二叉树,并返回根指针
bitree
create_bitree(char
*inorder,char
*postorder)
//inorder和postoeder分别为中序和后序遍历的结果字符串
{
if(inorder==NULL
||
postorder==NULL)
return
NULL;
//空串则返回空树
char
root_data;//根节点字符
char
*lchild_instr,*lchild_postr,*rchild_instr,*rchild_postr;//左子树和右子树中序及后序字符串
int
i,len;
len=strlen(inorder);
//中序和后序字符串长度相等
bitree
new_bitree=(bitree)malloc(sizeof(bitnode));
root_data=postorder[len-1];//树的根节点必然为中序遍历的最后一个字符
new_bitree->data=root_data;
for(i=0;i<len;i++)
//找到根节点在中序遍历中位置
{
if(inorder[i]==root_data)
break;
}
//确定左子树和右子树中序及后序字符串
lchild_instr=get_substr(inorder,0,i-1);
lchild_postr=get_substr(postorder,0,i-1);
rchild_instr=get_substr(inorder,i+1,len-1);
rchild_postr=get_substr(postorder,i,len-2);
//递归构造子树
new_bitree->lchild=create_bitree(lchild_instr,lchild_postr);
new_bitree->rchild=create_bitree(rchild_instr,rchild_postr);
return
new_bitree;
}
void
main(){
char
inorder[20]="BDCEAFHG";
char
postorder[20]="DECBHGFA";
bitree
root;
root=create_bitree(inorder,postorder);
//输出前序遍历结果
printf("the
binary
tree
in
preorder
is:\n");
preorder_traverse(root);
_getch();
}
//满意的话别忘了多加点分哈
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
刀劈华山
2018-05-22 · TA获得超过2272个赞
知道小有建树答主
回答量:1338
采纳率:72%
帮助的人:374万
展开全部
#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[])
{
 int i = 0;
 char a[3][32] = {{0}};//定义一个2维数组 3组字符串 每组最大32字符
 char s[128] = {0};  //字符串合并后的s字符串 理论上长度大于3*32就可以了
 
 for (i = 0; i < 3; i++)
 {
  //监听stdin也就是键盘输入
  fgets(a[i], 32, stdin);
  
  //由于fgets会把回车也获取出来 所以字符串的最后一个回车换成字符串的结束符'\0'
  a[i][strlen(a[i])-1] = '\0';
  
  //将获取到的字符串拼接到s后面
  strcat(s, a[i]);
 }
 
 printf("[%s]\n", s);//将s打印出来
 
 return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
microroom
科技发烧友

2018-05-22 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:7118
采纳率:83%
帮助的人:1499万
展开全部
#include<stdio.h>

int main()
{
char s[1024];
int i=0,c=0;

while(c<3)
{
s[i]=getchar();
if('\n'==s[i])
c++;
else
{
i++;
}
}
s[i]='\0';
puts(s);
return 0;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ee2f84f05a
2018-05-22 · TA获得超过118个赞
知道小有建树答主
回答量:209
采纳率:0%
帮助的人:87.5万
展开全部
for int i=0;i<3;i++
    cin>>a
    s+=a
print(s)

追问
全面一点
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式