尚学堂百战程序员1573题---答案总结>>>第三章 控制语句

1.    三种控制结构是什么?
顺序结构,选择结构,循环结构
2.    如果if语句后面不写{},if的控制范围是否只限于第一句?
正确
3.    Math.random()是什么意思?如果想获得15-20之间的随机数,怎么办?
产生一个0-1之间的随机数,包含0但不包含1
(int)(Math.random()*6)+15;
4.    switch语句的功能是否完全可以使用if else if else多选择结构来代替?如果是,为什么还需要switch结构?
可以
switch一般用来做多值的判断,如果判断条件为区间,则最好使用多重if来做,如果是等值情况最好使用switch来做
5.    switch中的表达式的结果需要是什么类型?
byte,char,short,int
jdk1.5 加入了枚举
jdk1.7加入了String
6.    switch语句中,一个case开始执行后,什么时候结束执行这个case的语句?
遇到break结束执行这个case语句
7.    switch语句中,default是否必须写?
不是必须写
8.    下面代码有什么错误?
switch (c2) {
        case 'y';
        case 'w';
            System.out.println("半元音");
            break;
        default:
            System.out.println("辅音");
}
    case后的表达式后面应该是“:”冒号
9.    循环结构模拟了现实世界中的什么逻辑?
循环结构模拟了现实世界中的“重复问题“的逻辑
10.    循环结构的四种内部结构是什么?
 while(布尔表达式){
      循环体;
}
do{
   循环体;
}while(布尔表达式);
for(初始表达式;布尔表达式;迭代因子){
    循环体;
}
foreach(数组或集合中元素的类型 迭代变量:数组或集合名){
    循环体;
}
11.    while和dowhile有什么区别?
当条件不成立时,do-while至少执行一次
12.    什么情况下,会出现死循环?并写出一个例子来
循环条件始终成立时,则会出现死循环
while(true){
     System.out.println(“helloworld”);
}
13.    for循环相比while循环有什么优势?
语法结构比while简便,
通常用于解决循环次数固定的问题
14.    下面代码都有什么问题:
do{
    System.out.println(a);
    a++;
} while (a<0)
a没有初始化
15.    下面代码有错误吗?如果有,指出错误:
for(int i=0;i<=10;i++){
    System.out.println(i);  //循环体
}
System.out.println("(((((("+i);
    i超出了作用域的范围
16.    循环中,break的作用是?continue的作用是?
break用于强行退出循环,不执行循环中剩余的语句
continue用于跳过本次循环, 不执行continue后的语句, 继续下一次循环
17.    语句块能否使用外部的变量?语句块中定义的变量,外部能否使用?
语句块能使用外部的变量, 但是语句块中定义的变量外部不能使用
18.    方法的定义中,是否必须要有返回值类型?如果确实不需返回值,使用哪个关键字声明?
返回值类型不是必须的
不需要返回值使用关键字void
19.    方法的定义中,return是否必须?它有什么作用?
不是必须
return语句终止方法的运行并指定要返回的数据
20.    Java中,参数的传递使用值传递还是引用传递?
值传递
21.    方法定义中,形式参数和实际参数有什么区别?用自己的话描述。
方法定义时的参数称为形式参数,需要数据类型
方法调用时的参数称为实际参数,不需要类型,只需要值
22.    方法定义时,使用实参还是形参?
方法定义时,使用的是形参
23.    定义形参时,必须要写变量类型吗?
必须要写变量类型
24.    实参类型是否必须和形参类型匹配?
必须匹配
25.    什么是方法的重载,有什么作用?
方法重载:
[1]在同一个类中
[2]方法的名称相同
[3]参数列表不同
[4]与访问修饰符和返回值类型无关
[5]与异常无关
作用:
传递不同的参数实现相同的效果
26.    两同三不同指的是?返回值不同构成重载吗?形参名称不同构成重载吗?
两同:同一个类中,方法名称相同
三不同:参数列表的参数的类型,个数,顺序不同
返回值不同构不能方法重载
形参名称不同构不成方法重载
27.    递归算法中,递归头和递归体分别指什么?
递归头:什么时候不调用自己方法,即递归的结束条件
递归体:什么时候需要调用自己方法,即自己调用自己
28.    递归算法的优点是什么?缺点是什么?
递归的优点:将问题逐渐简单化
递归的缺点:会占用大量的系统堆栈,内存耗用多,在递归调用层次多时速度    比循环慢的多。
29.    【上机】使用递归算法完成阶乘算法
public static int jiCheng(int number){
        if (number==1) {
            return 1;
        }else{
            return number*jiCheng(number-1);
        }
    }
30.    【上机】根据随机生成的的月份,打出该月份的天数.(不考虑闰年、闰月)
public class Test{
public static void main(String [] args){
    int day=0;
    int ran=(int)(Math.random()*12)+1;
    switch(ran){
       case 2:
          day=28;
          break;
      case 1:
      case 3:
          case 5:
case 7:
case 8:
case 10:
case 12:
   day=31;
   break;
default:
   day=30;
   break;
}
System.out.println(ran+”月,共”+day+”天”);
}
}
31.    【上机】用while和for循环分别计算100以内奇数和偶数的和,并输出。
(1)求1-100以内奇数的和;
用while循环:
int i=1;
int sum=0;
while(i<=100){
sum=sum+i;
i+=2;
}    
System.out.println("1-100之间所有奇数的和是"+sum);
用for循环:    
int  i=1;
int  sum=0;
for(i=1;i<=100;i+=2){
    sum=sum+i;
}
System.out.println("1-100之间所有奇数的和是"+sum);
(2)求1-100以内偶数的和(略)
32.    【上机】用while和for循环输出1-1000之间能被5整除的数,且每行输出3个。
用while:
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++;    
  }
用for循环:
int  i=1;
int  count=0;
for(i=1;i<=1000;i++){
   if(i%5==0) {
      System.out.print(i+"\t"); 
      count++; 
      if(count%3==0){
          System.out.println();
       }
    }  
}
33.    【上机】打印出九九乘法表
for(int i=1;i<=9;i++){
   for(int j=1;j<=i;j++){
     System.out.print(j+”*” +i+”=”+(i*j)+””);
}
System.out.println();
}

34.    【上机】编程求:∑1+∑2+……+∑100
public static int getSum(int number){
    if(number==1){
         return 1;
     }else{
         return number+getSum(number-1);
     }
}
public static void main(String [] args){
    int sum=0;
    for(int i=1;i<=100;i++){
          sum+=getSum(i);
   }
   System.out.println(“和为:”+sum);
}
35.    【上机】生成0-100随机数,直到生成88为止,停止循环!
public static void main(String[] args) {
        //生成1-100随机数;
        int r=(int)(Math.random()*100)+1;
        while(r!=88){
            r=(int)(Math.random()*100)+1;
        }
}
36.    【上机】把100~150之间不能被3整除的数输出
 for(int i=100;i<=150;i++){
if(i%3!=0){
   System.out.println(i);
}
}
37.    【上机】打印出实心10*10正方形、空心10*10正方形
for(int i=1;i<=10;i++){
for(int j=1;j<=10;i++){
   System.out.print(“*”);
}
System.out.println();
}
38.    【上机】打印出实心10*10菱形, 空心10*10菱形
//1-6行正三角
for(int i = 0; i < 6; i++){
    //*前空格
    for(int j = 0; j < 5 - i; j++){
        System.out.print("");
    }
    //*
    for(int j = 0; j < 2 * i + 1; j++){
        System.out.print("*");
    }
    //*后空格
    for(int j = 0; j < 5 - i; j++){
            System.out.print("");
    }
    System.out.println();
}
//7-11行倒三角
    for(int i = 0; i < 5; i++){
    //*前空格
    for(int j = 0; j < i + 1; j++){
        System.out.print("");
    }
    //*
    for(int j = 0; j < 9 - 2 * i; j++){
        System.out.print("*");
    }
    //*后空格
    for(int j = 0; j < i + 1; j++){
        System.out.print("");
    }
    System.out.println();        
}
39.    【上机】将如上所有上机相关算法的作业,封装成方法,便于重用。
 

你可能感兴趣的:(Java)