当在大学期间学习了c语言以后发现自己的真的对编程只是停留在初级阶段,没有理解编程的思维或者懂自己的脑子去思考解决问题的能力。这就是大学缺少思考带来的结果。当面试几次发现,自己的能力真的不行的时候,不由得恐惧起来。
今天开始我要开始思考这去解决问题,记录自己学习的编程的过程。
先写一个面试题目吧,面试公司是一家叫做瑞斯康达科技发展有限公司,题目很简单,在选择题中,如下;
#include<stdio.h>
int main(void)
{
int x=10, y=10,i;
for(i=0; x>8; y=++i)
prinrf("%d, %d",x--,y);
}
看看这题真的很简单,但是我们还是从最基础的开始。就从for循环开始讲解这道题考什么。
printf()打印的x--和y的值。我们分析一下就知道了。刚开始x的值是10,符合x>8这个判断的要求。所以第一次打印就是x--,从左往右先把x的值赋值给%d然后才执行--,所以打印出来就是10,而不是9。第二个就是y的打印,for循环先执行第一句i=10,然后做判断是否x>8,如果满足条件执行循环里面的语句,当循环中的语句执行完了以后,再回来执行y=++i这句,那么我们第一次打印当然不会去改变y=10的值。所以输出第一次的打印的字符如下:
10,10,
第二次还是判断x>8是否成立,从第一次执行完后,x变成了x=9了,但是还是满足条件的,进入循环中。由上面解释的同样的道理可知,x=9,而此时y已经变了。y先执行++i这句,因为从左往右++的优先级大于=的优先级的,故++i后为1,赋值给y后,y变成了1。所以最终第二次循环完了以后,最终显示结果如下:
9, 1
第三次进行判断,此时x变为8,不符合判断的条件,因此将推出循环,结束程序。但是程序的最终显示为如下:
10,109,1