乐投科技笔试题:C语言编程挑战

需积分: 9 3 下载量 140 浏览量 更新于2024-09-23 收藏 35KB DOC 举报
"乐投科技的笔试题目涉及C语言,主要测试软件开发工程师的技能,时间限制为30分钟。题目不受特定厂商编译器的影响,所有代码示例、问题和C++规则均来源于《Annotated C++ Reference Manual》。请注意,不要在试卷上做任何标记。" 现在我们详细分析一下这些题目及其相关的知识点: 1. 题目一考察了自增自减操作符的优先级。`j=(--i)*(i++)`首先进行`--i`,使`i`变为5,然后乘以`i++`(此时`i`仍为5,但之后会变为6),所以`j`的初始值为25。接着`i`被自增为6。因此,`i`=6, `j`=25。 2. 题目二涉及宏定义和算术运算。`#define add(a,b) a+b`创建了一个宏,将两个参数相加。`z=36/add(y,x)`等价于`z=36/(4+2)`,计算后`z`的值为6。 3. 题目三考察类型转换和数组操作。将`short`指针指向`char`数组的第三个元素,即`a[2]`,然后将某个值赋给它。题目没有提供具体赋值,因此无法计算确切结果。但需要注意不同类型之间的转换可能会带来字节对齐问题。 4. 题目四是一个关于函数调用和数组的题目。`cal()`函数修改了传入数组`b`的值,同时影响了全局数组`a`。函数返回值是`a[1]`加上修改后的`b[1]`,即5+5=10。所以`j`的值是10,程序输出`j=10`。 5. 题目五涉及过程调用和传参方式。`procedure p(x,y,z);`是一个过程(非函数),如果参数传递是按引用传递(Call By Reference),那么在`p(A+B,A,A)`执行后,`A`的值将被内部的`y`更新,因为`y:=y+1;`相当于`A:=A+1;`,所以`A`的值会增加1,变成4。 6-8. 这部分题目涉及到C++的面向对象特性。`class A`有一个虚函数`print()`,而`class B`是`A`的虚基类。由于信息不完整,无法解答具体的6-8题,但可以推测这可能与继承、虚函数和对象调用有关。 总结来说,这些题目涵盖了C语言的基础知识,如自增自减运算符、宏定义、类型转换、数组操作、函数调用和参数传递,以及C++的面向对象特性如虚函数和继承。通过解答这些题目,可以评估应聘者对C/C++编程语言的理解和应用能力。