• java基础练习题


    1变量、运算符和类型转换:
    1.1手动输入一个学生的成绩,对这个成绩进行一次加分,加当前成绩的20%,输出加分后成绩

            Scanner scan = new Scanner(System.in);
            System.out.println("请输入一个数字");
            int num = scan.nextInt();
            num += num * 0.2;
            System.out.println(num);
    View Code

    1.2商场举行店庆,抽几折打几折,
    先手动输入消费金额,再输入,抽到的折扣,计算出折后价格

            Scanner scan = new Scanner(System.in);
            System.out.println("请输入消费金额");
            int num = scan.nextInt();
            System.out.println("请输入抽到的折扣");
            int dis = scan.nextInt();
            int price = 0;// 累加变量
            price = num * dis / 10;
            System.out.println("折后价格:" + price);
    View Code

    1.3手动输入一个4位数,求各位数字之和

            Scanner scan = new Scanner(System.in);
            System.out.println("请输入一个4位数");
            int shu = scan.nextInt();
            int a = shu / 1 % 10;
            int b = shu / 10 % 10;
            int c = shu / 100 % 10;
            int d = shu / 1000 % 10;
            System.out.println(a + b + c + d);
    View Code

    2分支结构:
    2.1商场消费返利活动,手动输入顾客消费金额,
    如果金额打8折后仍然满1000元,用户就获得200元代金券一张(不考虑多张)

            Scanner scan = new Scanner(System.in);
            System.out.println("请输入消费金额");
            int num = scan.nextInt();
    
            double dis = num * 0.8;// 打折后的价格
            if (dis > 1000) {
                dis = dis - 200;// 200元代金券
            }
            System.out.println(dis);
    View Code

    2.2用户输入一个年份,如果是闰年输出是闰年
    (年份能被4整除,且不能被100整除,或者能被400整除的年份)

            Scanner input = new Scanner(System.in);
            System.out.println("输入年份");
            int year = input.nextInt();
            if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
                System.out.println("是闰年");
            } else {
                System.out.println("不是闰年");
            }
    View Code

    2.3手动输入一个整型会员号,
    如果用户输入的是4位数字,
    输出登录成功,
    如果用户输入的不是4位数字,
    输出“您输入的会员号有误”

            Scanner input = new Scanner(System.in);
            System.out.println("请输入整型会员号");
            int num = input.nextInt();
            int i = 0;// 初始化 数字的位数
            while (num != 0) {
                num = num / 10;// 被10整除 i++;
            } // 最后,这个 i 就是数字的位数
            if (i != 4) {
                System.out.println("您输入的会员号有误");
            } else {
                System.out.println("登录成功!");
            }
    View Code

    2.4手动输入a,b,c三个变量的数值,
    要求通过数值交换,
    把输入的数值从小到大
    排序放入a,b,c中,并输出

            Scanner scanner = new Scanner(System.in);
            System.out.print("请输入第一个整数:");
            int a = scanner.nextInt();
            System.out.print("请输入第二个整数:");
            int b = scanner.nextInt();
            System.out.print("请输入第三个整数:");
            int c = scanner.nextInt();
    
            int x = 0;
            if (a > b) {
                x = a;
                a = b;
                b = x;
            }
            if (a > c) {
                x = a;
                a = c;
                c = x;
            }
            if (b > c) {
                x = b;
                b = c;
                c = x;
            }
            System.out.println(a + "," + b + "," + c);
    View Code

    3多分支结构
    3.1商场根据会员积分打折,
    2000分以内打9折,
    4000分以内打8折
    8000分以内打7.5折,
    8000分以上打7折,
    使用if-else-if结构,实现手动输入购物金额和积分,计算出应缴金额

            Scanner sc = new Scanner(System.in);
            System.out.println("请输入购物金额");
            double shop = sc.nextDouble();
            System.out.println("请输入积分");
            int fen = sc.nextInt();
            if (fen < 2000) {
                shop *= 0.9;
                System.out.println("目前消费" + shop + "元");
            } else if (fen >= 2000 && fen <= 4000) {
                shop *= 0.8;
                System.out.println("目前消费" + shop + "元");
            } else if (fen <= 8000 && fen > 4000) {
                shop *= 0.75;
                System.out.println("目前消费" + shop + "元");
            } else if (fen > 8000) {
                shop *= 0.7;
                System.out.println("目前消费" + shop + "元");
            } else {
                System.out.println("抱歉没有折扣");
            }
    View Code

    3.2机票价格按照淡季旺季、头等舱和经济舱收费、
    输入机票原价、月份和头等舱或经济舱,
    其中旺季(5-10月)头等舱9折,经济舱85折,
    淡季(11月到来年4月)头等舱7折,经济舱65折,
    最终输出机票价格

            Scanner s = new Scanner(System.in);
            System.out.println("请输入机票原价");
            int piao = s.nextInt();
            System.out.println("请输入月份");
            int yue = s.nextInt();
            System.out.println("请选择:1.头等" + "2.经济");
            int l = s.nextInt();
            if (yue >= 5 && yue <= 10) {// 旺季
                if (l == 1) {
                    piao *= 0.9;
                } else {
                    piao *= 0.85;
                }
    
            } else {// 淡季
                if (l == 1) {
                    piao *= 0.7;
                } else {
                    piao *= 0.65;
                }
    
            }
            System.out.println(piao);
    View Code

    3.3选择一个形状(1长方形、2正方形、3三角形、4圆形)
    根据不同的选择让用户输入不同的信息,
    长方形有长和宽、
    正方形有边长、
    三角形有底和高、
    圆形有半径,
    计算输出指定形状的面积

            Scanner scan=new Scanner(System.in);
            System.out.println("1长方形、2正方形、3三角形、4圆形");
            int num=scan.nextInt();
            switch(num) {
            case 1:
                System.out.println("请输入长方形的长");
                int l=scan.nextInt();
                System.out.println("请输入长方形的宽");
                int w=scan.nextInt();
                int fs=l*w;
                System.out.println("长方形面积为:"+fs);
                break;
            case 2:
                System.out.println("请输入正方形边长");
                int z=scan.nextInt();
                System.out.println("正方形面积为:"+z*z);
                break;
            case 3:
                System.out.println("请输入三角形的底长");
                int d=scan.nextInt();
                System.out.println("请输入三角形的高");
                int g=scan.nextInt();
                System.out.println("三角形面积为:"+d*g/2);
                break;
            case 4:
                System.out.println("请输入圆形的半径");
                double r=scan.nextDouble();
                double ys=3.14*r*r;
                System.out.println("圆形面积为:"+ys);
                break;
            }
    View Code

    3.4输入年份和月份,输出这个月应该有多少天(使用switch结构)

            Scanner scan = new Scanner(System.in);
            System.out.println("请输入年份");
            int year = scan.nextInt();
            System.out.println("请输入月份");
            int month = scan.nextInt();
            switch (month) {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                System.out.println("31天");
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                System.out.println("30天");
                break;
            case 2:
                if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
                    System.out.println("29天");
                } else {
                    System.out.println("28天");
                }
            }

    4循环结构(上)
    4.1随机生成一个1-100之间的数字num,循环让用户输入猜这个数,
    如果用户输入的数字大于num提示输入的数字比较大,
    如果用户输入的数字小于num提示输入的数字比较小,
    直到用户输入的数字和num相等为止,然后输出用户猜数的总次数

            Scanner scan=new Scanner(System.in);
            Random ran=new Random();
            //生成游戏答案1~100
            int num=ran.nextInt(100)+1;
            //System.out.println(num);
            int n=0;//定义n的初值
            int i=0;//定义猜数次数
            while(n!=num) {
                System.out.println("请猜数字");
                n=scan.nextInt();
                if(n>num) {//判断猜数结果
                    System.out.println("输入的数字较大");
                }else if(n<num) {
                    System.out.println("输入的数字较小");
                }else {
                    System.out.println("恭喜您猜对了");
                }
                i++;//猜数次数加1
            }
            System.out.println("总共猜了"+i+"次");

    4.2打印出1-100之间所有不是7的倍数和不包含7的数字,并求和

            int sum = 0;
            for (int i = 1; i <= 100; i++) {
                if(i%7 ==0 || i%10 == 7 || i/10 == 7){//注意:70-79容易漏掉
                    continue;
                }
                sum += i;
            }
            System.out.println(sum);

    4.3循环输入5个数,输完后显示这些数中有没有负数

            Scanner scan=new Scanner(System.in);
            System.out.println("请输入5个数字");
            int flag=0;//立旗
            int i=1;
            while(i<=5) {
                int num=scan.nextInt();
                if(num<0) {
                    flag=1;
                }
                i++;
            }
            if(flag==0) {
                System.out.println("没有负数");
            }else {
                System.out.println("有负数");
            }

    5循环结构(下)
    5.1有一个有钱的神经病,他往银行里存钱,
    第一天存1元,以后每天比前一天多存50%,完成下列计算任务
    1)他存到第几天,当天存的钱会超过10元

            double money=1;
            int day=1;
            while(money<10) {
                money*=1.5;
                day++;
                System.out.println("day:"+day+",money:"+money);
            }
            System.out.println(day);


    2)一个月(30天)后,他总共存了多少钱

    double sum=0;
            double mo=1;
            for(int i=1;i<=30;i++) {
                sum+=mo;
                System.out.println("i:"+i+",money:"+mo+",sum:"+sum);
                mo*=1.5;
            }
            System.out.println(sum);

     

     

    5.2有一个400米一圈的操场,一个人要跑10000米,
    第一圈50秒,其后每一圈都比前一圈慢1秒,
    按照这个规则计算跑完10000米需要多少秒

            int round=10000/400;
            int sum=0;
            int time=50;
            for(int i=1;i<=round;i++) {
                sum+=time;
                System.out.println("圈数:"+i+",时间:"+time+",花的时间:"+sum);
                time++;
            }
            System.out.println(sum);

    5.3用户输入任意一个整数,求各位数字之和

            Scanner scan=new Scanner(System.in);
            System.out.println("请输入一个数字");
            int num=scan.nextInt();
            int sum=0;//累加变量
            while(num>0) {
                //将数字的个位取出累加
                sum+=num%10;
                //将当前数字除以10,以便下次循环使用
                num=num/10;//num/=10;
            }
            System.out.println(sum);

    5.4井里有一只蜗牛,他白天往上爬5米,晚上掉3.5米,井深56.7米
    计算蜗牛需要多少天才能从井底到爬出来

            int day=1;//天数
            double sum=0;//爬过的距离
            while(true) {
                //白天向上爬5米
                sum+=5;
                System.out.println("day:"+day+",sum:"+sum);
                if(sum>=56.7) {//如果爬出了井
                    //退出循环
                    break;
                }
                //晚上掉3.5;
                sum-=3.5;
                day++;
            }
            System.out.println(day);

    6循环嵌套
    6.1求1~1000以内质数列表
    PS:质数是只能被1和自身整除的整数

            int i, j;
            for (i = 1; i <= 1000; i++) {
                for (j = 2; j < i; j++) {
                    if (i % j == 0)
                        break;
                }
    
                if (i == j){
                    System.out.print(j + " ");
                }
    
            }

    7数组
    7.1定义一个数组int[] nums={8,7,3,9,5,4,1}
    输出数组中的最大值和最大值所在的下标

            int[] nums={8,7,3,9,5,4,1};
            int max = nums[0];//默认第一个最大
            int index = 0;
            for (int i = 0; i < nums.length; i++) {
                if (nums[i] > max) {
                    max = nums[i];
                    index = i;
                }
            }
            System.out.println("最大的数: "+max+" 下标: "+index);

    7.2向一个长度为10的整型数组中随机生成10个0~9的随机整数,完成下列任务
    1)升序输出、降序输出
    2)输出总和、平均数

            Random ran = new Random();
            int[] num = new int[10];
            for (int i = 0; i < num.length; i++) {
                num[i] = ran.nextInt(10);
            }
            Arrays.sort(num);
            for (int i = 0; i < num.length; i++) {
                System.out.print(num[i] + " ");
            }
            System.out.println("------升序------");
            for (int i = num.length - 1; i >= 0; i--) {
                System.out.print(num[i] + " ");
            }
            System.out.println("------降序------");
    
            // 总和
            int sum = 0;
            for (int i = 0; i < num.length; i++) {
                sum = num[i] + sum;
            }
            System.out.println("总和:" + sum);
    
            // 平均数
            int sum2 = 0;
            for (int i = 0; i < num.length; i++) {
                sum2 = num[i] + sum2;
            }
            System.out.println("平均数:" + sum2 / num.length);

    7.3向一个长度为5的整型数组中随机生成5个1-10的随机整数
    要求生成的数字中没有重复数

            int[] nums = new int[5];
            Random ran = new Random();
            
            for (int i = 0; i < nums.length; i++) {
                nums[i] = ran.nextInt(10) + 1;
                
                for (int j = 0; j < i; j++) {
                    while (nums[i] == nums[j]) {//如果重复,退回去重新生成随机数
                        i--;
                    }
                }
            }
            for (int i = 0; i < nums.length; i++) {
                System.out.print(nums[i] + " ");
            }

    7.4(选做)向一个长度为10的整型数组中随机生成10个0~9的随机整数,完成下列任务
    1)统计每个数字出现了多少次
    2)输出出现次数最多的数字
    3)输出只出现一次的数字中最小的数字

            Random r = new Random();
            // 1. 声明源数组,包含10个0-9之间的随机数
            int[] src = new int[10];
            // 2. 声明一个标记数组,存放的是0-9,10个数字
            int[] flag = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
            // 3. 声明一个用来统计标记数组中数字在源
            // 数组中的个数
            int[] count = new int[flag.length];
            // 4. 给源数组赋值0-9之间的随机数
            for (int i = 0; i < src.length; i++) {
                src[i] = r.nextInt(10);
            }
            // 5. 统计标记数组中的每个元素在源数组中
            // 有多少个即给count数组赋值
            for (int i = 0; i < flag.length; i++) {
                for (int j = 0; j < src.length; j++) {
                    // 如果标记数组中的数字在源数组中有,则count+1
                    if (flag[i] == src[j]) {
                        count[i]++;
                    }
                }
            }
            // 6. 输出src和count的数据
            System.out.println("随机产生的数据如下:");
            System.out.println(Arrays.toString(src));
            // System.out.println(Arrays.toString(count));
    
            // a.统计每个数字出现的次数
            // 如果count中的元素的值大于0,则输出其下标和值
            for (int i = 0; i < count.length; i++) {
                if (count[i] > 0) {
                    System.out.println("数字" + i + "出现" + count[i] + "次");
                }
            }
    
            // b.输出出现最多次数的数字
            // 假设第一个统计的数字就是最多那个
            int max = count[0];
            int index = 0;
            for (int i = 0; i < count.length; i++) {
                if (count[i] > max) {
                    max = count[i];
                    index = i;
                }
            }
            System.out.println("出现次数最多的数字是" + index);
    
            // c. 输出只出现一次的数字中最小的数字
            for (int i = 0; i < count.length; i++) {
                if (count[i] == 1) {
                    System.out.println("出现1次的数字中最小的是" + i);
                    break;
                }
            }

    good luck!

  • 相关阅读:
    [luogu4053 JSOI2007] 建筑抢修 (贪心 优先队列)
    [luogu2272 ZJOI2007] 最大半连通子图 (tarjan缩点 拓扑排序 dp)
    20180705 考试记录
    [luogu4310] 绝世好题 (递推)
    [luogu2765 网络流24题] 魔术球问题 (dinic最大流)
    [luogu4151 WC2011] 最大XOR和路径 (线性基)
    [luogu3232 HNOI2013] 游走 (高斯消元 期望)
    [luogu3726 HNOI2017] 抛硬币 (拓展lucas)
    20180703 考试记录
    [spoj] HIGH
  • 原文地址:https://www.cnblogs.com/hxun/p/11493940.html
Copyright © 2020-2023  润新知