有好几次答案修改不了!
百度知道系统有问题!
首先指出一些错误:
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;
}
//当然,如果要的是效果,用数组名和下标访问就够了,用不着用指针
温馨提示:内容为网友见解,仅供参考