zoukankan      html  css  js  c++  java
  • 一个基础的for循环面试题


    下面的这段程序主要考察的就是for循环的基础,输出什么??????

     

    1. public class test {  
    2.   
    3.     /**  
    4.      * @param args  
    5.      */  
    6.     public static void main(String[] args) {  
    7.         // TODO Auto-generated method stub  
    8.         int i = 0;  
    9.         for (i++; i++ < 10; i++);  
    10.         System.out.println(++i);  
    11.     }  
    12.   
    13. }  


    结果输出是:13,为什么,我第一次看到这个面试题的时候真的是有点蒙的。13是如何得到的?

    分析过程:for循环的基本格式for(A;B;C){}

                       首先执行A,并且A只执行一次(这个地方容易出错),然后执行B,符合条件就执行循环体,若不存在循环体就直接执行B;不符合条件就直接跳出循环体。

    对于这个题目:

                       首先要明白++i和i++的区别:i++,在执行完后i=i+1;++i,在执行前i=i+1

                      对于这个循环可以这样写for(i=i+1;i<10,i=i+1;i++)

                       开始i=0;

                       第一次循环:i++;则判断条件是1<10,i=i+1;成立,执行循环体(若加一个输出语句System.out.println(i)则为2),循环体不存在,执行i=i+1此时i为3

                       第二次循环:判断条件是3<10,i=i+1;成立,执行循环体(若加一个输出语句System.out.println(i)则为4),循环体不存在,执行i=i+1此时i为5

                      第三次循环:则判断条件是5<10,i=i+1;成立,执行循环体(若加一个输出语句System.out.println(i)则为6),循环体不存在,执行i=i+1此时i为7                                         

                       第四次循环:则判断条件是7<10,i=i+1;成立,执行循环体(若加一个输出语句System.out.println(i)则为8),循环体不存在,执行i=i+1此时i为9                                         

                      第五次循环:则判断条件是9<10,i=i+1;成立,执行循环体(若加一个输出语句System.out.println(i)则为10),循环体不存在,执行i=i+1此时i为11

                     第六次循环:则判断条件是11<10,i=i+1;不成立,跳出循环,此时i为12

                    外面的输出语句System.out.println(++i);等价于:i=i+1;System.out.println(i);   因此输出的是13.    

  • 相关阅读:
    【HDOJ】2774 Shuffle
    【POJ】2170 Lattice Animals
    【POJ】1084 Square Destroyer
    【POJ】3523 The Morning after Halloween
    【POJ】3134 Power Calculus
    【Latex】如何在Latex中插入伪代码 —— clrscode3e
    【HDOJ】4801 Pocket Cube 的几种解法和优化
    【HDOJ】4080 Stammering Aliens
    【HDOJ】1800 Flying to the Mars
    SQL语法
  • 原文地址:https://www.cnblogs.com/baiduligang/p/4247262.html
Copyright © 2011-2022 走看看