编程初学者入门训练-KiKi和酸奶

目录

  1. 网购
  2. 判断字母
  3. 进制A+B
  4. KiKi和酸奶
  5. 2的n次方计算

1.题目描述

KiKi非常喜欢网购,在一家店铺他看中了一件衣服,他了解到,如果今天是“双11”(11月11日)则这件衣服打7折,“双12” (12月12日)则这件衣服打8折,如果有优惠券可以额外减50元(优惠券只能在双11或双12使用),求KiKi最终所花的钱数。

1.1输入描述

一行,四个数字,第一个数表示小明看中的衣服价格,第二和第三个整数分别表示当天的月份、当天的日期、第四个整数表示是否有优惠券(有优惠券用1表示,无优惠券用0表示)。

1.2输出描述

一行,小明实际花的钱数(保留两位小数)。(提示:不要指望商家倒找你钱)

1.3示例1

输入

1000.0 11 11 1

输出

650.00

1.4示例2

输入

999.8 12 12 0

输出

799.84

1.5示例3

输入

66.6 11 11 1

输出

0.00

1.6代码实现

import java.util.Scanner;
import java.io.IOException;

public class Main{
    public static void main(String[] args) throws IOException{
        Scanner input = new Scanner(System.in);
        double price = input.nextDouble();    //价格
        int month = input.nextInt();    //月份
        int date = input.nextInt();    //日期
        int dis = input.nextInt();    //是否有优惠券
        
        if(month==11 && date==11){    //双十一折扣
            price = 0.7*price;
            if(price>=50 && dis==1){
                price = price-50;
            }else if(price<50 && dis==1){
            	price = 0;
            }
        }else if(month==12 && date==12){    //双十二折扣
            price = 0.8*price;
            if(price>=50 && dis==1){
                price = price-50;
            }else if(price<50 && dis==1){
            	price = 0;
            }
        }
        System.out.print(String.format("%.2f",price));
    }
}

2.题目描述

从键盘任意输入一个字符,编程判断是否是字母(包括大小写)。

2.1输入描述

多组输入,每行输入包括一个字符。

2.2输出描述

针对每行输入,输出该字符是字母(YES)或不是(NO)。

2.3示例1

输入

H
9

输出

YES
NO

2.4代码实现

import java.util.Scanner;
import java.io.IOException;

public class Main{
    public static void main(String[] args) throws IOException{
        Scanner input = new Scanner(System.in);
        while(input.hasNext()){
            char in = input.next().charAt(0);
            if(Character.isUpperCase(in)||Character.isLowerCase(in)){
                System.out.println("YES");
            }else{
                System.out.println("NO");
            }
        }
    }
}

3.题目描述

输入一个十六进制数a,和一个八进制数b,输出a+b的十进制结果(范围-231~231-1)。

3.1输入描述

一行,一个十六进制数a,和一个八进制数b,中间间隔一个空格。

3.2输出描述

一行,a+b的十进制结果。

3.3示例1

输入

0x12 05

输出

23

3.4备注

十六进制Hexadecimal一般以0x开头,例如0xFF。八进制Octal,一般以0开头,例如07。

3.5代码实现

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class Main{
    public static void main(String[] args) throws IOException{
        BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
        String[] strs = input.readLine().split(" ");
        int a = Integer.parseInt(strs[0].substring(2),16);//index默认十进制,这里需要改为十六进制
        int b = Integer.parseInt(strs[1].substring(1),8);
        int sum = a+b;
        System.out.println(sum);
    }
}

4.题目描述

BoBo买了一箱酸奶,里面有n盒未打开的酸奶,KiKi喜欢喝酸奶,第一时间发现了酸奶。KiKi每h分钟能喝光一盒酸奶,并且KiKi在喝光一盒酸奶之前不会喝另一个,那么经过m分钟后还有多少盒未打开的酸奶?

4.1输入描述

多组输入,每组输入仅一行,包括n,h和m(均为整数)。输入数据保证m <= n * h。

4.2输出描述

针对每组输入,输出也仅一行,剩下的未打开的酸奶盒数。

4.3示例1

输入

8 5 16

输出

4

4.4代码实现

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class Main{
    public static void main(String[] args) throws IOException{
        BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
        String strs = input.readLine();
        while(strs != null){
            String[] in = strs.split(" ");
            int n = Integer.parseInt(in[0]);
            int h = Integer.parseInt(in[1]);
            int m = Integer.parseInt(in[2]);
            int counts = 0;
            if(m%h==0){
                counts = n-m/h;
            }else{
                counts = n-m/h-1;
            }
            System.out.println(counts);
            strs = input.readLine();
        }
    }
}

5.题目描述

不使用累计乘法的基础上,通过移位运算(<<)实现2的n次方的计算。

5.1输入描述

多组输入,每一行输入整数n(0 <= n < 31)。

5.2输出描述

针对每组输入输出对应的2的n次方的结果。

5.3示例1

输入

2
10

输出

4
1024

5.4代码实现

import java.util.Scanner;
import java.io.IOException;

public class Main{
    public static void main(String[] args) throws IOException{
        Scanner input = new Scanner(System.in);
        while(input.hasNext()){
            int n = input.nextInt();
            System.out.println(2<<(n-1));
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值