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两处为什么还要再次分开限制大小和赋值?我菜鸟,很笨的

A处执行完毕后,数组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语言简单程序解释一下的主要内容,如果未能解决你的问题,请参考以下文章

帮我解释一下这个C语言程序?

c语言程序解释

有人能帮解释一下下面的C语言代码吗?主要是指针

麻烦哪位高手解释一下这个C语言程序中,那个word 有啥用?

C语言计算器

麻烦哪位高手帮忙解释一下c语言中gcd函数的用法,最好整点简单的例子,谢啦