c语言简单程序解释一下
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言简单程序解释一下相关的知识,希望对你有一定的参考价值。
两个升序列,[1,3,5],[4,6,7],利用指针把他们合并成一个序列并升序输出,可以定义一个新的数组
#include <stdio.h>
#define A_NUM 3
#define B_NUM 3
#define C_NUM A_NUM+B_NUM
void display(int *p,int c[])
for(p=c; p-c< 6;)
printf("%d ",*p++);
printf("\n");
int *unite(int a[], int b[],int c[])
int *pa, *pb, *pc;
pa = a;
pb = b;
pc = c;
while(pa-a<A_NUM && pb-b<B_NUM) //A
if(*pa<*pb)
*pc++=*pa++;
else
*pc++=*pb++;
while(pa-a<A_NUM) //B
*pc++=*pa++;
while(pb-b<B_NUM) //C
*pc++=*pb++;
return pc;
main()
int a[A_NUM]=1,3,5;
int b[B_NUM]=4,6,7;
int c[C_NUM],*p;
p = unite(a,b,c);
display(p,c);
A处已经限制了数组大小和赋值,B,C两处为什么还要再次分开限制大小和赋值?我菜鸟,很笨的
以本题为例:
程序顺次执行
c[0]=a[0],pc++,pa++;
c[1]=a[1],pc++,pa++;
c[2]=b[0],pc++,pb++;
c[3]=a[2],pc++,pa++;
到这一步pa-ay已经超过A_NUM了,所以while(pa-a<A_NUM && pb-b<B_NUM)的条件不满足,循环终止。
在下来执行while(pb-b<B_NUM) //C处的循环来完成数组c的设置。
程序顺次执行
c[4]=b[1],pc++,pb++;
c[5]=b[2],pc++,pb++;
完毕!
你明白了么? 参考技术A B处是把a中剩余的元素插入;
C处是把b中剩余的元素插入;
例如上题中插入顺序为:
执行A处代码后1 3 4 5
执行C处代码后1 3 4 5 6 7 参考技术B 建议你再仔细学习一下while循环的格式
以上是关于c语言简单程序解释一下的主要内容,如果未能解决你的问题,请参考以下文章