用指针编写字符串连接函数。
时间: 1ms 内存:128M
描述:
#include <iostream>
using namespace std;
void scat(char *p1,char *p2)
{
}
int main()
{ char s1[40],s2[20];
cin>>s1>>s2;
scat(s1,s2);
cout<<s1<<endl;
}
输入:
两个字符串
输出:
连接后的字符串
示例输入:
Go home
示例输出:
Gohome
提示:
参考答案(内存最优[1092]):
#include<stdio.h>
int main()
{
char s1[40],s2[40];
scanf("%s%s",s1,s2);
printf("%s%s",s1,s2);
return 0;
}
参考答案(时间最优[0]):
#include <iostream>
using namespace std;
void MergeSort(int p[],int s,int m,int t)
{
int q[100]; //临时数组q[100]用来存放排好的序列
int i,j,k; //i作为左数组起始位置,j作为右数组起始位置,k为临时数组位置
for (i=s,j=m+1,k=0;k<=t-s;k++)
{
if (i==m+1) //当i到达左数组的最后时,将右数组余下元素复制到临时数组中
{
q[k]=p[j];
j++;
continue;
}
if (j==t+1) //当j达到右数组最后时,将左数组剩余元素复制到临时数组中
{
q[k]=p[i];
i++;
continue;
}
if (p[i]<p[j])
{
q[k]=p[i]; //如果第一个数组当前元素比第二个数组当前元素小,将第一个数组元素复制到临时数组
i++;
}
else
{
q[k]=p[j]; //如果第一个数组当前元素比第二个数组当前元素大,将第二个数组元素复制到临时数组
j++;
}
}
for(i=s,j=0;i<=t;i++,j++)//将临时数组的对应各项值赋给数组p[100]
p[i]=q[j];
}
void Merge(int p[],int s,int t)
{
if(s<t)
{
int m=(s+t)/2;
Merge(p,s,m); //递归对左数组进行归并
Merge(p,m+1,t); //递归对左数组进行归并
MergeSort(p,s,m,t); //合并数组
}
}
int main()
{
int n;//n为输入数据的个数
int p[100];
cin>>n;
for(int i=0;i<n;i++) //输入n个数据
cin>>p[i];
Merge(p,0,n-1); //调用函数进行归并
for(int i=0;i<n;i++)
cout<<p[i]<<" "; //输出排列好的序列
cout<<endl;
return 0;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。