方法一: 链表
解题思路: 链表的建立 + 两个链表的连接
注意事项:
参考代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 1000
struct link{
char c;
struct link *next;
};
typedef struct link link;
int main()
{
char s[N];
char s1[N];
link *head ,*p,*q;
head=NULL;
int n;
int sum=0;
char m,c;
scanf("%s",s);
getchar();
scanf("%s",s1);
scanf("%d",&n);
for(int i=0;s[i]!='\0';i++)//链表的建立
{
p = (link*)malloc(sizeof(link));
p->c = s[i];
p->next = NULL;
if(head==NULL)
{
head=p;
}
else
q->next = p;
q=p;
}
link *top = head;
while(top)//找到要连接的位置
{
sum++;
if(sum==n-1)
break;
top=top->next;
}
link *head1=NULL;
for(int i=0;s1[i]!='\0';i++)//对要插入的链表进行创建
{
p = (link*)malloc(sizeof(link));
p->c = s1[i];
p->next = NULL;
if(head1==NULL)
{
head1=p;
}
else
q->next = p;
q=p;
}
if(n==1)//很重要的一点,如果要连接的链表要放在开头,则要要把第一个建立的链表连接到第二个链表的尾部
{
p->next=head;
head=head1;
}
else
{
p->next = top->next;//链表的连接
top->next = head1;
}
while(head!=NULL)//打印链表
{
printf("%c",head->c);
head = head->next;
}
}
方法二:数组
参考的代码:
#include<stdio.h>
#include<string.h>
#define N 1000
int main()
{
char s[N],s1[N];
int num;
scanf("%s",s);
getchar();
scanf("%s",s1);
scanf("%d",&num);
for(int i=0;s[i]!='\0';i++)
{
if(i==num-1)//找到要插入的位置,将剩余数组向后移动strlen(第二个数组)
{
int len =strlen(s1);
for(int k=len+strlen(s)-1;k>=i;k--)
{
s[k+len]=s[k];
}
int j=0;
int m=i;
for(;m<len+i;m++)
{
s[m]=s1[j];
j++;
}
}
}
puts(s);
}
0.0分
1 人评分
2006年春浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:912 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:644 |
数组输出 (C语言代码)错误???浏览:602 |
简单的a+b (C语言代码)浏览:600 |
妹子杀手的故事 (C语言代码)浏览:1297 |
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:564 |
C语言程序设计教程(第三版)课后习题6.5 (C++代码)浏览:487 |
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:582 |
母牛的故事 (C语言代码)浏览:1045 |
1126题解浏览:649 |