菜鸟求解已知数组a[10]和b[10]元素的值递增有序,用指针实现将两个数组中的案递增的顺序输出,请大侠帮助

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
int a[10]={1,3,5,7,9,11,13,15,17,19};
int b[10]={2,4,6,8,10,12,14,16,18,20};
int size1=0,size2=0,size=0;
int i,j,k;
size1=strlen(a);
size2=strlen(b);
size=size1+size2;
int *c;
c=(int *)malloc(size);
for(i=0; a[i]!='\0'; i++)
*(c+i)=a[i];
for(j=0; b[j]!='\0'; j++)
*(c+size1+j-1)=b[j];
printf("The array is %d \n",c[k]);
return 1;
free(c);
}

有好几次答案修改不了!
百度知道系统有问题!

首先指出一些错误:
size1=strlen(a);//strlen()函数是用来计算“字符串”长度的,不能用来计算整型数组大小
size2=strlen(b);

printf("The array is %d \n",c[k]);//整型数组不能像字符串数组一样一次输出,必须一个一个元素的输出。

然后说一下思路:
如果仅仅是输出,用不着申请一个数组保存两个数组的元素再输出,直接通过一定的顺序访问就好了。

最后,给出如下代码,谨供参考:
如果各自按顺序输出,可以这么写:

#include<stdio.h>

int main()
{
int a[10]={1,3,5,7,9,11,13,15,17,19};
int b[10]={2,4,6,8,10,12,14,16,18,20};
int size1,size2;
int i,*p;

//计算数组的容量
size1=sizeof(a) / 4;
size2=sizeof(b) / 4;

p = a;
for(i = 0;i < size1;i++)
printf("%d ",*(p+i));
printf("\n");

p = b;
for(i = 0;i < size2;i++)
printf("%d ",*(p+i));
printf("\n");

return 0;
}

//至于 如果要按序输出两数组的元素,

#include<stdio.h>

int main()
{
int a[10]={1,3,5,7,9,11,13,15,17,19};
int b[10]={2,4,6,8,10,12,14,16,18,20};
int size1,size2;
int i = 0,j = 0;
int *p,*q;

p = a;
q = b;

size1 = sizeof(a) / 4;
size2 = sizeof(b) / 4;

//循环,直到a或b的元素被输出尽
while(i < size1 && j < size2)
{
//比较*(p+i)和 *(q+j),输出小的那一个
if(*(p+i) < *(q+j))
{
printf("%d ",*(p+i));
i++;
}
else
{
printf("%d ",*(q+j));
j++;
}
}

//输出剩下的元素
//如果a输出完了,i 会等于 size1,此时会输出b剩下的元素
//同理,如果b输出完了,j 会等于 size2,此时会输出a剩下的元素
while(i < size1)
{
printf("%d ",*(p+i));
i++;
}
while(j < size2)
{
printf("%d ",*(q+j));
j++;
}

printf("\n");

return 0;
}

//当然,如果要的是效果,用数组名和下标访问就够了,用不着用指针
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-03-16
printf("The array is %d \n",c[k]);应该改为printf("The array is %s \n",c[k]);字符串输出应该为%s
相似回答