java基础编程题

一、工资

假设税前工资和税率如下(s代表税前工资,t代表税率):
s<1000    t=0%
1000<=s<2000      t=10%
2000<=s<3000  t=15%
3000<=s<4000     t=20%
4000<=s             t=25%
编写一程序,要求用户输入税前工资额,然后用多分支if语句计算税后工资额。
【输入形式】
从键盘输入税前工资s,可以是浮点数。
【输出形式】
输出税后工资额,保留小数后两位。
【输入样例】
3000
【输出样例】
2400.00

package com.my.test;
import java.util.Scanner;
public class Salary {
    public static void main(String[] args)
    {
        Scanner sc=new Scanner(System.in);
        double salary1;
        double salary=sc.nextDouble();
        if(salary<1000){
            System.out.printf("%.2f",salary);
        } else if (salary>=1000 && salary<2000) {
            salary1=salary-(salary*0.10);
            System.out.printf("%.2f",salary1);
        } else if (salary>=2000 && salary<3000) {
            salary1=salary-(salary*0.15);
            System.out.printf("%.2f",salary1);
        }else if (salary>=3000 && salary<4000){
            salary1=salary-(salary*(double) (0.20));
            System.out.printf("%.2f",salary1);
        } else if (salary>=4000) {
            salary1=salary-(salary*(double) (0.25));
            System.out.printf("%.2f",salary1);
        }
    }

}

二、整数的交集a

从标准输入中输入两组整数(每组不超过20个整数,每组整数中的元素不重复,并且整数大于等于0),编程求两组整数的交集,即在两组整数中都出现的整数,并按从小到大顺序排序输出。若交集为空,则什么都不输出。

【输入形式】

在两行上分别输入两组整数,以一个空格分隔各个整数,以-1作为输入结束。

【输出形式】

按从小到大顺序排序输出两组整数的交集(以一个空格分隔各个整数,最后一个整数后的空格可有可无)。

【样例输入】

5  105  0  4  32  8  7  9  60  -1
5  2  87  10  105  0  32  -1

【样例输出】

package com.my.test;
import java.util.Arrays;
import java.util.Scanner;
public class Intersect {
    public static void main(String[] args)
    {
        Scanner sc=new Scanner(System.in);
        int i=0,n=0,c=0,i1,n2;
        int zu1[]=new int[21];
        int zu2[] =new int[21];
        int zu3[]=new int[21];
        Arrays.fill(zu3,-1);
        zu1[i]=sc.nextInt();
        while(zu1[i]!=-1)
        {
            i++;
            zu1[i]=sc.nextInt();
        }
        i1=i;
        zu2[n]=sc.nextInt();
        while(zu2[n]!=-1)
        {
            n++;
            zu2[n]=sc.nextInt();
        }
        n2=n;
        for(i=0;i<i1;i++)
        {
            for(n=0;n<n2;n++)
            {
                if(zu1[i]==zu2[n])
                {
                    zu3[c]=zu1[i];
                    c++;
                }
            }
        }
        Arrays.sort(zu3);
        for(int a : zu3)
        {
            if(a!=-1)
                System.out.print(a+" ");
        }
    }
}

三、简单加密系统

【问题描述】实现一个基于ASCII码的简单加密系统。

加密规则如下:

if (OriginalChar + Key > 126) then

       EncryptedChar = ((OriginalChar + Key)-127) + 32

else

       EncryptedChar = (OriginalChar + Key)

限定密钥是1~100之间的某个数字。原始消息全部由ASCII码组成,

编写加密解密功能,实现这个加密系统。输入密钥和一行明文,输出密文;再对密文解密,输出明文。

提示:String.charAt()方法可用于获取字符串中的某个字符

              String.length()方法可返回字符串长度(字符个数)

              Scanner.nextLine()方法可从键盘输入一行字符

package com.my.test;
import java.util.Scanner;
public class ASCii {
    public static void main(String[] args)
    {
        Scanner sc=new Scanner(System.in);
        char OriginalChar;
        char Echar1[] =new char[15];
        char Echar2[] =new char[15];
        System.out.printf("Enter a message for encrypt: ");
        String char1=sc.nextLine();
        System.out.printf("Enter a key between 1 to 100: ");
        int Key=sc.nextInt();
        //int OriginalChar=char1.length();
        for(int i=0;i<char1.length();i++) {
            OriginalChar=char1.charAt(i);
            if(OriginalChar + Key >126){
                Echar1[i]=(char)(((OriginalChar + Key)-127)+32);
            }else{
                Echar1[i]=(char)(OriginalChar+Key);
            }
        }
        String char2=String.valueOf(Echar1);
        System.out.println("message: "+char1);
        System.out.println("result: "+char2);
        for(int i=0;i<char2.length();i++)
        {
            OriginalChar=char2.charAt(i);
            if(OriginalChar-Key <32)
            {
                Echar2[i]=(char)(((OriginalChar-Key)+127)-32);
            }else{
                Echar2[i]=(char)(OriginalChar-Key);
            }
        }
        String char3=String.valueOf(Echar2);
        System.out.println("result: "+char2);
        System.out.println("message: "+char3);

    }
}

四、回文数

【问题描述】所谓回文数是指具有如下性质的整数:一个整数,当它的各位数字逆序排列,形成的整数与原整数相同,这样的数称为回文数。例如,素数11,373,其各位数字对换位置后仍然为11,373,因此这两个整数均为回文数。编写函数int loop(int x),判断一个整数是否为回文数,如果x是回文数则返回1,否则返回0。编写程序loop.c,接收控制台输入的两个整数a,b。调用loop函数输出a到b之间(包括a和b)的所有回文数
【输入形式】控制台输入两个整数a和b(必有a<b),以空格分隔。
【输出形式】输出有若干行,每行有一个a和b之间的回文数。输出各行上的数字不重复,且从小至大依次按序输出。
【样例输入】3 120
【样例输出】
3
4
5
6
7
8
9
11
22
33
44
55
66
77
88
99
101
111

package com.my.test;

import java.util.Scanner;
import java.util.ArrayList;
import java.util.List;
public class Palindrome {
    public static void main(String[] args) {

        Scanner sc =new Scanner(System.in);

        int a = sc.nextInt();

        int b = sc.nextInt();

        List<Integer> array =new ArrayList<>();

        array.addAll(loop(a,b));

        print(array);

    }

    public static List<Integer> loop(int x, int y){

//判断x与y谁大谁小

        if (x > y){

            int temp = x;

            x = y;

            y = temp;

        }

        List array =new ArrayList<>();

        for (int i = x;i <= y;i++){

            String s = String.valueOf(i);

            //String的reverse方法,反转字符,判断反转前后是否相等

            String revers =new StringBuffer(s).reverse().toString();

            if (s.equals(revers)){

//存入List

                array.add(i);

            }

        }

        return array;

    }

//遍历List

    public static void print(List<Integer> a){

        for (Integer integer : a) {

            System.out.println(integer);

        }

    }
}


五、人民币兑换

输入一个人民币的整数值(100以内以元为单位),编程找到用10元、5元、2元、1元表示的总数量的最小组合方式。

【输入形式】

从控制台输入一个整数值,表示以元为单位的人民币币值。

【输出形式】

向控制台输出四个整数(以空格分隔),分别表示兑换成的10元、5元、2元、1元人民币的数量,若没有某个币值,则对应输出0。

【样例1输入】

98

【样例1输出】

9 1 1 1

【样例1说明】

输入为98,表示98元人民币,把其兑换成10元、5元、2元、1元表示的总数量的最小组合方式为:9个10元,1个5元,1个2元,1个1元,故输出:9 1 1 1

【样例2输入】

11

【样例2输出】

1 0 0 1

package com.my.test;
import java.util.Scanner;
public class Yuan {
    public static void main(String[] args)
    {
        Scanner sc=new Scanner(System.in);
        int Y=sc.nextInt();
         int a=Y/10;
         int b=Y%10;
        int c=b/5;
        int d=b%5;
        int e=d/2;
        int f=d%2;
        int g=f/1;
        int h=f%1;
        System.out.println(a+" "+c+" "+e+" "+g);


    }
}

六、次数

整数出现次数

【问题描述】

输入一组无序的整数,编程输出其中出现次数最多的整数及其出现次数。

【输入形式】

先从标准输入读入整数的个数(大于等于1,小于等于100),然后在下一行输入这些整数,各整数之间以一个空格分隔。

【输出形式】

在标准输出上输出出现次数最多的整数及其出现次数,两者以一个空格分隔;若出现次数最多的整数有多个,则按照整数升序分行输出。

【样例输入】

10

0 -50 0 632 5813 -50 9 -50 0 632

【样例输出】

-50 3

0 3

【样例说明】

输入了10个整数,其中出现次数最多的是-50和0,都是出现3次

 

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // 读取整数的个数
        int n = scanner.nextInt();
        Map<Integer, Integer> countMap = new HashMap<>();

        // 读取一组无序的整数
        for (int i = 0; i < n; i++) {
            int num = scanner.nextInt();
            countMap.put(num, countMap.getOrDefault(num, 0) + 1);
        }

        // 找出出现次数最多的整数及其出现次数
        int maxCount = Collections.max(countMap.values());
        List<Integer> mostFrequentNums = new ArrayList<>();
        for (Map.Entry<Integer, Integer> entry : countMap.entrySet()) {
            if (entry.getValue() == maxCount) {
                mostFrequentNums.add(entry.getKey());
            }
        }

        // 按照整数升序输出
        Collections.sort(mostFrequentNums);
        for (int num : mostFrequentNums) {
            System.out.println(num + " " + maxCount);
        }
    }
}

七、希望大家多多支持

  • 25
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值