#include stdio.h
创新互联-专业网站定制、快速模板网站建设、高性价比良庆网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式良庆网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖良庆地区。费用合理售后完善,10多年实体公司更值得信赖。
int merge(int a[],int lena,int b[] ,int lenb,int c[])
{
int i=0,j=0,lenc=0;
while(ilena ||jlenb)
{
if(a[i]b[j])
c[lenc++]=a[i++];
else
c[lenc++]=b[j++];
}
if(ilena)
for(i;ilena;i++) c[lenc++]=a[i];
if(jlenb)
for(j;jlenb;j++) c[lenc++]=b[j];
return lenc;
}
int main()
{
int a[]={1,3,5,7},b[]={2,4,6,8,10},c[100],i,lenc;
lenc=merge(a,sizeof(a)/sizeof(a[0]),b,sizeof(b)/sizeof(b[0]),c);
for(i=0;ilenc;i++) printf("%d\n",c[i]);
return 1;
}
并不是说类型不匹配,是因为在使用merge之前未定义,把merge放到mergeSor前面,或是在最开始写上这句:
void
merge(int*,int,int,int);
希望对你能有所帮助。
#includestring.h
void merge(char *s){
int k=strlen(s);
for(int i=k-1,l=k;i=0;i--)
s[k++]=s[i];
s[k]='\0';
}
int main(){
char ss[]="fjweiofwjelfsf";
merge(ss);
printf("%s",ss);
}
因为两个数组的长度是不同的,数组a的元素个数是n,数组b的元素个数是m。for循环是在两个数组中分别比较元素的大小,指针c指向两个数组中较小的那个元素。依次朝后比较。当其中一个数组的元素全部都被遍历完,则指针c 就直接依次指向另外一个数组所有元素,将元素都添加到新数组中。
说的可能有点罗嗦。
举个例子吧
假定 a={1,3,7,}
b={2,4}
按照上面的程序,它的执行顺序是:
1) 比较a中的第一个元素和b中的第一个元素,12,指针指向1
2) 比较a中的第二个元素和b中的第一个元素,32,指针指向2
3) 比较a中的第二个元素和b中的第二个元素,34, 指针指向3
4) 此时b中的元素全部都被遍历完,则跳出for循环,执行后面的while语句
5) 因为a中的元素还没有被遍历完,则执行第一个while语句,指针依次指向a中的剩余元素,一直到a中的元素都被遍历完为止。
c最后得到的结果就是{1,2,3,4,7}
希望说明白了,能够帮到你
完整代码如下,有任何疑问可以追问。
#include stdio.h
#include stdlib.h
int merge(char *in1,char *in2,char *out)
{
FILE *f_in,*f_out;
int n;
char buf[4096];
//打开输出文件
f_out=fopen(out,"wb");
if(!f_out) return 0;
//打开并读第一个文件写到输出文件
f_in=fopen(in1,"rb");
if(!f_in) return 0;
while(n=fread(buf,1,sizeof(buf),f_in))
{
fwrite(buf,1,n,f_out);
}
fclose(f_in);
//打开并读第二个文件写到输出文件
f_in=fopen(in2,"rb");
if(!f_in) return 0;
while(n=fread(buf,1,sizeof(buf),f_in))
{
fwrite(buf,1,n,f_out);
}
fclose(f_in);
fclose(f_out);
return 1;
}
int main()
{
if (!merge (“1.txt”, “2.txt”, “3.txt”))
printf(“Failed”);
else
printf(“successfully”);
return 0;
}