java课堂作业(三)

1、分支

if(){};if(){}else{};if(){}else if(){}...else{};

switch(byte;short;int;long) { case 1:。。。。。;break; case 2: 。。。。。; break  ; ...... default:。。。。。;}

while(){};do{}while();for(){};

2、非递归

 1     Scanner read = new Scanner(System.in);
 2         int a = read.nextInt();
 3         int result = 1;
 4         if(a<0){
 5             System.out.println("输入不合法");
 6         }else if(a==0){
 7             System.out.println("阶乘为1");
 8         }else{
 9             for(int i=1;i<=a;a--){
10             result *= a;            
11             }
12             System.out.println("阶乘为"+result);
13         }

递归

 1   public int factorial(int i) {
 2        if(i<0){
 3         System.out.println("输入不合法!");
 4         return -1;
 5         }else if(i==0){
 6         return 1;
 7         }else{
 8         return i*factorial(i-1);
 9         }         
10   }    

假如 i = 5

5 * factorial (4)

5 * 4 * factorial (3)

5 * 4 * 3 * factorial (2)

5 * 4 * 3 * 2 * factorial (1)

5 * 4 * 3 * 2 * 1 * factorial (0) = 1

3、99乘法表

经过分析:我们得知 可以 用 a 与 b 表示 两个 乘数 a=b的时候换行

a = 1 时 b 从 1 - 1

a = 2 时 b 从 1 - 2

a = 3 时 b 从 1 - 3

。。。

a = 9 时 b 从 1 - 9

我们看到 b 总是 从1 变化到 a

分属两个 for 循环

1 for (int a = 1; a<=9;a++) {
2   for (int b=1; b<=a;b++){
3     System.out.print(a+"*"+b+"="+a*b+"  ");
4   }
5     System.out.println();
6 }

4、思路分析

首先是三位数,利用除法得到各位的 数字

123 / 100 = 1

123 % 100 /10 = 2

123 % 10 = 3

a b c

循环范围是 100 -- 999

1 for(int i=100;i<=999;i++){
2     int a = i / 100;
3     int b = i % 100 / 10;
4     int c = i % 10;
5     if (a*a*a+b*b*b+c*c*c == i ){
6     System.out.println(i);
7         }
8 }

完成了

5、首先分析出通项公式

4/(2n-1) * (-1)^(n-1)     n 从 1 到 无穷

圆周率用 double pi 表示 所以

pi += 4/(2n-1) * m (m=-m)

我们再定义一个计数变量 int count = 0;

 1   int n = 1;
 2   int m = 1;
 3   int count = 0;
 4   double pi = 0.0;
 5   while (true){
 6     if(pi>3.1415926&&pi<3.1415927){
 7     break;
 8   }
 9   pi = pi + 4.0/(2n-1) * m ;
10   m=-m;
11   count++;
12   }
13   System.out.println(count);(明天再看,不会,不懂)

6、打印

    *

  ***

*****

  ***

    *

代码

 1 for(int i=0;i<=2;i++){
 2             for(int j=1;j<=2-i;j++){
 3                 System.out.print(" ");
 4             }
 5             for(int k=1;k<=2*i+1;k++){
 6                 System.out.print("*");
 7             }
 8             System.out.println();
 9         }
10         for(int i=0;i<=1;i++){
11             for(int j=2;j>=2-i;j--){
12                 System.out.print(" ");
13             }
14             for(int k=3;k>=2*i+1;k--){
15                 System.out.print("*");
16             }
17             System.out.println();
18         }

感想:40分钟

10分钟思考 30 分钟 编码 调试(不好,抓耳挠腮)

30分钟思考 10分钟 编码 调试(好,行云流水)

posted @ 2013-08-26 21:59  董文博  阅读(273)  评论(0编辑  收藏  举报