C和C++程序员面试秘笈 - (EPUB全文下载)
文件大小:0.46 mb。
文件格式:epub 格式。
书籍内容:
C和C++程序员面试秘笈
第1章 C/C++程序基础
第2章 预处理、const、static与sizeof
第3章 引用和指针
第4章 字符串
第5章 位运算与嵌入式编程
第6章 C++面向对象
第7章 C++继承和多态
第8章 数据结构
第9章 排序
第10章 泛型编程
第11章 STL(标准模板库)
第12章 智力测试题
版权
第1章 C/C++程序基础
作为程序员,你在求职时,公司会询问你的项目经验,例如你做过什么类型的项目、担任的是何种角色,以及做项目时如何与他人沟通,等等。除此之外,当然还要考查你的编程能力。这里包括你的编程风格,以及你对于赋值语句、递增语句、类型转换、数据交换等程序设计基本概念的理解。因此,最好在考试之前复习这些程序设计的基本概念,并且要特别重视那些比较细致的考点问题。本章列出了一些涉及C/C++程序设计基本概念的考题,希望读者在读完后能有所收获。
面试题1 看代码写输出——一般赋值语句
考点:一般赋值语句的概念和方法
出现频率:★★★
1 #include
2
3 int main(void)
4 {
5 int x = 3, y, z;
6
7 x *= (y = z = 4); printf("x = %d\n", x);
8
9 z = 2;
10 x = (y = z); printf("x = %d\n", x);
11 x = (y == z); printf("x = %d\n", x);
12 x = (y & z); printf("x = %d\n", x);
13 x = (y && z); printf("x = %d\n", x);
14
15 y = 4;
16 x = (y | z); printf("x = %d\n", x);
17 x = (y || z); printf("x = %d\n", x);
18
19 x = (y == z)? 4: 5;
20 printf("x = %d\n", x);
21
22 x = (y == z)? 1: (y < z)? 2: 3;
23 printf("x = %d\n", x);
24
25 return 0;
26 }
【解析】
程序的说明如下:
程序执行至第8 行时,x 的值为3,y 和z 未被初始化。此行的执行顺序是首先执行z=4,然后执行y=z,最后执行x*=y。因此x的值为3*4=12。
程序执行至第 10 行时,z 的值为 2。此行的执行顺序是首先执行 y=z,然后执行x=y。因此x的值为2。
程序执行至第11 行时,y 和z 的值都为2。此行的执行顺序是首先执行y==z,比较y和z的值是否相等,然后将比较的结果赋给x。因此x的值为1。
程序执行至第12 行时,y和z 的值都为2。此行把y和z 做按位与(&)运算的结果赋给变量x。y 和z 的二进制都是10,因此y & z 的结果为二进制10。因此x的值为2。
程序执行至第13 行时,y和z 的值都为2。此行把y和z 做逻辑与(&&)运算的结果赋给变量x。此时y和z 的值都不是0,因此y && z 的结果为1。因此x 的值为1。
程序执行至第16 行时,y的值为4,z 的值为2。此行把y和z 做按位或(|)运算的结果赋给变量x。此时y和z的二进制表示分别为100和010,因此y|z的结果为110。因此x的值为110,十进制表示为6。
程序执行至第17 行时,y 的值为4,z 的值为2。此行把y 和z 做逻辑或(||)运算的结果赋给变量x。此时y和z的值都不是0,因此y||z的结果为1。因此x的值为1。
程序执行至第19 行时,y的值为4,z 的值为2。此行首先比较y 和z 的大小是否相等,如果相等,则将x取4和5的前者,否则x取4和5的后者。在这里,y不等于z,因此x的值为5。
程序执行至第22 行时,y的值为4,z 的值为2。此行首先比较y 和z 大小是否相等,如果相等,x取1,否则,判断y是否大于z,如果是,则取2,否则取3。在这里,y的值大于z的值,因此x的值为3。
总结:这个考题只是考查各种基本的赋值运算。这里,读者要注意位运算与逻辑运算的区别,以及三元操作符的用法。通过程序代码 17 行以及 19 行的举例,我们可以发现三元操作符有时可以代替条件判断if/else/else if的组合。
【答案】
x = 12
x = 2
x = 1
x = 2
x = 1
x = 6
x = 1
x = 5
x = 3
面试题2 看代码写输出——C++域操作符
考点:C++域操作符的使用
出现频率:★★★
请指出下面这个程序在C和C++中的输出分别是什么。
1 #include
2
3 int value = 0;
4
5 void printvalue()
6 {
7 printf("value = %d\n", value);
8 };
9
10 int main()
11 {
12 int value = 0;
13
14 value = 1;
15 printf("value = %d\n", value);
16
17 ::value = 2;
18 printvalue();
19
20 return 0;
21 }
【解析】
如果将文件保存为后缀名为.c的文件,则在Visual C++ 6.0中不能通过编译并且提示17行有语法错误。而如果文件保存为后缀名为.cpp的文件,则在Visual C++ 6.0中就能顺利通过编译并且运行。
这段程序有两个变量,其名字都是value。不同的是,其中一个是在main函数之前就声明的全局变量,而另外一个是在main函数内部声明的局部变量。这两个变量的作用域是不一样的。
这里要注意:在函数printvalue里打印的是全局变量的值,在main函数的15行打印的是局部变量的值。这是因为在main函数里的局 ............
以上为书籍内容预览,如需阅读全文内容请下载EPUB源文件,祝您阅读愉快。
书云 Open E-Library » C和C++程序员面试秘笈 - (EPUB全文下载)