上篇日志中提出了一个EMC某年的笔试题目,题目如下:
题目:
函数声明如下:
int func(int i, int N); |
其中,i<=N, 功能输出i递增到N再递减到i的整数,每行输出一个数。比如func(1, 5)的输出是:
1 2 3 4 5 4 3 2 1 |
要求:
- 函数中只能有一个语句,即1个分号。
- 不能使用do while until goto for if关键字,不能使用?:和逗号操作符。
- 唯一能使用的库函数为printf。
我们都知道,&&是逻辑与, ||是逻辑或。对于这两个运算符,有下面的性质:
1 && 1 = 1; 1 && 0 = 0; 0 && 1 = 0; 0 && 0 = 0; 1 || 1 = 1; 1 || 0 = 1; 0 || 1 = 1; 0 || 0 = 0; |
出了这些基本的性质之外,额外需要注意的是,在C语言中,这两个运算符有如下的性质:
- && 的 优先级高于 ||。
让我们看如下代码:
fork
是linux下的一个系统调用,它的作用是产生一个子进程,子进程是当前进程的一个副本,它跟父进程有一样的虚存内容,但也有一些不同点,读者可以自己参考这里。
但是,值得注意的是,父进程调用fork()后,fork()返回的是生成的子进程(如果能顺利生成的话)的ID。子进程执行的起点也是代码中fork的位置,不同的是子进程fork()返回的是0。如下代码:
int i; i = fork(); printf("%dn",i); |
这段代码中,父进程打印出来的值是“子进程id”,而子进程打印出来的是0。
www.spongeliu.com
好了,废话介绍完了,让我们切入正题,看两个比较有意思的C语言题目。
www.spongeliu.com
最新回复评论