Java基础编程题

   判断101-200之间有多少个素数,并输出所有素数。

public class demo_02 {
    public static void main(String[] args) {
        int count=0;
        for (int i=101;i<=200;i++){
            boolean flag=true;
            for (int j=2;j<=i/2;j++){
                if(i%j==0){
                    flag=false;
                    break;
                }
            }
            if(flag){
                 count++;
                 System.out.print(i+" ");
                 if(count==10){
                     System.out.println();
                 }
             }
        }
        System.out.println();
        System.out.println(count);
    }
}

题目:有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,将原有的数据和计算出的平均分数存放在磁盘文件"stud"中。

public class demo_03 {
    public static void main(String[] args) throws IOException {
        Scanner scanner=new Scanner(System.in);
        String name[]=new String[5];//定义姓名数组
        int number[]=new int[5];//编号
        float stu[][]=new float[5][3];//定义成绩表
        float avgScore[]=new float[5];//定义平均成绩
        for (int i=0;i<stu.length;i++){
            float score=0;
            System.out.println("请输入学号");
            number[i]=scanner.nextInt();
            System.out.println("请输入姓名");
            name[i]=scanner.next();
            for (int j=0;j<stu[i].length;j++){
                System.out.println("请输入第"+(i+1)+"个学生的第"+(j+1)+"门成绩");
                stu[i][j]=scanner.nextFloat();
                if(j<stu[i].length){
                    score+=stu[i][j];
                }
            }
            avgScore[i]=score;
        }
        //向磁盘中写入数据
        FileWriter fw = new FileWriter("D://a/stud.txt");
        BufferedWriter bw = new BufferedWriter(fw);
        bw.write("No.  "+"Name  "+"stu1  "+"stu2  "+"stu3  "+"avgScore");
        bw.newLine();
        for(int i=0;i<5;i++){
            bw.write(number[i]+"");//注意: bw.write中的参数如果是int类型输出为null
            bw.write("\t"+name[i]);
            for(int j=0;j<3;j++){
                bw.write("\t"+stu[i][j]);
            }
            bw.write("\t"+(avgScore[i]/3));
            bw.newLine();
        }
        bw.close();
    }
}

打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。

 

public class Demo_04 {
    public static void main(String[] args) {
        for (int i=100;i<1000;i++){
            if(
                    (((i%10)*(i%10)*(i%10))+
                            ((i/10%10)*(i/10%10)*(i/10%10))+
                            ((i/100)*(i/100)*(i/100)))==i
            ){
                System.out.println(i+":为水仙花数");
            }
        }
    }
}

 

将一个正整数分解质因数。例如:输入90,打印出90=233*5。

public class Demo_05 {
    static int count=0;//用来记录质因数的个数
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入一个整数");
        int n=scanner.nextInt();
        int result[] = f(n);
        int arr[]=new int[count];
        for (int i=0;i<result.length;i++){
            if(result[i]!=0){
                arr[i]=result[i];
            }
        }
        for(int i=0;i<arr.length;i++){
            if(i!=arr.length-1){
                System.out.print(arr[i]+"*");
            }else{
                System.out.print(arr[i]);
            }
        }
    }
    //判断该数的质因数的个数
    public static int[] f(int n){
        if(n==1){
            System.out.println(n);
        }
        int j=0;
        int arr[]=new int[n];//用来存放质因数
        for(int i=2;i<=n;){
           if(n%i==0){//为质因数
               arr[j++]=i;//存入数组
               n=n/i;//更新n的值
               count++;
           }else{
               i++;//在这里i++是因为数字可以重复使用
           }
       }
        return arr;
    }
}

 

 利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的   用B表示,60分以下 的用C表示

public class Demo_06 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入成绩");
        float score=sc.nextFloat();
        if(score>=90){
            System.out.println("A");
        }else if(score>=60){
            System.out.println("B");
        }else{
            System.out.println("C");
        }
    }
}

 

输入两个正整数m和n,求其最大公约数和最小公倍数。

public class Demo_07 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入m的值");
        int m=sc.nextInt();
        System.out.println("请输入n的值");
        int n=sc.nextInt();
        int gcd = gcd(m, n);
        int lcm=lcm(m,n);
        System.out.println("最大公约数为:"+gcd);
        System.out.println("最小公倍数为:"+lcm);
    }
    //最大公约数
   public static int gcd(int a,int b){
       if(b==0)
           return a;
       return gcd(b,a%b);
    }
    //最小公倍数公式:x*y/gcd(x,y)
    public static int lcm(int a,int b){
        return a*b/gcd(a,b);
    }
}

 

 

输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
     

可用Character类中的方法做题

Character中的:
                        isDigit(char ch) :确定指定的字符是否是数字。

                        isLetter(char ch) :确定指定的字符是否是一个字母。

                        isSpaceChar(char ch):确定指定的字符是否是Unicode空格字符。

public class Demo_08 {
    public static void main(String[] args) {
        int zm=0;
        int kg=0;
        int number=0;
        int other=0;
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入 一行字符");
        String str=sc.nextLine();
        char c[]=str.toCharArray();
        for (int i=0;i<c.length;i++){
            if(c[i]>=48&&c[i]<=57){
                number++;
            }else if((c[i]>=65&&c[i]<=90)||(c[i]>=97&&c[i]<=122)){
                zm++;
            }else if(c[i]==32){
                kg++;
            }else{
                other++;
            }
        }
        System.out.println("数字字符有"+number+"个");
        System.out.println("字母字符有"+zm+"个");
        System.out.println("空格字符有"+kg+"个");
        System.out.println("其他字符有"+other+"个");
    }
}

求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。

 

public class Demo_09 {
    public static void main(String[] args) {
        int s=0;//和值
        int m=0;//中间变量
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入一个数");
        int number=sc.nextInt();
        System.out.println("请输入相加的次数");
        int count=sc.nextInt();
        for (int i=1;i<=count;i++){
            m+=number;//更新中间变量
            System.out.print(m);
            if(i==count){
                System.out.print("=");
            }else{
                System.out.print("+");
            }
            s+=m;//各个数相加
            number*=10;//为下一个加数做准备
        }
        System.out.println(s);
    }
}

一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程 找出1000以内的所有完数。

 

public class Demo_10 {
    public static void main(String[] args) {
        for (int i=1;i<=1000;i++){
            int sum=0;
            for(int j=1;j<i;j++){
                if(i%j==0){//求因子
                    sum+=j;//计算因子的和
                }
            }
            if(sum==i){
                System.out.println(i+"是完数");
            }
        }
    }
}

一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?

public class Demo_01 {
    public static void main(String[] args) {
        double height=100;
        double sum=0;
        for(int i=1;;i++){
           height/=2;
           sum+=height*2;
           if(i==10){
               System.out.println("第10次反弹"+height+"米");
               System.out.println("共经过"+(sum+100)+"米");
               break;
           }
        }
    }
}

 

 

有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

 

/**
 *  使用暴力
 * @param args
 */
public static void main(String[] args) {
    int temp=0;
    int count=0;
    for(int i=1;i<=4;i++)
        for (int j=1;j<=4;j++)
            for(int k=1;k<=4;k++){
                if(i!=j&&i!=k&&j!=k){
                    temp=i*100+j*10+k;
                    count++;
                    System.out.print(temp+"\t");
                    if(count%4==0){
                        System.out.println();
                    }
                }
            }
    System.out.println("个数:"+count);
}

 

//使用全排列方法
/*使用全排列方法
static Set<String> set=new HashSet<String>();
public static void main(String[] args) {
    int arr[] = { 1,2,3,4};
    int temp[]=new int[100];
    int sc=0;
    int count=0;
    perm(arr,0);
    for (String s:set) {
        temp[sc++] = Integer.parseInt(s);
    }
   for (int i=0;i<temp.length;i++){
       if(temp[i]!=0){
           count++;
           System.out.println("去重全排列有:" + temp[i]);
       }
   }
    System.out.println(count);
}

//全排列
private static void perm(int[] arr, int start) {
    String str = "";
    if (start == arr.length) {
        for (int i = 0; i < arr.length-1; i++) {
            str += arr[i] + "";
        }
        set.add(str);
    } else {
        for (int i = start; i < arr.length; i++) {
            swap(arr, start, i);
            perm(arr, start + 1);
            swap(arr, start, i);
        }
    }
}
public static void swap(int[] array, int s, int i) {
    // 交换
    int t = array[s];
    array[s] = array[i];
    array[i] = t;
}
 */

企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?

 

public class Demo_03 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入当月利润");
        int gain=sc.nextInt();
        double bonus1=0;
        if(gain>=10){
           bonus1=10*0.1;
        }else{
            bonus1=gain*0.1;
        }
        double bonus2=bonus1+(gain-10)*0.075;
        double bonus3=bonus2+(gain-20)*0.05;
        double bonus4=bonus3+(gain-40)*0.03;
        double bonus5=bonus4+(gain-60)*0.015;
        double bonus6=bonus5+(gain-100)*0.01;
        double bonusSum=0;
        if(gain<=10){
           bonusSum=bonus1;
        }else if(gain<=20){
            bonusSum=bonus2;
        }else if(gain<=40){
            bonusSum=bonus3;
        }else if(gain<=60){
            bonusSum=bonus4;
        }else if(gain<=100){
            bonusSum=bonus5;
        }else{
            bonusSum=bonus6;
        }
        System.out.println("奖金为:"+bonusSum*10000);
    }
}

 

一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

 //直接暴力

public class Demo_04 {
    public static void main(String[] args) {
        for (int i=1;i<=100000;i++){
            for (int j=1;j<=100000;j++){
                for (int k=1;k<=100000;k++){
                    if((i+100)==j*j){
                        if((i+268)==k*k){
                            System.out.println("j:"+j+"\t\t"+"k:"+k+"\t\t"+"i:"+i);
                            System.out.println(j+"的平方="+(i+100)+"\t\t"+k+"的平方="+(i+268)+"\t\t"+"该数是:"+i);
                        }
                    }
                }
            }
        }
    }
}

输入某年某月某日,判断这一天是这一年的第几天?

 

public class Demo_05 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int days=0;//总天数
        System.out.println("输入年份");
        int year=sc.nextInt();
        System.out.println("输入月份");
        int month=sc.nextInt();
        System.out.println("输入天数");
        int day=sc.nextInt();
        if((year%400==0)||((year%4==0)&&(year%100!=0))){//润年
            for (int i=1;i<=month;i++){
                if(i==2){//二月
                    days+=29;
                }else if(i==1||i==3||i==5||i==7||i==8
                        ||i==10||i==12
                ){//大月
                    days+=31;
                }else{//小月
                    days+=30;
                }
            }
            if(month==2){
                days+=day-29;//总天数==前面几个月相加+天数-该月的总天数
            }else{
                if(month==1||month==3||month==5||month==7||month==8
                        ||month==10||month==12
                ){
                    days+=day-31;//总天数==前面几个月相加+天数-该月的总天数
                }else{
                    days+=day-30;//总天数==前面几个月相加+天数-该月的总天数
                }
            }
        }else{//平年
            for (int i=1;i<=month;i++){
                if(i==2){
                    days+=28;
                }else if(i==1||i==3||i==5||i==7||i==8
                        ||i==10||i==12
                ){
                    days+=31;
                }else{
                    days+=30;
                }
            }
            if(month==2){
                days+=day-28;
            }else{
                if(month==1||month==3||month==5||month==7||month==8
                        ||month==10||month==12
                ){
                    days+=day-31;
                }else{
                    days+=day-30;
                }

            }
        }
        System.out.println(days);
    }
}

输入三个整数x,y,z,请把这三个数由小到大输出。

public class Demo_06 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入x的值");
        int x=sc.nextInt();
        System.out.println("请输入y的值");
        int y=sc.nextInt();
        System.out.println("请输入z的值");
        int z=sc.nextInt();
        int arr[]={x,y,z};
        //冒泡排序
        for(int i=0;i<arr.length-1;i++){
            for (int j=1;j< arr.length-i;j++){
                if(arr[j-1]>=arr[j]){
                    int temp=arr[j-1];
                    arr[j-1]=arr[j];
                    arr[j]=temp;
                }
            }
        }
        for (int i=0;i<arr.length;i++){
            System.out.print(arr[i]+"\t");
        }
    }
}

 

输出9*9口诀。

 

public class Demo_07 {
    public static void main(String[] args) {
        //控制行数
        for(int i=1;i<=9;i++){
            //控制列数
            for(int j=1;j<=i;j++){
                System.out.print(j+"*"+i+"="+i*j+"     ");
            }
            System.out.println();
        }
    }
}

猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少?

//规律:前一天桃子数=(后一天的桃子数 +1)*2==>f(n)=(f(n+1)+1)*2

//直接递归

public class Demo_08 {
    public static void main(String[] args) {
        for(int i=1;i<=10;i++){
            System.out.println("第"+i+"天桃子的数量为"+f(i));
        }
    }

    private static int f(int n) {
        if(n==10){
            return 1;
        }
        return( f(n+1)+1)*2;
    }
}

两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单

public class Demo_09 {
    public static void main(String[] args) {
        List<String> list1=new ArrayList<>();//用来存放第一个对手的可能性
        List<String> list2=new ArrayList<>();//用来存放第一个对手的可能性
        List<String> list3=new ArrayList<>();//用来存放第一个对手的可能性
        Map<String,String> map=new HashMap<>();//将所有的对手关系存放到map集合
        String arr1[]={"c","a","b"};
        String arr2[]={"z","y","x"};
        for (int i=0;i<arr1.length;i++){
            for (int j=0;j<arr1.length;j++){
                if(arr1[i]=="a"&&arr2[j]!="x"){
                    list1.add(arr2[j]);
                }else if(arr1[i]=="c"&&arr2[j]!="x"&&arr2[j]!="z"){
                    list2.add(arr2[j]);
                }else if(arr1[i]!="c"&&arr1[i]!="a"){
                    list3.add(arr2[j]);
                }
            }
        }

      for (int i=0;i<list2.size();i++){
          if(list1.contains(list2.get(i))){//因为一个对手只能出现一次
              list1.remove(list2.get(i));//所以就去除相同的
          }
          if(list3.contains(list1.get(i))&&list3.contains(list2.get(i))){
              list3.remove(list1.get(i));
              list3.remove(list2.get(i));
          }
      }
      for (int i=0;i<list1.size();i++){//入map集合
          map.put("a",list1.get(i));
          map.put("b",list2.get(i));
          map.put("c",list3.get(i));
      }
        for (Map.Entry<String, String> entry : map.entrySet()) {
            System.out.println(entry.getKey()+" VS "+entry.getValue());
        }
    }
}

打印菱形图案

 

public class Demo_10 {
    public static void main(String[] args) {
            for(int i=0;i<4;i++){//前四行
                for (int j=3-i;j>0;j--){//控制空格数
                    System.out.print(" ");
                }
                for(int k=0;k<=2*i;k++){//每一行输出的个数
                    System.out.print("*");
                }
                System.out.println();
            }
            for (int i=1;i<=3;i++){//后三行
                for(int j=1;j<i+1;j++){//控制空格数
                    System.out.print(" ");
                }
                for(int k=1;k<=7-2*i;k++){//每一行输出的个数
                    System.out.print("*");
                }
                System.out.println();
            }
    }
}

有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。

//规律:第二项的分子==第一项的分子+分母;第二项的分母==第一项的分子

public class Demo_01 {
    public static void main(String[] args) {
        double x=2,y=1;
        double t=0;//中间变量用来存储每一项的分子
        double sum=0;
        for(int i=0;i<20;i++){
            sum+=x/y;
            System.out.println(x+"/"+y);
            t=x;
            x+=y;
            y=t;
        }
        System.out.println();
        //String.format("%.3f",sum):结果保留小数点后三位数字
        /*
                format(String format, Object... args) :使用指定的格式字符串和参数返回格式化的字符串。
         */
        System.out.println("前20项之和为:"+String.format("%.3f",sum));
    }
}

 

求1+2!+3!+…+20!的和

//直接递归

public class Demo_02 {
    public static void main(String[] args) {
        long sum=0;
        for (int i=1;i<21;i++){
            sum+=f(i);
        }
        System.out.println(sum);
    }

    private static long f(int n) {
        if(n==1){
            return n;
        }
        return n*f(n-1);
    }
}

 

利用递归方法求5!

public class Demo_03 {
    public static void main(String[] args) {
        int result=f(5);
        System.out.println(result);
    }

    private static int f(int n) {
        if(n==1){
            return n;
        }
        return n*f(n-1);
    }
}

有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问
第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?

public class Demo_04 {
    public static void main(String[] args) {
        int age=f(5);
        System.out.println("第五个人"+age+"岁");
    }

    private static int f(int n) {
        if(n==1)
            return 10;
        return f(n-1)+2;
    }
}

 

给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

 

public class Demo_05 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入一个小于等于5位的正整数");
        int number=scanner.nextInt();
        int count=1;
        String str=number+"";
        char c[]=str.toCharArray();
        for(int i=c.length-1;i>=0;i--){
            System.out.print(Integer.parseInt(c[i]+"")+"\t");
        }
        while(number/10!=0){
            count++;
            number/=10;
        }
        System.out.println();
        System.out.println("输入的数是"+count+"位数");
    }
}

一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

 

//使用双指针解题
public class Demo_06 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入一个小于等于5位的正整数");
        int number=scanner.nextInt();
        String str=number+"";
        char c[]=str.toCharArray();
        int sc=0;
        int lc=c.length-1;
        while(sc!=lc){
            if(c[sc]==c[lc]){
                sc++;
                lc--;
            }else{
                System.out.println(number+":不是回文数");
                break;
            }
            if(sc==lc){
                System.out.println(number+":是回文数");
            }
        }
    }
}

请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续 判断第二个字母。

 

public class Demo_07 {
    public static void main(String[] args) {
        week();
    }

    private static void week() {
        String week[]={
                "monday",
                "tuesday",
                "wednesday",
                "thursday",
                "friday",
                "saturday",
                "sunday"
        };
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入一个字母");
        String a=scanner.next();
        boolean item=true;
        for (int i=0;i< week.length;i++){
            boolean flag=false;
            for (int j=0;j<2;j++){
                if(a.equals(week[i].charAt(j)+"")){
                    item=false;
                    if(a.equals("t")||a.equals("s")){
                        System.out.println("请输入第二个字母");
                        String b=scanner.next();
                        if(b.equals(week[i].charAt(j+1)+"")){
                            System.out.println(week[i]);
                            flag=!flag;
                            break;
                        }
                    }else{
                        item=false;
                        System.out.println(week[i]);
                    }
                }
            }
            if(flag){
                break;
            }
        }
        if(item){
            System.out.println("您输入的字母有误,请重新输入!");
            week();
        }
    }
}

求100之内的素数

 

public class Demo_08 {
    public static void main(String[] args) {
        for (int i = 2; i <= 100; i++) {
            boolean flag=true;
            for (int j = 2; j <= i/2; j++) {
                if(i%j==0){
                    flag=false;
                    break;
                }
            }
            if(flag){
                System.out.print(i+" ");
            }
        }
    }
}

对10个数进行排序

 

public class Demo_09 {
    public static void main(String[] args) {
        int num[]=new int[10];
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入10个数");
        for (int i=0;i<num.length;i++){
            num[i]=scanner.nextInt();
        }
        for(int i=0;i<num.length-1;i++){
            for (int j=0;j< num.length-i-1;j++){
                if(num[j]>num[j+1]){
                    int temp=num[j];
                    num[j]=num[j+1];
                    num[j+1]=temp;
                }
            }
        }
        for (int i:num) {
            System.out.print(i+"\t");
        }
    }
}

求一个3*3矩阵对角线元素之和

 

public class Demo_10 {
    public static void main(String[] args) {
        int arr[][]=new int[3][3];
        Scanner scanner=new Scanner(System.in);
        int sum=0;
        System.out.println("请填充3*3矩阵");
        for (int i=0;i<arr.length;i++){
            for (int j=0;j<arr[i].length;j++){
                arr[i][j]=scanner.nextInt();
                if(i==j){
                    if(i==1&&j==1){
                        sum+=arr[i][j]*2;
                    }else{
                        sum+=arr[i][j];
                    }
                }else if((i==0&&j==2)||(i==2&&j==0)){
                    sum+=arr[i][j];
                }
            }
        }
        System.out.println(sum);
    }
}

有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

 

public class Demo_01 {
    public static void main(String[] args) {
        int arr[] = {7, 3, 2, 4, 5, 6, 9, 10, 8};
        Arrays.sort(arr);
        List<Integer> list = new ArrayList<>();//用来插入数
        for (int i = 0; i < arr.length; i++) {
            list.add(arr[i]);
        }
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个数");
        int num = scanner.nextInt();
        for (int i = 0; i < arr.length; i++) {
            if (i == 0 && num <= list.get(i)) {//当输入的值比数组中的最小值都小时
                list.add(i, num);
            } else if (i == list.size() - 1 && num >= list.get(i)) {//当输入的值比数组中的最大值都大时
                list.add(list.size(), num);
            } else {
                if (num >= list.get(i) && num <= list.get(i + 1)) {//输入的值在数组之间时
                    list.add(i + 1, num);
                    break;
                }
            }
        }
        for (int i : list) {
            System.out.print(i + "\t");
        }
    }
}

将一个数组逆序输出。

public class Demo_02 {
    public static void main(String[] args) {
        int num[]={1,5,3,65,27,87,90,98};
        for (int i=num.length-1;i>=0;i--){
            System.out.print(num[i]+"\t");
        }
    }
}

取一个整数a从右端开始的4~7位。

 

public class Demo_03 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入一个大于或等于七位的整数");
        int num=scanner.nextInt();
        String str=num+"";
        String str2="";
        for (int i=str.length()-1;i>=0;i--){
            str2+=str.charAt(i);
        }
        String str3 = str2.substring(3, 7);//截取4~7位
        System.out.println(Integer.parseInt(str3));
    }
}

打印出杨辉三角形(要求打印出10行)

 

打印杨辉三角形的规律:arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
public class Demo_04 {
    public static void main(String[] args) {
        int arr[][]=new int[10][10];
        for (int i=0;i<arr.length;i++){
            //重新定义每行的列数
            arr[i]=new int[i+1];
        }
        for(int i=0;i<arr.length;i++){
           arr[i][0]=1;
           arr[i][i]=1;
        }
        for(int i=2;i<arr.length;i++){//从第三行开始
            for(int j=1;j<arr[i].length-1;j++){//从第二列开始,循环的次数要小于该列的列数-1,因为第一列和最后一列都赋值为1了,所以最后一列不用循环赋值
                arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
            }
        }
        for (int i=0;i<arr.length;i++){
            for(int k= arr.length-1-i;k>=0;k--){
                System.out.print(" ");
            }
            for (int j=0;j<arr[i].length;j++){
                System.out.print(arr[i][j]+" ");
            }
            System.out.println();
        }
    }
}

输入3个数a,b,c,按大小顺序输出。

 

public class Demo_05 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入a的值");
        int a=scanner.nextInt();
        System.out.println("请输入b的值");
        int b=scanner.nextInt();
        System.out.println("请输入c的值");
        int c=scanner.nextInt();
        if(a>b){
            int temp=a;
            a=b;
            b=temp;
        }
        if(a>c){
            int temp=a;
            a=c;
            c=temp;
        }
        if(b>c){
            int temp=b;
            b=c;
            c=temp;
        }
        System.out.print(a+" "+b+" "+c);
    }
}

输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组

 

public class Demo_06 {
    public static void main(String[] args) {
        int arr[]=new int[5];
        int max=0;
        Scanner sc=new Scanner(System.in);
        System.out.println("为数组赋值");
        for (int i=0;i<arr.length;i++){
            arr[i]=sc.nextInt();
        }
        int min=arr[0];
        for (int i=0;i<arr.length;i++){
            if(max<=arr[i]){//求最大值
                max=arr[i];
            }
            if(min>=arr[i]){//求最小值
                min=arr[i];
            }
        }
        //交换最大值与第一个元素的位置
        int temp=arr[0];
        arr[0]=max;
        max=temp;
        //交换最小值与最后一个元素的位置
        int item=arr[arr.length-1];
        arr[arr.length-1]=min;
        min=item;
        for (int i:arr) {
            System.out.print(i+"\t");
        }
    }
}

有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数

 

public class Demo_07 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入n的值");
        int n=scanner.nextInt();
        System.out.println("请输入"+n+"个数");
        int arr[]=new int[n];
        int arr2[]=new int[n];
        for (int i=0;i<n;i++){
           arr[i]=scanner.nextInt();
        }
        System.out.println("请输入m的值");
        int m=scanner.nextInt();
        for (int i=0;i<arr.length;i++){
            if(i<m){//将后面的m个数移到前面
                arr2[i]=arr[n+i-m];
            }else{//原数组前面的向后移
                arr2[i]=arr[i-m];
            }
        }
        System.out.println(Arrays.toString(arr2));
    }
}

有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位

 

public class Demo_08 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入n的值");
        int n=scanner.nextInt();
        int arr[]=new int[n];
        int temp=0;//计数 1、2、3
        int sc=arr.length;//剩余的长度
        for (int i=0;i<arr.length;i++){
            arr[i]=i+1;
        }
        while(sc>1){
            for (int i=0;i<arr.length;i++){
                if(arr[i]!=-1){
                    temp++;
                    if(temp==3){
                        temp=0;
                        sc--;
                        arr[i]=-1;
                        //删除完之后,判断还有几个可用的数
                        int behindSize=getBeginIndexBehindSize(arr,i);
                        //如果可用的数在0~3之间,就将i后面的所有数移到数组的最前面,将原数组前面的移到后面去
                        if(behindSize>0&&behindSize<3){
                            moveArrayElement(arr,i);
                            break;
                        }
                    }
                }
            }
        }
        System.out.println(Arrays.toString(arr));
    }

    //重新定义数组中的各个值
    private static void moveArrayElement(int[] arr, int begin) {
        if(begin>(arr.length-1)){
            throw new RuntimeException("begin的索引超出arr的索引范围");
        }
        int a[]=new int[begin+1];//存放原数组下标到begin的元素
        int b[]=new int[arr.length-begin-1];//存放原数组下标begin后面的元素
        for (int i=0;i<arr.length;i++){
            if(i<a.length){
                a[i]=arr[i];
            }else{
                b[i-a.length]=arr[i];
            }
        }
        for (int i=0;i<arr.length;i++){
            if(i<b.length){
                arr[i]=b[i];//将原数组后面的元素移到数组前面
            }else{
                arr[i]=a[i-b.length];//将原数组前面的元素移到数组后面
            }
        }
    }

    //判断有用数据的个数
    private static int getBeginIndexBehindSize(int[] arr, int begin) {
        if(begin>(arr.length-1)){
            throw new RuntimeException("begin的索引超出arr的索引范围");
        }
        int result=0;
        for (int i=begin+1;i<arr.length;i++){
            if(arr[i]!=-1){
                result++;
            }
        }
        return result;
    }
}

写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度

 

public class Demo_09 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入一个字符串");
        String str=scanner.nextLine();
        int result=strLength(str);
        System.out.println(result);
    }

    private static int strLength(String str) {
        char[] chars = str.toCharArray();
        int count=0;
        for (int i=0;i< chars.length;i++){
            count++;
        }
        return count;
    }
}

编写一个函数,输入n为偶数时,调用函数求1/2+1/4+…+1/n,当输入n为奇数时,调用函数1/1+1/3+…+1/n

 

public class Demo_10 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入n的值");
        int n=scanner.nextInt();
        double sum=Sum(n);
        System.out.println("和值为:"+sum);
    }

    private static double Sum(int n) {
        double s=0;
        if(n%2==0){
            for (int i=2;i<=n;i+=2){
                s+=1.0/i;
            }
        }else{
            for (int i=1;i<=n;i+=2){
                s+=1.0/i;
            }
        }
        return s;
    }
}

字符串排序。

 

public class Demo_01 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入一个字符串");
        String str=scanner.nextLine();
        char result[]=strSort(str);
        System.out.println(Arrays.toString(result));
    }

    private static char[] strSort(String str) {
        char[] chars = str.toCharArray();
        for (int i=0;i< chars.length-1;i++){
            for (int j=0;j<chars.length-i-1;j++){
                if(chars[j]>chars[j+1]){
                    char c=chars[j];
                    chars[j]=chars[j+1];
                    chars[j+1]=c;
                }
            }
        }
        return chars;
    }
}

海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?

 //这题有点问题

public class Demo_02 {
    public static void main(String[] args) {
        System.out.println(f(1));
    }

    private static int f(int n) {
        if(n==5){
            return 6;
        }
        return 5*f(n+1)+1;
    }
}

809*??=800*??+9*??+1其中??代表的两位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。

 

public class Demo_03 {
    public static void main(String[] args) {
        for (int i=10;i<100;i++){
            if((8*i<100&&8*i>=10)&&(9*i>=100&&9*i<1000)){
                if(809*i==800*i+9*i+1){
                    System.out.println(i);
                    System.out.println(809*i);
                    break;
                }else {
                    System.out.println("无解");
                }
            }
        }
    }
}

求0—7所能组成的奇数个数。(这题直接暴力解了)

要注意第一位不能为0且一个数只能用一次

public class Demo_04 {
    public static void main(String[] args) {
        int count = 0;
        for (int i = 0; i <= 7; i++) {
            if (i != 0 && i % 2 == 1) {
                count++;
            }
            for (int j = 0; j <= 7; j++) {
                if (i != 0 && i != j && (i * 10 + j) % 2 == 1) {
                    count++;
                }
                for (int k = 0; k <= 7; k++) {
                    if (i != 0 && i != j && j != k && i != k && (i * 100 + j * 10 + k) % 2 == 1) {
                        count++;
                    }
                    for (int l = 0; l <= 7; l++) {
                        if (
                                i != 0 &&
                                        i != j &&
                                        i != k &&
                                        i != l &&
                                        j != k &&
                                        j != l &&
                                        k != l &&
                                        (i * 1000 + j * 100 + k * 10 + l) % 2 == 1
                        ) {
                            count++;
                        }
                        for (int m = 0; m <= 7; m++) {
                            if (
                                    i != 0 &&
                                            i != j &&
                                            i != k &&
                                            i != l &&
                                            i != m &&
                                            j != k &&
                                            j != l &&
                                            j != m &&
                                            k != l &&
                                            k != m &&
                                            l != m &&
                                            (i * 10000 + j * 1000 + k * 100 + l * 10 + m) % 2 == 1
                            ) {
                                count++;
                            }
                            for (int n = 0; n <= 7; n++) {
                                if (
                                        i != 0 &&
                                                i != j &&
                                                i != k &&
                                                i != l &&
                                                i != m &&
                                                i != n &&
                                                j != k &&
                                                j != l &&
                                                j != m &&
                                                j != n &&
                                                k != l &&
                                                k != m &&
                                                k != n &&
                                                l != m &&
                                                l != n &&
                                                m != n &&
                                                (i * 100000 + j * 10000 + k * 1000 + l * 100 + m * 10 + n) % 2 == 1
                                ) {
                                    count++;
                                }
                                for (int o = 0; o <= 7; o++) {
                                    if (
                                            i != 0 &&
                                                    i != j &&
                                                    i != k &&
                                                    i != l &&
                                                    i != m &&
                                                    i != n &&
                                                    i != o &&
                                                    j != k &&
                                                    j != l &&
                                                    j != m &&
                                                    j != n &&
                                                    j != o &&
                                                    k != l &&
                                                    k != m &&
                                                    k != n &&
                                                    k != o &&
                                                    l != m &&
                                                    l != n &&
                                                    l != o &&
                                                    m != n &&
                                                    m != o &&
                                                    n != o &&
                                                    (i * 1000000 + j * 100000 + k * 10000 + l * 1000 + m * 100 + n * 10 + o) % 2 == 1
                                    ) {
                                        count++;
                                    }
                                    for (int p = 0; p <= 7; p++) {
                                        if (
                                                i != 0 &&
                                                        i != j &&
                                                        i != k &&
                                                        i != l &&
                                                        i != m &&
                                                        i != n &&
                                                        i != o &&
                                                        i != p &&
                                                        j != k &&
                                                        j != l &&
                                                        j != m &&
                                                        j != n &&
                                                        j != o &&
                                                        j != p &&
                                                        k != l &&
                                                        k != m &&
                                                        k != n &&
                                                        k != o &&
                                                        k != p &&
                                                        l != m &&
                                                        l != n &&
                                                        l != o &&
                                                        l != p &&
                                                        m != n &&
                                                        m != o &&
                                                        m != p &&
                                                        n != o &&
                                                        n != p &&
                                                        o != p &&
                                                        (i * 10000000 + j * 1000000 + k * 100000 + l * 10000 + m * 1000 + n * 100 + o * 10 + p) % 2 == 1
                                        ) {
                                            count++;
                                        }

                                    }
                                }

                            }
                        }
                    }

                }
            }
        }

        System.out.println("最终结果:" + count);
    }
}

一个偶数总能表示为两个素数之和。

public class Demo_05 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入一个偶数");
        int ou=scanner.nextInt();
        if(ou%2==0){
            for(int i=2;i<ou;i++){
                if(isPrimer(i)){
                    int temp=ou-i;//第二个数
                    if(isPrimer(temp)){
                        System.out.println(ou+"="+i+"+"+temp);
                        break;
                    }
                }
            }
        }else {
            System.out.println("你输入的数不为偶数");
        }
    }

    //判断是否为素数
    private static boolean isPrimer(int i) {
        boolean flag=true;
        for(int j=2;j<i;j++){
            if(i%j==0){
                flag=false;
            }
        }
        return flag;
    }
}

 

判断一个素数能被几个9整除

 

public class Demo_06 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入一个素数");
        int num=scanner.nextInt();
        int count=0;
        int n=9;
        if(isPrimer(num)){
            if(num<n){
                System.out.println("请输入大于9的数");
            }else {
                while(num%n==0){
                    if(num%n==0){
                        count++;
                        n=n*10+9;
                    }else{
                        break;
                    }
                }
                System.out.println("能被"+count+"个9整除");
            }

        }else{
            System.out.println("你输入的不是一个素数");
        }
    }
    //判断是否为素数
    private static boolean isPrimer(int i) {
        boolean flag=true;
        for(int j=2;j<i;j++){
            if(i%j==0){
                flag=false;
            }
        }
        return flag;
    }
}

两个字符串连接程序

 

public class Demo_07 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入两个字符串");
        String s1=scanner.next();
        String s2=scanner.next();
        String str=mergedString(s1,s2);
        System.out.println(str);
    }

    private static String mergedString(String s1, String s2) {
        return s1+s2;
    }
}

读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*。

 

public class Demo_08 {
    public static void main(String[] args) {
        int arr[]=new int[7];
        for (int i=1;i<=7;i++){
            arr[i-1]=(int) (Math.random()*50+1);//随机读取
        }
        for (int i=0;i<arr.length;i++){
            for (int j=0;j<arr[i];j++){
                System.out.print("*"+"\t");
            }
            System.out.println();
        }
    }
}

某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。

 

public class Demo_09 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入四位的整数");
        int num=scanner.nextInt();
        String str=num+"";
        String result="";
        String arr[]=str.split("");
        int number[]=new int[arr.length];
        for (int i=0;i<arr.length;i++){
            arr[i]=(Integer.parseInt(arr[i])+5+"");
        }
        for (int i=0;i< number.length;i++){
            number[i]=Integer.parseInt(arr[i]);
            number[i]%=10;
        }
        int sc=0,lc=number.length-1;
        while(sc<lc){
            int temp=number[sc];
            number[sc]=number[lc];
            number[lc]=temp;
            sc++;
            lc--;
        }
        for (int i=0;i< number.length;i++){
            result+=number[i];
        }
        System.out.println("最终结果为:"+result);
    }
}

计算字符串中子串出现的次数

 

public class Demo_10 {
    public static void main(String[] args) {
        int result= getMarches("abcabcabcabca","ca");
        System.out.println(result);
    }

    private static int getMarches(String s1, String s2) {
        int count=0;
        //s1.length()-s2.length()+1:这行代码表示数组索引最大只能到这,不能在往后取了,因为在往后取,就取不到s2.length()个字符了;也就是说这行代码是边界
        for (int i=0;i<s1.length()-s2.length()+1;i++){
            if(s1.substring(i,i+s2.length()).equals(s2)){
                count++;
            }
        }
        return count;
    }
}

以上题目有问题的话,欢迎指出!!! 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值