子函數:



馬克- to-win:馬克 java社區:防盜版實名手機尾號: 73203。
馬克-to-win:我把去頤和園路線寫在紅紙上,去北海的方法寫在黃紙上,我要讓你去頤和園兩次,去北海三次的話,只需讓按紅紙做兩次,按黃紙做三次,這里誰是子涵數?
例1:
public class Test14 {
    public static void main(String[] args) {
        printqijin();
        printyangwen();
        printqijin();
    }
    static void printqijin() {
        int i = 0;
        while (i < 2) {
            System.out.println("齊井");
            i++;
        }
    }
    static void printyangwen() {
        System.out.println("揚");
    }
}
結果:
齊井
齊井

齊井
齊井



馬 克-to-win:程序就是人要告訴計算機干什么的一堆指令。計算機拿到這堆指令,開始干活。從main左括號開始,運行到右括號就結束。像if, main,int這些字,計算機都很好理解,但是一遇到子函數計算機就傻了,因為他不認識這些字,它就開始整個程序找這個子函數體,找到后就調用,如有實 參,就把實參值傳給形參。調用完就回到主函數中剛才調用的那一句的下一句。如有return,子函數中return值會給函數名對應的等號左邊的值,子函 數當即終止,即執行子函數右大括號。在上個例子中,void表示沒有返回值。

例2:
給定整數返回平方
public class Test15 {
    public static void main(String[] args) {
        int a;
        int d;
        a = fff(2);
        System.out.println(a);
        d = fff(3);
        System.out.println(d);
    }
    static int fff(int b) {
        int c;
        c = b * b;
        return c;
    }
}
結果:
4
9

例3:
public class Test16 {
    public static void main(String[] args) {
        String a;
        String b;
        a = zhazhi("蘋果");
        b = zhazhi("桃");
        System.out.println(a);
        System.out.println(b);
    }

    static String zhazhi(String k) {
        String l;
        l = k + "汁";
        return l;
    }
}
結果:
蘋果汁
桃汁




作業1: 做一個子函數返回比自己大1的數。

public class Test17 {
    public static void main(String[] args) {
        int a;
        int b;
        a = hhh(5);
        b = hhh(4);
        System.out.println(a);
        System.out.println(b);
    }

    static int hhh(int c) {
        int d;
        d = c + 1;
        return d;
    }
}
結果:
6
5


小結:實參有兩種:馬克-to-win:(1)普通值比如int(2)數組類型,當是數組類型時(比如實參是a[],虛參是c[]),虛參指向實參的地址,如c指向a。
調用:是指發現不認識函數名找到函數體,開始執行函數體,這個過程叫調用,其實調用本質就是用函數體替代掉函數名那句話而已。這樣主函數就會非常清晰。




作業2: 翻倍打印,復制數組

public class Test19 {
    public static void main(String[] args) {
        int a[] = { 7, 4, 3, 2, 5 };
        fanbei(a);
        dayin(a);
    }
   
    static void fanbei(int[] b) {
        int i = 0;
        while (i < b.length) {
            b[i] = b[i] * 2;
            i++;
        }
    }

    static void dayin(int[] c) {
        int j = 0;
        while (j < c.length) {
            System.out.println(c[j]);
            j++;
        }
    }
}
結果:
14
8
6
4
10



作業3: 求數組的長度

public class Test20 {
    public static void main(String[] args) {
        int a[] = { 3, 2, 1, 7 };
        int b;
        b = hh(a);
        System.out.println(b);
    }

    static int hh(int[] c) {
        int d;
        d = c.length;
        return d;
    }
}
結果:
4


作業4: 求數組中最大數
public class Test21 {
    public static void main(String[] args) {
        int a[] = { 5, 8, 7, 4 };
        int b;
        b = kk(a);
        System.out.println(b);
    }

    static int kk(int[] c) {
        int d = c[0];
        int i = 0;
        while (i < c.length) {
            {
                if (c[i] > d)
                    d = c[i];
            }
            i++;
        }
        System.out.println(d);
        return d;
    }
}
結果:
8
8



作業5:求數組中最小數
public class Test23 {
    public static void main(String[] args) {
        int a[] = { 3, 5, 2, 7 };
        int i = 0;
        int c = a[0];
        while (i < a.length) {
            if (a[i] < c) {
                c = a[i];
            }
            i++;
        }
        System.out.println(c);
    }
}
結果:
2




作業6:求數組中第一個數。
public class Test24 {
    public static void main(String[] args) {
        int a[] = { 3, 2, 1, 7 };
        int b;
        b = hhh(a);
        System.out.println(b);
    }

    static int hhh(int[] c) {
        int d;
        d = c[0];
        return d;
    }
}
結果:
3






作業7:找大數位置
public class Test26 {
    public static void main(String[] args) {
        int a[] = { 4, 7, 8, 6 };
        int b;
        b = findbigweizhi(a);
        System.out.println(b);
    }

    static int findbigweizhi(int[] c) {
        int i = 0;
        int d = c[0];
        int p = 0;
        while (i < c.length) {
            if (c[i] > d) {
                d = c[i];
                p = i;
            }
            i++;
        }
        System.out.println(d);
        System.out.println(p);
        return p;
    }
}
結果:
8
2
2



作業8:找大數
public class Test29 {
    public static void main(String[] args) {
        int a = 8;
        int b = 7;
        int c = 9;
        int k = zhaodashu(a, b, c);
        System.out.println(k);
    }

    static int zhaodashu(int x, int y, int z) {
        int big;
        big = x;
        if (y > big) {
            big = y;
        }
        if (z > big) {
            big = z;
        }
        return big;
    }
}
結果:
9



作業9:馬克-to-win:給定一個整數,數組和一個整數值,用子函數判斷,此數組中是否包含此整數值?如果不包含返回-1,如果包含返回位置。比如:如果第一個值就等于它就返回0。

public class Test30 {
    public static void main(String[] args) {
        int a[] = { 5, 6, 7, 3, 9 };
        int m = 7;
        int b;
        b = zhaoweizhi(a, m);
        System.out.println(b);
    }

    static int zhaoweizhi(int[] c, int m) {
        int i = 0;
        while (i < c.length) {
            if (c[i] == m) {
                return i;
            }
            i++;
        }
        return -1;
    }
}
結果:
2






馬 克-to-win:例:排序,替換大數。第一步找出最小的數3給m。第二步開始循環做a.length次,這里就是4。舉例這里做4次,找出最大的數放在 另一個數組b中。b={8,0,0,0}。同時a中剛才最大的數變成最小的那個數m等于3,a就變成a={5,3,3,6},第二次循環做同樣的事。b= {8,6,0,0},a變成{5,3,3,3},第三次循環做同樣的事。b={8,6,5,0},a變成{3,3,3,3},第四次循環做同樣的事。b= {8,6,5,3},a變成{3,3,3,3}

public class Test32 {
    public static void main(String[] args) {
        int a[] = { 5, 8, 3, 6 };
        int b[] = { 0, 0, 0, 0 };
        int m = 3;
        int big;
        big = tihuan(a, m);
        b[0] = big;
        big = tihuan(a, m);
        b[1] = big;
        big = tihuan(a, m);
        b[2] = big;
        big = tihuan(a, m);
        b[3] = big;
        System.out.println("完了");
        int i = 0;
        while (i < 4)
        {
            System.out.println(b[i]);
            i++;
        }
    }

    static int tihuan(int[] a, int m) {
        int i = 0;
        int big = a[0];
        int p = 0;
        while (i < a.length) {
            if (a[i] > big) {
                big = a[i];
                p = i;
            }
            i++;
        }
        System.out.println(big);
        System.out.println(p);
        a[p] = m;
        return big;
    }
}
結果:
8
1
6
3
5
0
3
0
完了
8
6
5
3



作業10:用固定最小數替換數組內大數,大數依次放在另一個數組里。
public class Test31 {
    public static void main(String[] args) {
        int a[] = { 7, 8, 4, 6 };
        int b[] = { 0, 0, 0, 0 };
        int m = 4;//數組內最小值是4
        int i = 0;
        int big;
        while (i < 4) {
            big = tihuan(a, m);
            b[i] = big;
            i++;
        }
        System.out.println("wanle ");
        i = 0;
        while (i < 4)
        {
            System.out.println(b[i]);
            i++;
        }
    }

    static int tihuan(int[] a, int m) {
        int i = 0;
        int big = a[0];
        int p = 0;
        while (i < a.length) {
            if (a[i] > big) {
                big = a[i];
                p = i;
            }
            i++;
        }
        System.out.println(big);
        System.out.println(p);
        a[p] = m;
        return big;
    }
}
結果:
8
1
7
0
6
3
4
0
wanle
8
7
6
4