java基础练习题


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

Scanner scan = new Scanner(System.in);
 
System.out.println("请输入一个成绩");
double num = scan.nextDouble();
num += num*0.2;
 
System.out.println(num);
View Code

 

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

Scanner scan = new Scanner(System.in);

System.out.println("输入消费金额:");
double num = scan.nextDouble();//获取键盘数据

System.out.println("抽到的折扣:");
int dis = scan.nextInt();//获取键盘,扫描对象scan依然可用

double price = (num*dis)/10;
System.out.println("折后的价格:" + price);
View Code

 

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

        Scanner scan = new Scanner(System.in);
        System.out.println("请输入一个4位数:");
        int i = scan.nextInt();

        //思路:除以10 100 1000实现小数点左移取整 模10得到个位数的值
        int a,b,c,d;
        d = i%10;
        c = i/10%10;
        b = i/100%10;
        a = i/1000%10;

        int num = a+b+c+d;
        System.out.println(num);    
View Code

 

2、分支结构

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

        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入消费金额:");
        int i = scanner.nextInt();//这里只做整数计算

        double dis = i*0.8;//打折后金额
        if(dis>=1000){
            dis -= 200;
        }

        System.out.println("最后支付费用为:"+dis);
View Code

 

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

        Scanner scanner = new Scanner(System.in);//创建扫描对象同时建立引用
        System.out.println("请输入年份:");
        int year = scanner.nextInt();

        if(year%4==0&&year%100!=0||year%400==0){//思路:整百年份只有能被400整除的年份是闰年,非整百年份能被4整除,且不能被100整除)
            System.out.println("是闰年");
        }else {
            System.out.println("不是闰年");
View Code

 

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

        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入会4位员号:");
        int num = scanner.nextInt();

        int i = 0;//位计数
        while (num != 0){   //巧用循环
            i++;
            num /= 10;  //除以10取整相当于小数点左移取整
        }

        System.out.println(i);
        if (i == 4){
            System.out.println("登录成功");
        }else {
            System.out.println("输入有误");
        }
View Code

 

        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入会4位员号:");
        int num = scanner.nextInt();

        int i = 0;//位计数
        while (num != 0){   //巧用循环
            i++;
            num /= 10;  //除以10取整相当于小数点左移取整
        }

        System.out.println(i);
        if (i == 4){
            System.out.println("登录成功");
        }else {
            System.out.println("输入有误");
        }

        scanner.close();
View Code

 

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

        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入3个整数:");
        int a = scanner.nextInt();
        int b = scanner.nextInt();
        int c = scanner.nextInt();
        int i=0;
   
        //两两比较
        if(a>b){
            i=a;
            a=b;
            b=i;
        }
        if (a>c){
            i=a;
            a=c;
            c=i;
        }
        if (b>c){
            i=b;
            b=c;
            c=i;
        }

        System.out.print(a+"\t"+b+"\t"+c);
        scanner.close();
View Code

 

3、多分支结构 

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

        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入会员的积分:");
        int fen = scanner.nextInt();
        System.out.println("请输入本次消费金额:");
        int shop = scanner.nextInt();

        if(fen<2000){
            shop *= 0.9;
        }else if(fen<4000){
            shop *= 0.8;
        }else if(fen<8000){
            shop *= 0.75;
        }else{
            shop *= 0.7;
        }

        System.out.println("应缴金额为:"+shop+"元");
        scanner.close();
View Code

 

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

        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入机票原价:");
        int piao = scanner.nextInt();
        System.out.println("请输入当前月份:");
        int month = scanner.nextInt();
        System.out.println("请选择:1、头等舱 2‘经济舱");
        int i = scanner.nextInt();

        if(month>=5 && month<=11){
            System.out.print("当前是旺季,");
            if (i == 1){
                piao *= 0.9;
                System.out.println("您的票是头等舱,折扣票价为:"+ piao);
            }else {
                piao *= 0.85;
                System.out.println("您的票是经济舱,折扣票价为:"+piao);
            }

        }else if(month==12 || month>=1 && month<=4){
            System.out.print("当前是淡季,");
            if (i == 1){
                piao *= 0.7;
                System.out.println("您的票是头等舱,折扣票价为:"+piao);
            }else {
                piao *= 0.65;
                System.out.println("您的票是经济舱,折扣票价为:"+piao);
            }
        }else {
            System.out.println("月份错误");
        }
        scanner.close();
View Code


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

        Scanner scanner = new Scanner(System.in);       //创建扫描对象
        System.out.println("请选择一个形状:1长方形 2正方形 3三角形 4圆形");
        int i = scanner.nextInt();          //获取键盘
        float pi = 3.141592f;
        double result;

        //对比输入值
        switch (i){
            case 1:
                System.out.println("输入长度:");
                int length = scanner.nextInt();
                System.out.println("输入宽度:");
                int wide = scanner.nextInt();
                result = length * wide;
                System.out.println("长方形的面积是:"+ result);
                break;
            case 2:
                System.out.println("输入边长:");
                int l = scanner.nextInt();
                result = l*l;
                System.out.println("正方形的面积是:"+ result);
                break;
            case 3:
                System.out.println("输入底长:");
                int d = scanner.nextInt();
                System.out.println("输入高:");
                double h = scanner.nextInt();
                result = d*h/2;
                System.out.println("三角形的面积是:"+ result);
                break;
            case 4:
                System.out.println("输入半径:");
                double r = scanner.nextDouble();
                result = pi*r*r;
                System.out.println("圆的面积是:"+ result);
                break;
        }
        scanner.close();
View Code

 

4、循环结构 

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

        Random random = new Random();//创建随机数生成器对象
        int num = random.nextInt(100)+1;//int nextInt(int n):返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)和指定值n(不包括)之间均匀分布的 int 值。

        Scanner scanner = new Scanner(System.in);
        System.out.println("请猜一个数字:");
        int i = 0;
        int count = 0;

        while(i!=num){
            i = scanner.nextInt();
            count++;
            if (i>num){
                System.out.println("猜大了");
            }else{
                System.out.println("猜小了");
            }

        }

        System.out.println("恭喜正确,您一共猜了"+ count +"次!");
        scanner.close();
View Code

 

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

        int num = 0;

        for (int i = 1; i <= 100; i++) {
            if(i%7 != 0 && i%10 != 7 && i/10 != 7){
                num += i;
            }
        }

        System.out.println(num);
View Code
        int num = 0;

        for (int i = 1; i <= 100; i++) {
            if(i%7 == 0 || i%10 == 7 || i/10 == 7){
                continue;
            }
            num += i;
        }

        System.out.println(num);
View Code

 

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

        int count = 0;
        int flag = 0;//立旗
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入5个数字:");

        while (count<5){
            int num = scanner.nextInt();
            if(num<0){
                flag=1;
            }
            count++;
        }
        if(flag==0){
            System.out.println("没有负数");
        }else {
            System.out.println("有负数");
        }
        scanner.close();
View Code

 

5、循环结构(下)

5.1有一个有钱的神经病,她往银行里存钱。第一天存1元,以后每天比前一天多存50%,完成下列计算任务

1)他存到第几天,当天存的钱会超过10元
        double money = 1;
        int day = 1;

        while (money<10){
            money *= 1.5;
            day++;
        }
        System.out.println("第" + day +"天超过10元");
View Code

 

        double money = 1;
        int day =1;
        //day在for中定义是局部变量,不能在外部直接输出;
        for (;true;day++) {
            if(money>10){
                break;
            }
            money *= 1.5;
        }

        System.out.println("第" + day +"天超过10元");
View Code

 

        double money = 1;
        int day = 1;

        //使用if break的方式
        while (true){
            if(money>10){
                break;
            }
            money *= 1.5;
            day++;
        }

        System.out.println("第" + day +"天超过10元");
View Code

 

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

        double money = 1;
        double num = 0;

        for (int day = 1; day <= 30; day++) {
            num += money;
            System.out.println("day:"+day+",money:" + money);
            money *= 1.5;
        }
        
        System.out.println("一个月共存了" + money +"元");
View Code

 

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

        int time = 50;
        int round = 10000/400;
        int sum =0;

        for (int i = 1; i <= round; i++) {
            sum += time;
            time++;
        }
        
        System.out.println(sum);
View Code

 

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

        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个整数");
        int num = scanner.nextInt();
        int sum = 0;

        while (num>0){
            sum += num%10;//模10得到个位的数字
            num = num/10;//除以10取整得到个位前面的数字
        }
        
        System.out.println("各位数字之和为:" + sum);
View Code

 

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

        int day = 1;
        double sum = 5;

        while (sum <= 56.7){
            sum -= 3.5;
            day++;
            sum += 5;
        }
        System.out.println("需要" +day+ "天");
    }
View Code
        int day = 1;
        double sum = 0;

        while (true){
            sum +=5;
            if(sum>56.7){
                break;
            }
            sum -= 3.5;
            day++;
        }
        System.out.println(day);
View Code

 

6、循环嵌套

6.1求1-1000以内的质数列表。质数是只能被1和自身整除的整数

        int i,j;
        int count=0;

        //思路:遍历测试从2-自身(包含)之间的因数,如果只有自身则说明是质数(如果这个因数小于自身,说明i有其它因数)
        for (i = 1; i <1000 ; i++) {//1不是质数,质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
            for(j = 2;j<=i;j++){
                if(i%j==0){//找因数
                    break;
                }
            }
            if(i==j){
                System.out.print(i+"\t");
                count++;
            }
            if(count == 10){
                System.out.println();
                count = 0;
            }
        }
View Code
        //思路:遍历测试2-自身之间的数,如果没有因数说明i是质数(如果有因数,则说明i不是质数
        int j;
        for (int i=1;i<150;i++){//1不是质数
            for (j=2;j<i;j++){
                if (i%j == 0){//找因数
                   break;
                }
            }
            if(j<i){
                continue;
            }
            System.out.print(i+" ");
        }
View Code
        //思路:遍历测试2-自身之间的数,如果没有因数说明i是质数(如果有因数,则说明i不是质数
        outhor:
        for (int i=1;i<150;i++){//1不是质数
            for (int j=2;j<i;j++){
                if (i%j == 0){//找因数
                    continue outhor;
                }
            }
            System.out.print(i+" ");
        }
View Code

 

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;
        
        //思路:遍历数组元素,与max比较
        for (int i = 1; i < nums.length; i++) {
            if(nums[i]>max){
                max=nums[i];
                index = i;
            }
        }
        System.out.println("最大值是:"+max+",下标是:"+index);
View Code

 

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

        int[] ints = new int[10];
        Random random = new Random();

        //生成数组
        for (int i = 0; i < 10; i++) {
            ints[i] = random.nextInt(10);
            System.out.print(ints[i]+" ");
        }
        System.out.println();

        //升序输出
        int n;
        for (int j = 9; j > 0; j--) {
            for (int i = 0; i < j; i++) {
                if(ints[i+1]<ints[i]){
                    n = ints[i];
                    ints[i] = ints[i+1];
                    ints[i+1] = n;
                }
            }
        }
        for (int i = 0; i < 10; i++) {
            System.out.print(ints[i]+" ");
        }
        System.out.println();

        //降序输出
        for (int j = 9; j > 0; j--) {
            for (int i = 0; i < j; i++) {
                if(ints[i]<ints[i+1]){
                    n = ints[i];
                    ints[i] = ints[i+1];
                    ints[i+1] = n;
                }
            }
        }
        for (int i = 0; i < 10; i++) {
            System.out.print(ints[i]+" ");
        }

        //总和 平均数
        System.out.println();
        double sum=0;
        for (int i = 0; i < 10; i++) {
            sum += ints[i];
        }
        System.out.print("数组元素的总和是:"+sum+",平均数是:"+sum/10);
View Code

 

        //创建对象
        Random ran = new Random();
        int[] num = new int[10];

        //生成数组
        for (int i = 0; i < num.length; i++) {
            num[i] = ran.nextInt(10);
        }

        //使用sort方法排序 Arrays.sort(数组名,起始下标,终止下标);
        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);
        System.out.println("平均数:" + sum / num.length);
View Code

 

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

        int[] num = new int[5];
        Random ran = new Random();
        
        for (int i = 0; i < num.length; i++) {
            num[i] = ran.nextInt(10)+1;//元素获取随机数
            //思路:新元素值与前面的元素遍历比较,如果相等,退回去重新生成随机数,再次遍历比较
            for (int j = 0; j < i; j++) {
                if(num[i]==num[j]){
                    i--;
                    break;
                }
            }
        }

        //foreach语法 遍历数组 访问集合中的元素
        for (int x:num) {
            System.out.println(x);
        }
View Code

 

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

        //创建对象,生成一个随机数组
        int[] ints = new int[20];
        Random random = new Random();
        for (int i = 0; i < ints.length; i++) {
            ints[i] = random.nextInt(20);
            System.out.print(ints[i]+" ");
        }
        System.out.println();

        //按照元素互相比较的方法进行统计的思路
        int count = 0;
        int n = 0;
        int[][] numbs = new int[ints.length][2];
        outhor:
        for (int i = 0; i < ints.length; i++) {//遍历ints[i]的元素
            //左侧若有重复,则跳出循环遍历下一个元素
            for (int j = i-1; j >= 0; j--) {
                if(ints[i]==ints[j]){
                    continue outhor;
                }
            }
            //右侧有重复,则计数累加,并输出数字
            for (int j = i; j < ints.length; j++) {
                if(ints[i]==ints[j]){
                    count++;
                }
            }
            System.out.println("数字"+ints[i]+ "出现了"+count+"次,");//输出数字和出现次数

            //用二维数组存储下每个数字及出现次数,数组有效长度为n,这里数字已无重复
            numbs[n][0] = ints[i];
            numbs[n][1] = count;
            n++;
            count = 0;
        }
        for (int i = 0; i < n; i++) {
            System.out.println(numbs[i][0] +"\t"+ numbs[i][1]+",");//查看二维数组
        }

        //提取最大的计数值(出现次数)
        int maxc = 0;
        for (int i = 0; i < n; i++) {
            if(numbs[i][1]>maxc){
                maxc = numbs[i][1];
            }
        }
        //输出计数值(出现次数)为最多的所有数字
        System.out.print("出现次数最多的数字是:");
        for (int i = 0; i < n; i++) {
            if(numbs[i][1] == maxc){
                System.out.print(numbs[i][0]+ " ");
            }
        }
        System.out.println();

        //提取计数(出现次数)为1的数字,存储在数组中,数组有效长度为m
        int[] num =new int[n];
        int m = 0;
        System.out.print("只出现一次的数字是:");
        for (int i = 0; i < n; i++) {
            if(numbs[i][1] == 1) {
                System.out.print(numbs[i][0] + " ");
                num[m] = numbs[i][0];
                m++;
            }
        }
        //输出最小数字
        int min = num[0];
        for (int i = 1; i < m; i++) {
            if(num[i]<min){
                min = num[i];
            }
        }
        System.out.println("其中最小的数字是:"+min);
View Code

 

 

2021-10-18

//即使再小的帆也能远航~~~


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM