Java 程序设计基础

第1关:数组的复制

任务描述
本关任务:完成将一个数组的值复制给另一个数组。

package step1;
//导入Scanner类
import java.util.Scanner;
public class HelloWorld {
    public static void main(String[] args) {
        // 动态构建arr1,就是给数组规定了长度
        int[] arr1 = new int[3];
        // 初始化Scanner,它的变量名为sc
        Scanner sc = new Scanner(System.in);

        // 使用for循环动态初始化arr1数组
        for (int i = 0; i < arr1.length; i++) {
            arr1[i] = sc.nextInt();     // 使用Scanner类从控制台读取数据并存入arr1中
        }

        /********** Begin **********/
        // 创建数组arr2
        int[] arr2 = new int[3];

        // 使用for循环将arr1的数据复制给arr2
        for(int i = 0; i < arr1.length; i++){
            arr2[i] = arr1[i];      // 将arr1中的元素逐个复制到arr2中
        }

        // 输出arr2
        for(int i = 0; i < arr2.length; i++){
            System.out.println(arr2[i]);    // 使用for循环输出arr2中的元素
        }
        /********** End **********/
    }
}

第2关:数组的使用

任务描述
本关任务:完成查找字符串数组中指定字符串位置的小程序。

package step2;
//导入Scanner类
import java.util.Scanner;
public class HelloWorld {
    public static void main(String[] args) {
        // 初始化Scanner,它的变量名为sc
        Scanner sc = new Scanner(System.in);
        // str为要查找的字符串
        String str = sc.next();

        /********** Begin **********/
        // 创建数组 arr 给数组赋值 {"张三","张三丰","张无忌","王二麻子","张富贵"}
        String arr[] = {"张三","张三丰","张无忌","王二麻子","张富贵"};

        // 使用for循环遍历数组arr
        for(int i = 0; i < arr.length; i++){
            // 如果数组中的元素与所输入的字符串相等
            if(arr[i].equals(str)){
                System.out.println(str + "在数组的第" + (i+1) + "个位置");
                break;      // 跳出循环
            }
        }
        /********** End **********/
    }
}

第3关:交换算法

任务描述
本关任务:完成两个数(a与b)的交换。

package step3;
//导入Scanner类
import java.util.Scanner;
public class HelloWorld {
    public static void main(String[] args) {
        // 初始化Scanner,它的变量名为sc
        Scanner sc = new Scanner(System.in);
        // 从控制台读取整数,并将其赋值给变量a
        int a = sc.nextInt();
        // 从控制台读取整数,并将其赋值给变量b
        int b = sc.nextInt();

        /********** Begin **********/
        // 将变量a的值赋给变量c
        int c = a;
        // 将变量b的值赋给变量a
        a = b;
        // 将变量c的值赋给变量b
        b = c;
        /********** End **********/
        
        // 输出变量a的值
        System.out.println(a);
        // 输出变量b的值
        System.out.println(b);
    }
}

第4关:选择排序

任务描述
本关任务:实现数组从大到小的排序(降序排序)。

package step4;
//导入Arrays和Scanner类
import java.util.Arrays;
import java.util.Scanner;
public class HelloWorld {
    public static void main(String[] args) {
        // 初始化Scanner,它的变量名为sc
        Scanner sc = new Scanner(System.in);
        // 从控制台读取一个整数,作为数组的长度,并动态创建一个整型数组
        int[] arr = new int[sc.nextInt()];
        // 使用for循环遍历数组,并从控制台读取整数,将其存入数组中
        for(int i = 0 ; i< arr.length ; i++){
            arr[i] = sc.nextInt();
        }
        // 假设数组中第一个元素为最大值
        int max = arr[0];
        /********** Begin **********/
        // 使用嵌套的for循环进行选择排序,将数组中的元素按照降序排列
        for(int i = 0;i<arr.length-1;i++){
            for(int j=i;j<arr.length-1;j++){
                // 如果当前元素比后一个元素小,则交换位置
                if(arr[i]<arr[j+1]){
                    int t = arr[i];
                    arr[i] = arr[j+1];
                    arr[j+1] = t;
                }
            }
        }
        // 将排序后的数组输出
        System.out.println(Arrays.toString(arr));
        /********** End **********/
    }
}

第5关:冒泡排序

任务描述
本关任务:使用冒泡排序实现数组的升序排序(从小到大)。

package step5;
// 导入Arrays和Scanner类
import java.util.Arrays;
import java.util.Scanner;

public class HelloWorld {

    public static void main(String[] args) {
        // 初始化Scanner,它的变量名为sc
        Scanner sc = new Scanner(System.in);
        // 从控制台读取一个整数,作为数组的长度,并动态创建一个整型数组
        int[] arr = new int[sc.nextInt()];
        // 使用for循环遍历数组,并从控制台读取整数,将其存入数组中
        for(int i = 0 ; i< arr.length ; i++){
            arr[i] = sc.nextInt();
        }

        /********** Begin **********/
        // 使用嵌套的for循环进行冒泡排序,将数组中的元素按照升序排列
        for(int i = 0;i<arr.length;i++){
            for(int j=0;j<arr.length-1;j++){
                // 如果当前元素比后一个元素大,则交换位置
                if(arr[j]>arr[j+1]){
                    int t = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = t;
                }
            }
        }
        // 将排序后的数组输出
        System.out.print(Arrays.toString(arr));
        /********** End **********/
    }
}

第6关:方法的重载

任务描述
本小节需要你掌握一个Java方法重载的小程序,在每一个重载的方法中打印相应的语句。

package setp15;
public class HelloWorld {
    public static void main(String[] args) {
		/********** Begin **********/
        // 调用无参的方法
        a();
        // 调用带有一个字符串参数的方法	
        a("educoder");
        // 调用带有一个整型参数的方法
        a(666);
        /********** End **********/
    }
    /********** Begin **********/
    // 无参print方法的定义
    public static void a(){
        System.out.println("无参的print方法");
    }
    // 字符串print方法的定义
    public static void a(String arr){
        System.out.println("带有一个字符串参数的print方法,参数值为:"+arr);
    }
    // 整型print方法的定义
    public static void a(int num){
        System.out.println("带有一个整型参数的print方法,参数值为:"+num);
    }
    /********** End **********/
}

第7关:选择题通通跳过

第8关:方法通关挑战

任务描述
定义一个方法,接收两个int类型的参数 a和b,求两个数的和,方法名为:getSum;

定义一个方法,接收三个double类型参数a,b,c, 返回这三个数的平均值 返回值类型为double,方法名为:getAvg;

定义一个方法,接收两个整数 a 和b 打印a行 b列的一个矩形,方法名为:printRect;

定以一个方法,接收整形数组为参数,对这个数组进行升序排序,最后输出该数组,方法名为:sortArr;

定义一个方法,完成99乘法表的打印,方法名为 :Print99。

package setp17;
import java.util.Arrays;
import java.util.Scanner;

public class HelloWorld {
    /********** Begin **********/
    /**
     * 第一题:定义一个方法 接收两个整数类型的参数 a和b,返回两个数的和 返回值类型为int 方法名为:getSum
     */
    public static int getSum(int a, int b) {
        return a + b;
    }

    /**
     * 第二题: 定义一个方法 接收三个double类型参数a,b,c, 返回这三个数的平均值 返回值类型为double 方法名为:getAvg
     */
    public static double getAvg(double a, double b, double c) {
        return (a + b + c) / 3;
    }

    /**
     * 第三题: 定义一个方法 接收两个参数 a 和b 打印a行 b列的一个矩形 不需要返回值 方法名为:printRect
     */
    public static void printRect(int a, int b) {
        for (int i = 0; i < a; i++) {
            for (int j = 0; j < b; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }

    /**
     * 第四题:定以一个方法,接收整形数组 为参数 对这个数组进行升序排序 最后输出该数组 不需要返回值 方法名为 sortArr
     */
    public static void sortArr(int[] arr) {
        int i, j, t;
        for (i = 0; i < arr.length; i++) {
            for (j = 0; j < arr.length - 1; j++) {
                if (arr[j] > arr[j + 1]) {
                    t = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = t;
                }
            }
        }
        for (i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }

    /**
     * 第五题
     * 你只需要实现for 循环括号的内容就可 ,打印语句系统已经给你完成
     */
    public static void Print99() {
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print(j + " * " + i + " = " + (j * i) + "\t");
            }
            System.out.println();
        }
    }

    public static void main(String[] args) {
        int[] array = new int[30];
        Scanner in = new Scanner(System.in);
        System.out.println(getSum(in.nextInt(), in.nextInt()));
        System.out.println(getAvg(in.nextDouble(), in.nextDouble(), in.nextDouble()));
        printRect(in.nextInt(), in.nextInt());
        for (int i = 0; i < 5; i++) {
            array[i] = in.nextInt();
        }
        sortArr(array);
        Print99();
    }
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第十五章 数组进阶 15.1 数据模型 数据是描述事务的符号记录,模型是现实世界的抽象。现实世界的事务及系可以抽象成一个具体的模型,模型通过某种数据结构映射到计算机世界中,进而计算机通过软件处理数据来达到模拟、管理现实世界事务的目的。 通过数组可以管理学生花名册、模拟一个棋盘等。 案例 贪吃蛇游戏 1.模型设计 2.视图表达 3.获取控制信息 clock函数是自进程启动后此进程运行到此处使用CPU的毫秒数,需要头文件time.h。 kbhit函数检查是否有键按下,返回值为整数,未按键时返回0,需要头文件conio.h。 4.利用控制信息修改数据模型变为新的数据模型 例:贪吃蛇游戏 #include<stdio.h> #include<stdlib.h> #include<conio.h> #include<windows.h> #include<time.h> int head,tail; int main() { int changeModel(char tcsQipan[22][22],int tcsZuobiao[2][20],char direction); long start; int gamespeed=500; int timeover; int direction=77; char tcsQipan[22][22]; int tcsZuobiao[2][20]; int i,j; /*初始化蛇位置坐标*/ for(i=0; i<=3; i++) { tcsZuobiao[1][i]=i+1; tcsZuobiao[0][i]=1; } head=3; /*蛇头在第3列*/ tail=0; /*蛇尾在第0列*/ /*初始化棋盘*/ /*初始化贪吃蛇棋盘中间空白部分*/ for(i=1; i<=20; i++) for(j=1; j<=20; j++) tcsQipan[i][j]=' '; /*初始化贪吃蛇棋盘上下墙壁*/ for(i=0; i<=21; i++) { tcsQipan[0][i]='-'; tcsQipan[21][i]='-'; } /*初始化贪吃蛇棋盘左右墙壁*/ for(i=0; i<=20; i++) { tcsQipan[i][0]='|'; tcsQipan[i][21]='|'; } /*初始化贪吃蛇在棋盘中的位置*/ for(i=1; i<=3; i++) tcsQipan[1][i]='*'; tcsQipan[1][4]='#';/*蛇头*/ /*重复:清屏、显示磁盘、获取控制方向、按键有效性检查、更新模型*/

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值