2.8 面试题选与实例精讲
2.8.1 面试题选
本小节的例子均为知名公司在招聘时使用过的试题。本章内容是C语言的基础部分,单独命题较少,命题时会增加综合题,以测试程序员对基本知识的理解程序,如例2-11、例2-12所示。
例2-11
#include int main() { int a,b,c,d; a=10; b=a++; c=++a; d=10*a++; printf("b,c,d:%d,%d,%d",b,c,d); } |
程序说明。
本程序首先定义了4个整型变量,然后把10赋给变量a。
b = a ++相当于b = a;a = a + 1,因此,该条语句结束后,b的值为10,a的值为11。而"c = ++ a"相当于"a = a + 1";"c = a",该条语句运行结束后a的值变为12,c的值也为12。
对于"d = 10*a ++",这条语句中有3个运算符:=、*和++,乘号运算符*的优先级最高,所以*运算先进行。++运算符只针对变量,因此这条语句相当于"d = 10*(a++);"而不是"d=(10*a)++"。"d=10*(a++)"又相当于"d = 10*a;a = a+1",所以变量d的值为120,a的值为13。
例2-12 用两种方法实现交换两个变量的值。
方法一:使用一个中间变量。
int a=1,b=2,temp; temp=a; a=b; b=temp;
|
程序说明
首先把变量a的值1暂存到变量temp中,temp变量的值为1。
然后把变量b的值2赋给变量a,此时变量a和b的值都为2。
最后把变量temp的值1赋给变量b,此时变量b的值为1,从而实现了两个变量的值交换。
方法二:不借助于任何中间变量。
int a=1,b=2; a=a+b; b=a-b; a=a-b;
|
程序首先把a + b的值赋给a,此时a的值变为a + b即3,b的值不变,仍为2。
语句b = a-b运行之后,b的值为3-2即1,a的值不变仍为3。
语句a = a-b运行之后,a的值为3-1即2,b的值不变仍为1。此时变量a和b的值已经实现了交换。