03-控制语句

时间:2019-04-15 23:03:00 来源:互联网 作者: 神秘的大神 字体:

1. 三种控制结构是什么?

       答:顺序结构,选择结构,循环结构

2. 如果if语句后不加{}if的控制范围是否只限于第一句?

答:if语句的控制范围只能是紧接着的一句,使用{}可以将多个语句合并成为一个复合语句,进而控制多个语句。

3. Math.random()是什么意思?如果想要获取1520之间的随机数怎么办?

答:Math.random()是使用java.lang.Math类中的静态方法random(),获取一个0-1之间的随机浮点数。想要获得15-20之间的随机数的语句:   15+(int)(Math.random()*6);

4. switch语句的功能是否可以完全使用if else if else来代替?如果是,为什么还要使用switch语句?

答:switch语句完全可以使用if else语句来代替,因为switch语句的效率比if else语句的效率高。

5. switch语句中的表达式需要是什么类型?       

       答:int类型(包括可以自动转为int类型的byteshortchar

              Jdk1.7以后可以使String类型和枚举类型

6. switch语句中一个case执行后,什么时候结束执行这个case语句?

答:一旦开始执行某个case语句,直到遇到break语句或者default语句或者switch语句执行完。

7. switch语句中,default是否必须写?

答:否,default语句不必要写,就像if语句不必要后面一定有else语句一样。

8. 下面代码,有什么错误?

switch (c2) {

        case 'y';

        case 'w';

            System.out.println("半元音");

            break;

        default:

            System.out.println("辅音");

}

答:case语句后面应该是冒号:

9. 循环结构模拟了现实世界中什么逻辑?

       答:各种重复问题。

10. 循环结构的四种内部结构是什么?

       答:1while(布尔表达式){循环体;}                 while循环

              2do{循环体;}while(布尔表达式)             do-while循环

              3for(初始化表达式;布尔表达式;步进表达式){循环体;}         for循环

              4for(集合或数组中的类型 : 集合或者数组){循环体;}          增强for循环

11. whiledo-whlie有什么区别?           

       答:while语句循环的次数为0-无限次,do-while语句循环次数是1-无数次。

12. 什么情况下会出现死循环?请举个例子。

       答:循环条件始终成立,且没有可以跳出循环的语句时。while(true){System.out.println(1)}

13. for循环相比于while循环有什么优势?

       答:for循环可以明确的推断出循环的次数。并且可以根据下标访问数组元素。

14. 下面代码都有什么问题?

do{

System.out.println(a);

a++;

}while(a<0)

答:1)变量a没有初始化。

2do-while语句结尾应该加上分号。

15. 下面代码有什么错误?如果有请指出错误。

for(int i=0; i<=10;i++){

    System.out.println(i);

}

System.out.println(i);

答:变量i超过了作用域。

16. 循环中break的作用是什么?continue的作用是什么?

       答:break是用来跳出循环体的,continue是结束本次循环,进入下一次循环。

17. 语句块能否使用外部的变量?语句块中定义的变量,外部能否使用?

       答:1)语句块可以使用外部的变量,因为语句块在外部变量的作用域范围内。

              2)语句块中定义的变量,作用域范围为当前语句块,所以外部不能使用。

18. 方法的定义中,是否必须有返回值类型?如果确实不需要返回值,用哪个关键字来声明?

       答:方法可以没有返回值类型,当方法不需要返回值时,可以使用void关键字来声明。

19. 方法的定义中,return语句是否必要,他有什么作用?

       答:当方法不需要返回值时,可以没有return语句。return语句主要用来结束当前方法,并将其后的值返回给方法调用者。

20. Java中传递是值传递还是引用传递?

       答:基本数据传递的是值的拷贝,引用数据类型传递的是对象地址的拷贝。

21. 方法定义中,形式参数和实际参数的区别?

       答:形式参数是方法定义中的参数列表,表示该方法接受怎样的参数类型。

              实际参数是方法调用时,用来传入方法的实际数据。

22. 方法定义时,使用形参还是实参?

       答:形参,方法定义时,使用形参,方法调用时,使用实参。

23. 定义形参时,必须要写变量类型吗?

       答:必须要写变量类型。

24. 实参类型是否必须和形参类型匹配?

       答:是的,必须要和形参匹配,匹配包括当该某方法的实参类型可以自动转换为某方法的形参类型,例如,形参时int型,实参是short类型的,这种情况是匹配的。

25. 什么是方法的重载,有什么用?

       答:在同一个类中,方法名相同,参数列表不同。方法重载的作用:多态。

26. 两同三不同指的是?返回值不同构成重载吗?形参名称不同构成重载吗?

答:两同指的是同一个类,同一方法名,三不同指的是参数列表的类型,个数和顺序不同。返回值不同和形参名称不同均不构成重载。

27. 递归算法中,递归头和递归体分别指的是什么?

       答:递归头指的是递归终止的部分,递归体是自己调用自己的部分。

28. 递归算法的优点是什么?递归算法的缺点是什么?

答:递归算法的优点是算法简单(将复杂的问题拆解成简单的问题),缺点是效率低(递归算法大量的开辟方法栈和关闭方法栈,大量占用资源)。

29.【上机】使用递归算法完成阶乘算法。

public class Demo {

       public static void main(String[] args) {

              int i = factorial(10);

              System.out.println(i);

       }

       public static int factorial(int n){

              if(n ==1 )

                     return 1;

              return n*factorial(n-1);

       }

}

30. 【上机】根据随机生成的月份,打印该月份的天数。(不考虑闰年)。

public class Demo {

       public static void main(String[] args) {

              int month = (int)(Math.random()*12)+1;

              System.out.print(month+"月天数为:");

              if(month == 2)

                     System.out.println(28);

              else if(month==4 || month==6 || month==9 || month==11)

                     System.out.println(30);

              else

                     System.out.println(31);        

       }     

}

31. 【上机】用while循环和for循环分别计算100以内的奇数和及偶数和。

public class Demo {

       public static void main(String[] args) {

              int j = 1;              /*奇数计算*/

              int o = 2;             /*偶数计算*/

              int sumJ = 0;       /*奇数和*/

              int sumO = 0;      /*偶数和*/

              while(j < 100){

                     sumJ += j;

                     j+=2;

              }

              for(;o<100;o+=2)

                     sumO += o;

              System.out.println(sumJ);

              System.out.println(sumO);         

       }

}

32. 【上机】用whilefor输出1-1000之间能被5整除的数,并每行输出3个。

public class Demo {

       public static void main(String[] args) {

              int i = 1;

              int count=0;

              while(i < 1000){

                     if(i%5 == 0){

                            System.out.print(i+"\t");

                            count++;

                            if(count%3 == 0)

                                   System.out.println();

                     }

                     i++;

              }

              count = 0;

              for(i=0;i<1000;i++){

                     if(i%5 == 0){

                            System.out.print(i+"\t");

                            count++;

                            if(count%3 == 0)

                                   System.out.println();

                     }                   

              }

}      }

33. 【上机】打印九九乘法口诀表。

public class Demo {

       public static void main(String[] args) {

              for(int i=1;i<10;i++){

                     for(int j=1;j<=i;j++){

                            System.out.print(i+"*"+j+"="+(i*j)+"\t");

                     }

                     System.out.println();

              }

       }

}

 

34. 【上机】编程求Σ1 + Σ2 + ~~~+Σ100

public class Demo {

       public static void main(String[] args) {

              int sum = 0;

              for(int i=1;i<=100;i++){

                     for(int j=1;j<=i;j++){

                            sum += j;

                     }

              }

              System.out.println(sum);

       }

}

35. 【上机】生成0-100随机数,直到88为止,停止循环。

public class Demo {

       public static void main(String[] args) {

              while(true){

                     int i = (int)(Math.random()*101);

                     System.out.println(i);

                     if(i == 88)

                            break;

              }

       }

}

 

 

36.【上机】把100-150之间不能被3整除的数输出。

public class Demo {

       public static void main(String[] args) {

              for(int i=100;i<=150;i++){

                     if(i%3 != 0)

                            System.out.println(i);

              }

       }

}

37.【上机】打印出实心10*10正方形,空心10*10正方形。

public class Demo {

       public static void main(String[] args) {

              for(int i=0;i<10;i++){

                     for(int j=0;j<10;j++){

                            System.out.print("*");

                     }

                     System.out.println();

              }

              for(int i=0;i<10;i++){

                     for(int j=0;j<10;j++){

                            if(i==0 || i==9 || j==0 || j==9)

                                   System.out.print("*");

                            else

                                   System.out.print(" ");

                     }

                     System.out.println();

              }

       }

}

 


 

38.【上机】打印出实心10*10菱形和空心10*10菱形。

public class Demo {                                                     //空心菱形,实心略微改动。

       public static void main(String[] args) {

              boolean flag = true;     //5行是真,后5行是假

              int distance = 0;

              for(int i=0;i<11;i++){

                     if(i>=5)

                            flag = false;

                     for(int j=0;j<11;j++){

                            if(j == 5-distance || j==5+distance)

                //if(j>=5-distance || j<=5+distance)

                                   System.out.print("*");

                            else

                                   System.out.print(" ");

                     }

                     if(flag)

                            distance++;

                     else

                            distance--;

                     System.out.println();

              }

       }

}

 

 

 

第三章 控制语句

1. 三种控制结构是什么?

       答:顺序结构,选择结构,循环结构

2. 如果if语句后不加{}if的控制范围是否只限于第一句?

答:if语句的控制范围只能是紧接着的一句,使用{}可以将多个语句合并成为一个复合语句,进而控制多个语句。

3. Math.random()是什么意思?如果想要获取1520之间的随机数怎么办?

答:Math.random()是使用java.lang.Math类中的静态方法random(),获取一个0-1之间的随机浮点数。想要获得15-20之间的随机数的语句:   15+(int)(Math.random()*6);

4. switch语句的功能是否可以完全使用if else if else来代替?如果是,为什么还要使用switch语句?

答:switch语句完全可以使用if else语句来代替,因为switch语句的效率比if else语句的效率高。

5. switch语句中的表达式需要是什么类型?       

       答:int类型(包括可以自动转为int类型的byteshortchar

              Jdk1.7以后可以使String类型和枚举类型

6. switch语句中一个case执行后,什么时候结束执行这个case语句?

答:一旦开始执行某个case语句,直到遇到break语句或者default语句或者switch语句执行完。

7. switch语句中,default是否必须写?

答:否,default语句不必要写,就像if语句不必要后面一定有else语句一样。

8. 下面代码,有什么错误?

switch (c2) {

        case 'y';

        case 'w';

            System.out.println("半元音");

            break;

        default:

            System.out.println("辅音");

}

答:case语句后面应该是冒号:

9. 循环结构模拟了现实世界中什么逻辑?

       答:各种重复问题。

10. 循环结构的四种内部结构是什么?

       答:1while(布尔表达式){循环体;}                 while循环

              2do{循环体;}while(布尔表达式)             do-while循环

              3for(初始化表达式;布尔表达式;步进表达式){循环体;}         for循环

              4for(集合或数组中的类型 : 集合或者数组){循环体;}          增强for循环

11. whiledo-whlie有什么区别?           

       答:while语句循环的次数为0-无限次,do-while语句循环次数是1-无数次。

12. 什么情况下会出现死循环?请举个例子。

       答:循环条件始终成立,且没有可以跳出循环的语句时。while(true){System.out.println(1)}

13. for循环相比于while循环有什么优势?

       答:for循环可以明确的推断出循环的次数。并且可以根据下标访问数组元素。

14. 下面代码都有什么问题?

do{

System.out.println(a);

a++;

}while(a<0)

答:1)变量a没有初始化。

2do-while语句结尾应该加上分号。

15. 下面代码有什么错误?如果有请指出错误。

for(int i=0; i<=10;i++){

    System.out.println(i);

}

System.out.println(i);

答:变量i超过了作用域。

16. 循环中break的作用是什么?continue的作用是什么?

       答:break是用来跳出循环体的,continue是结束本次循环,进入下一次循环。

17. 语句块能否使用外部的变量?语句块中定义的变量,外部能否使用?

       答:1)语句块可以使用外部的变量,因为语句块在外部变量的作用域范围内。

              2)语句块中定义的变量,作用域范围为当前语句块,所以外部不能使用。

18. 方法的定义中,是否必须有返回值类型?如果确实不需要返回值,用哪个关键字来声明?

       答:方法可以没有返回值类型,当方法不需要返回值时,可以使用void关键字来声明。

19. 方法的定义中,return语句是否必要,他有什么作用?

       答:当方法不需要返回值时,可以没有return语句。return语句主要用来结束当前方法,并将其后的值返回给方法调用者。

20. Java中传递是值传递还是引用传递?

       答:基本数据传递的是值的拷贝,引用数据类型传递的是对象地址的拷贝。

21. 方法定义中,形式参数和实际参数的区别?

       答:形式参数是方法定义中的参数列表,表示该方法接受怎样的参数类型。

              实际参数是方法调用时,用来传入方法的实际数据。

22. 方法定义时,使用形参还是实参?

       答:形参,方法定义时,使用形参,方法调用时,使用实参。

23. 定义形参时,必须要写变量类型吗?

       答:必须要写变量类型。

24. 实参类型是否必须和形参类型匹配?

       答:是的,必须要和形参匹配,匹配包括当该某方法的实参类型可以自动转换为某方法的形参类型,例如,形参时int型,实参是short类型的,这种情况是匹配的。

25. 什么是方法的重载,有什么用?

       答:在同一个类中,方法名相同,参数列表不同。方法重载的作用:多态。

26. 两同三不同指的是?返回值不同构成重载吗?形参名称不同构成重载吗?

答:两同指的是同一个类,同一方法名,三不同指的是参数列表的类型,个数和顺序不同。返回值不同和形参名称不同均不构成重载。

27. 递归算法中,递归头和递归体分别指的是什么?

       答:递归头指的是递归终止的部分,递归体是自己调用自己的部分。

28. 递归算法的优点是什么?递归算法的缺点是什么?

答:递归算法的优点是算法简单(将复杂的问题拆解成简单的问题),缺点是效率低(递归算法大量的开辟方法栈和关闭方法栈,大量占用资源)。

29.【上机】使用递归算法完成阶乘算法。

public class Demo {

       public static void main(String[] args) {

              int i = factorial(10);

              System.out.println(i);

       }

       public static int factorial(int n){

              if(n ==1 )

                     return 1;

              return n*factorial(n-1);

       }

}

30. 【上机】根据随机生成的月份,打印该月份的天数。(不考虑闰年)。

public class Demo {

       public static void main(String[] args) {

              int month = (int)(Math.random()*12)+1;

              System.out.print(month+"月天数为:");

              if(month == 2)

                     System.out.println(28);

              else if(month==4 || month==6 || month==9 || month==11)

                     System.out.println(30);

              else

                     System.out.println(31);        

       }     

}

31. 【上机】用while循环和for循环分别计算100以内的奇数和及偶数和。

public class Demo {

       public static void main(String[] args) {

              int j = 1;              /*奇数计算*/

              int o = 2;             /*偶数计算*/

              int sumJ = 0;       /*奇数和*/

              int sumO = 0;     /*偶数和*/

              while(j < 100){

                     sumJ += j;

                     j+=2;

              }

              for(;o<100;o+=2)

                     sumO += o;

              System.out.println(sumJ);

              System.out.println(sumO);         

       }

}

32. 【上机】用whilefor输出1-1000之间能被5整除的数,并每行输出3个。

public class Demo {

       public static void main(String[] args) {

              int i = 1;

              int count=0;

              while(i < 1000){

                     if(i%5 == 0){

                            System.out.print(i+"\t");

                            count++;

                            if(count%3 == 0)

                                   System.out.println();

                     }

                     i++;

              }

              count = 0;

              for(i=0;i<1000;i++){

                     if(i%5 == 0){

                            System.out.print(i+"\t");

                            count++;

                            if(count%3 == 0)

                                   System.out.println();

                     }                   

              }

}      }

33. 【上机】打印九九乘法口诀表。

public class Demo {

       public static void main(String[] args) {

              for(int i=1;i<10;i++){

                     for(int j=1;j<=i;j++){

                            System.out.print(i+"*"+j+"="+(i*j)+"\t");

                     }

                     System.out.println();

              }

       }

}

 

34. 【上机】编程求 + + +~~+

publicclass Demo {

       publicstaticvoid main(String[] args) {

              intsum = 0;

              for(inti=1;i<=100;i++){

                     for(intj=1;j<=i;j++){

                            sum += j;

                     }

              }

              System.out.println(sum);

       }

}

35. 【上机】生成0-100随机数,直到88为止,停止循环。

publicclass Demo {

       publicstaticvoid main(String[] args) {

              while(true){

                     inti = (int)(Math.random()*101);

                     System.out.println(i);

                     if(i == 88)

                            break;

              }

       }

}

 

 

36.【上机】把100-150之间不能被3整除的数输出。

publicclass Demo {

       publicstaticvoid main(String[] args) {

              for(inti=100;i<=150;i++){

                     if(i%3 != 0)

                            System.out.println(i);

              }

       }

}

37.【上机】打印出实心10*10正方形,空心10*10正方形。

publicclass Demo {

       publicstaticvoid main(String[] args) {

              for(inti=0;i<10;i++){

                     for(intj=0;j<10;j++){

                            System.out.print("*");

                     }

                     System.out.println();

              }

              for(inti=0;i<10;i++){

                     for(intj=0;j<10;j++){

                            if(i==0 || i==9 || j==0 || j==9)

                                   System.out.print("*");

                            else

                                   System.out.print(" ");

                     }

                     System.out.println();

              }

       }

}

 


 

38.【上机】打印出实心10*10菱形和空心10*10菱形。

publicclass Demo {                                                     //空心菱形,实心略微改动。

       publicstaticvoid main(String[] args) {

              booleanflag = true;     //5行是真,后5行是假

              intdistance = 0;

              for(inti=0;i<11;i++){

                     if(i>=5)

                            flag = false;

                     for(intj=0;j<11;j++){

                            if(j == 5-distance || j==5+distance)

                //if(j>=5-distance || j<=5+distance)

                                   System.out.print("*");

                            else

                                   System.out.print(" ");

                     }

                     if(flag)

                            distance++;

                     else

                            distance--;

                     System.out.println();

              }

       }

}