zoukankan      html  css  js  c++  java
  • 蓝桥杯-练习题(1008-1016)

    1008.数组元素调整

    一、题干

    Description
    给定一个存放整数的数组,元素个数视输入情况而定,将数组中最小的元素与首元素交换,最大的元素与尾元素交换。
    Input
    输入由多组测试数据组成。第一行输入一个整数t,表示测试数据的组数。
    每组测试数据即为一个数组,输入数组元素的格式为:“数1 数2 … 数n”,“数”与“数”之间以空格隔开。
    Output
    输出有t行,每行依次对应一个数组的输出。
    Sample Input
    3
    8 21 1 3 9 15 6
    78 25 485 12 37
    100 41 68 90 -67 248 987 235 185
    Sample Output
    1 6 8 3 9 15 21 
    12 25 37 78 485 
    -67 41 68 90 100 248 185 235 987 
    View Code

    二、代码

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.Scanner;
    
    
    public class T8 {
    
        /**
         * 接收输入的,然后排序(从小到大),得到最大数和最小数的值,
         * 然后跟原数组交换
         */
        public static void main(String[] args) throws IOException {
            Scanner s=new Scanner(System.in);
    
            int conut=Integer.parseInt(s.nextLine());
            
            String[] arrStrings=new String[conut];
            
            for (int i = 0; i < arrStrings.length; i++) {
                
                arrStrings[i]=s.nextLine();
                
            }
            
            for (int i = 0; i < arrStrings.length; i++) {
                
                getpaixu(arrStrings[i]);
                
            }
        }
        private static void getpaixu(String str) {
    
            String[] sarr=str.split(" ");
            
            
            int[] arry=new int[sarr.length];
            int[] ret=new int[sarr.length];
            
            for(int i=0;i<sarr.length;i++){
                ret[i]=arry[i]= Integer.parseInt(sarr[i]);
            }
            int[] arryPaixu=arry;
            //给排序
            for(int j=0;j<arryPaixu.length;j++){
                for(int k=0;k<arryPaixu.length;k++){
                    if(arryPaixu[j]<arryPaixu[k]){
                        int tmp=arryPaixu[j];
                        arryPaixu[j]=arryPaixu[k];
                        arryPaixu[k]=tmp;
                    }
                }
            }
            
            //把最大值,
            for(int co=0;co<ret.length;co++){
                if(arryPaixu[0]==ret[co]){
                    int tmp=ret[0];
                    ret[0]=ret[co];
                    ret[co]=tmp;
                }
                if(arryPaixu[arryPaixu.length-1]==ret[co]){
                    int tmp=ret[ret.length-1];
                    ret[arryPaixu.length-1]=ret[co];
                    ret[co]=tmp;
                }
            }
            
            for(int co=0;co<ret.length;co++){
                System.out.print(ret[co]+" ");
            }
            System.out.println();
        }
    }
    View Code

    1009.谁在说谎

    一、题干

     Description
    张三说李四在说谎,李四说王五在说谎,王五说张三和李四在说谎,请问:这三人中到底谁说的是真话,谁说的是假话?
    Input
    无输入
    Output
    按“XX said is true/false”格式输出结果,每一个的输出占一行。(样例输出只是格式提示)
    Sample Input
    无输入
    Sample Output
    ZhangSan said is true
    LiSi said is true
    View Code

    二、代码

    public class T9 {
        public static void main(String[] args) {
            
            for(int A=0;A<2;A++){
                for(int B=0;B<2;B++){
                    for(int C=0;C<2;C++){
                        if(((A==0&&B==1)||(A==1&&B==0))&&((B==0&&C==1)||(B==1&&C==0))&&((C==0&&A+B==2)||(C==1&&(A+B)!=2))){
                            System.out.println("ZhangSan said is "+(A==0?true:false));
                            System.out.println("LiSi said is "+(B==0?true:false));
                            System.out.println("WangWu said is "+(C==0?true:false));
                        }
                    }
                }
            }
        }
    }
    View Code

    1010.兔子产仔

    一、题干

    Description
    一般而言,兔子在出生2个月后就有繁殖能力,一对兔子每个月能生出一对小兔子来,如果所有兔子都不死,那么经过n个月总共有多少对兔子?
    Input
    输入由多组测试数据组成。第一行输入一个整数t,表示测试数据的组数。
    接下来的t行,每行输入一个月份n。
    Output
    输出有t行,每行依次对应一个月份n的输出结果:经过n个月,每个月有多少对兔子。
    Sample Input
    3
    5
    10
    13
    Sample Output
    1 1 2 3 5 
    1 1 2 3 5 8 13 21 34 55 
    1 1 2 3 5 8 13 21 34 55 89 144 233
    View Code

    二、代码

    import java.util.Scanner;
    
    
    public class T10 {
    
        /**
         * 一般而言,兔子在出生2个月后就有繁殖能力,一对兔子每个月能生出一对小兔子来,
         * 如果所有兔子都不死,那么经过n个月总共有多少对兔子?
         */
        public static void main(String[] args) {
    
            Scanner scanner=new Scanner(System.in);
            int n=scanner.nextInt();
            
            int[] arr=new int[n];
            for (int i = 0; i < arr.length; i++) {
                arr[i]=scanner.nextInt();
                
            }
            
            for (int j = 0; j < arr.length; j++) {
    
                for (int i = 1; i <= arr[j]; i++) {
                    System.out.print(getMoney(i)+" ");
                }
                System.out.println();
            }
    
    
        }
        //递归方法
        public static int getMoney(int n){
            if(n==1||n==2)
                return 1;
            else {
                return getMoney(n-1)+getMoney(n-2);
            }
        }
    }
    View Code

    1011.回文数

    一、题干

    Description
    一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
    Input
    输入任意五位数
    Output
    如果是回文数则输出“true”
    如果不是回文数则输出“false”
    Sample Input
    12321
    Sample Output
    true
    View Code

    二、代码

    import java.util.Scanner;
    
    
    public class T11 {
    
        /**
         * 一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
         */
        public static void main(String[] args) {
            Scanner scanner=new Scanner(System.in);
            
            int n=scanner.nextInt();
            
            if (n<10000||n>=100000) {
                System.out.println("这不是一个五位数");
                return;
            }
            
            if (n%10==n/10000) {
                if (n/10%10==n/1000%10) {
                    System.out.println("true");
                }else{
                    System.out.println("false");
                }
            }else{
                System.out.println("false");
            }
    
        }
    
    }
    View Code

    1012.字符串连接

    一、题干

    Description
    两个字符串连接
    Input
    输入任意两个字符串
    Output
    输出两个字符串连接后的字符串
    Sample Input
    adc
    ert
    Sample Output
    adcert
    View Code

    二、代码

    import java.util.Scanner;
    
    
    public class T12 {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            
            Scanner scanner=new Scanner(System.in);
            String s1=scanner.next();
            String s2=scanner.next();
            
            //concat字符串连接
            String string=s1.concat(s2);
            
            System.out.println(string);
        }
    
    }
    View Code

    1013.求和

    一、题干

    Description
    输出1+2!+3!+...+20!的和
    Input
    无输入
    Output
    计算结果。(样例输出仅仅是格式提示)
    Sample Input
    无输入
    Sample Output
    123456789
    View Code

    二、代码

    import java.math.BigInteger;
    
    
    public class T13 {
    
        /**
         * 输出1+2!+3!+...+20!的和
         */
        public static void main(String[] args) {
            
            BigInteger sum=BigInteger.valueOf(0);
            for (int i = 1; i <= 20; i++) {
                sum=sum.add(getNum(i));
            }
            
            System.out.println(sum);
        }
        //递归求阶乘
        public static BigInteger getNum(int n){
            if (n==1) {
                return BigInteger.valueOf(1);
            }else if (n==2) {
                return BigInteger.valueOf(2);
            }else{
                return getNum(n-1).multiply(BigInteger.valueOf(n));
            }
        }
    }
    View Code

    1014.统计字符个数

    一、题干

    Description
    输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
    Input
    输入任意字符
    Output
    统计出其中英文字母、空格、数字和其它字符的个数,并依次输出。
    Sample Input
    sddf 123 !!!
    Sample Output
    4
    3
    2
    3
    View Code

    二、代码

    import java.util.Scanner;
    
    
    public class T14 {
    
        /**
         * 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
         */
        public static void main(String[] args) {
            
            Scanner scanner=new Scanner(System.in);
            
            int yinwen=0,kongge=0,shuzi=0,qita=0;
            
            String string=scanner.nextLine();
            
            kongge=string.length();
    
            kongge-=string.length();
            
            for (int i = 0; i < string.length(); i++) {
                char a=string.charAt(i);
                if ((a>='a'&&a<='z')||(a>='A'&&a<='Z')) {
                    yinwen++;
                }else if (a-48>=0&&a-48<=9) {
                    shuzi++;
                }else if (a==32) {
                    kongge++;
                }else{
                    qita++;
                }
            }
            
            System.out.println(yinwen);
            System.out.println(shuzi);
            System.out.println(kongge);
            System.out.println(qita);
        }
    
    }
    View Code

    1015.最大公约数最小公倍数

    一、题干

    Description
    输入两个正整数m和n,求其最大公约数和最小公倍数。
    Input
    输入任意两个正整数
    Output
    输出两行,分别是输入两个数的最小公约数和最大公倍数
    Sample Input
    10
    8
    Sample Output
    2
    40
    View Code

    二、代码

    import java.util.Scanner;
    
    
    public class T15 {
    
        /**
         * 输入两个正整数m和n,求其最大公约数和最小公倍数。
         */
        public static void main(String[] args) {
    
            Scanner scanner=new Scanner(System.in);
            
            int a=scanner.nextInt();
            int b=scanner.nextInt();
            
            System.out.println(geiMin(a,b));
            System.out.println(geiMax(a,b));
        }
        //最大公约数
        public static int geiMin(int a,int b) {
            
            for (int i = a<b?a:b; i > 1; i--) {
                if (a%i==0&&b%i==0) {
                    return i;
                }
            }
            return 1;
        }
        
        //最小公倍数
        public static int geiMax(int a,int b) {
            int ret=0;
            for (int i = 1; ; i++) {
                if (a*i%b==0) {
                    ret = a*i;
                    break;
                }
            }
            return ret;
        }
    }
    View Code

     

  • 相关阅读:
    2017-2018-2 20179223《网络攻防技术》第七周作业
    2017-2018-2 20179223《网络攻防技术》第六周作业
    2017-2018-2 20179223《网络攻防技术》第五周作业
    2017-2018-2 20179223《密码与安全新技术》第二周作业
    2017-2018-2 20179223《网络攻防技术》第四周作业
    2017-2018-2 20179223《密码与安全新技术》第一周作业
    2017-2018-2 20179223《网络攻防技术》第三周作业
    2018-2018-2 《网络攻防》第二周作业
    51nod1270 数组的最大代价(简单dp)
    51nod1269 B君的圆锥
  • 原文地址:https://www.cnblogs.com/gx-143/p/6040377.html
Copyright © 2011-2022 走看看