子函数:



马克- 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