zoukankan      html  css  js  c++  java
  • 蓝桥杯基础练习解题集

    蓝桥杯基础题题目列表

    BASIC-13 数列排序

    #include<iostream>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    const int maxn=1e5;
    int a[maxn];
    
    int main()
    {
        int n;
        //int  
        cin>>n;
        for(int i=0;i<n;i++)
            cin>>a[i];
        sort(a,a+n);
        for(int i=0;i<n;i++)
            cout<<a[i]<<" ";
        cout<<endl;
        return 0;
    }

    BASIC-12 十六进制转八进制
    思路:
    先将十六进制转化为4位一组二进制;然后将二进制3位一组转化为8进制;

    #include<iostream>
    #include<cmath>
    #include<string>
    using namespace std;
    int main()
    {
        int n;
        cin>>n;
        while(n--)
        {
            string s1,s2;
            cin>>s1;
            s2="";
            for(int i=0;i<s1.length();i++)
            {
                switch(s1[i])
                {
                    case '0':s2+="0000";break;
                    case '1':s2+="0001";break;
                    case '2':s2+="0010";break;
                    case '3':s2+="0011";break;
                    case '4':s2+="0100";break;
                    case '5':s2+="0101";break;
                    case '6':s2+="0110";break;
                    case '7':s2+="0111";break;
                    case '8':s2+="1000";break;
                    case '9':s2+="1001";break;
                    case 'A':s2+="1010";break;
                    case 'B':s2+="1011";break;
                    case 'C':s2+="1100";break;
                    case 'D':s2+="1101";break;
                    case 'E':s2+="1110";break;
                    case 'F':s2+="1111";break;
                    default:break;
                }
            }
            int len=s2.length();
            if(len%3==1)
                s2="00"+s2;
            if(len%3==2)
                s2="0"+s2;
            int num=0;
            int flag=0;
            for(int j=0;j<s2.length();j+=3)
            {
                num=4*(s2[j]-'0')+2*(s2[j+1]-'0')+(s2[j+2]-'0');
                if(num)
                    flag=1;
                if(flag)
                    cout<<num;
            }
            cout<<endl;
        }
        return 0;
    }

    java版
    这道题的限制比较多,因为最开始说的是十六进制数的长度不超过100000,而long类型才十九位,肯定不能用系统自带的进制转换方法,需要自己写

    import java.util.*;
    public class Main{
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int n = sc.nextInt();
            String[] sts = new String[n];
            for(int i=0;i<n;i++){
                sts[i] = sc.next();
            }
            sc.close();
            for(int i=0;i<n;i++){
                String strBinary = toBinary(sts[i]);
                int len_strBin = strBinary.length();
                if(len_strBin%3==1) strBinary = "00"+strBinary;
                if(len_strBin%3==2) strBinary = "0"+strBinary;
                String strOctal = toOctal(strBinary);
                System.out.println(strOctal);
            }
        }
        private static String toOctal(String strBinary) {
            int len = strBinary.length();
            int k;
            StringBuffer stb = new StringBuffer();
            if(strBinary.substring(0, 3).equals("000"))
                k=3;
            else
                k=0;
            for(int i=k;i<len-2;i+=3){
                switch (strBinary.substring(i, i+3)) {
                    case "000":stb.append("0");break;
                    case "001":stb.append("1");break;
                    case "010":stb.append("2");break;
                    case "011":stb.append("3");break;
                    case "100":stb.append("4");break;
                    case "101":stb.append("5");break;
                    case "110":stb.append("6");break;
                    case "111":stb.append("7");break;
                    default:break;
                }
            }
            return stb.toString();
        }
        private static String toBinary(String strHex) {
            int len_str = strHex.length();
            StringBuffer stb = new StringBuffer();
            for(int i=0;i<len_str;i++){
                switch (strHex.charAt(i)) {
                    case '0':stb.append("0000");break;
                    case '1':stb.append("0001");break;
                    case '2':stb.append("0010");break;
                    case '3':stb.append("0011");break;
                    case '4':stb.append("0100");break;
                    case '5':stb.append("0101");break;
                    case '6':stb.append("0110");break;
                    case '7':stb.append("0111");break;
                    case '8':stb.append("1000");break;
                    case '9':stb.append("1001");break;
                    case 'A':stb.append("1010");break;
                    case 'B':stb.append("1011");break;
                    case 'C':stb.append("1100");break;
                    case 'D':stb.append("1101");break;
                    case 'E':stb.append("1110");break;
                    case 'F':stb.append("1111");break;
                    default:break;
                }
            }
            return stb.toString();
        }
    }

    BASIC-11 十六进制转十进制

    
    
    #include<iostream>
    #include<cmath>
    #include<string>
    #include<math.h>
    using namespace std;
    int main()
    {
        int n;
            string s1,s2;
            cin>>s1;
            s2="";
            for(int i=0;i<s1.length();i++)
            {
                switch(s1[i])
                {
                    case '0':s2+="0000";break;
                    case '1':s2+="0001";break;
                    case '2':s2+="0010";break;
                    case '3':s2+="0011";break;
                    case '4':s2+="0100";break;
                    case '5':s2+="0101";break;
                    case '6':s2+="0110";break;
                    case '7':s2+="0111";break;
                    case '8':s2+="1000";break;
                    case '9':s2+="1001";break;
                    case 'A':s2+="1010";break;
                    case 'B':s2+="1011";break;
                    case 'C':s2+="1100";break;
                    case 'D':s2+="1101";break;
                    case 'E':s2+="1110";break;
                    case 'F':s2+="1111";break;
                    default:break;
                }
            }
            int len=s2.length();
            if(len%3==1)
                s2="00"+s2;
            if(len%3==2)
                s2="0"+s2;
            long long num=0;
            for(int j=0;j<s2.length();j++)
            {
                double tmp=s2.length()-j-1;
                num=num+pow(2,tmp)*(s2[j]-'0');
            }
            cout<<num<<endl;
        return 0;
    }

    java版

    import java.util.Scanner;
    public class Main{
        public static void main(String[]args){
            Scanner sc=new Scanner(System.in);
            while(sc.hasNext()){
                String hex=sc.nextLine();
                System.out.println(Long.parseLong(hex,16));
            }
        }
    
    }
    

    BASIC-10 十进制转十六进制

    //package com.bryce1010.demo;
    
    
    import java.util.Scanner;
    import java.math.*;
    import java.text.*;
    
    public class Main {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Scanner in=new Scanner(System.in);
            Integer n=in.nextInt();
            in.close();
            System.out.println(Integer.toHexString(n).toUpperCase());
        }
    
    }
    

    BASIC-9 特殊回文数

    #include<iostream>
    using namespace std;
    int main()
    {
        int n;
        cin>>n;
        int n1=10001;
        while(n1<100000)
        {
            int a,b,c,d,e;
            a=n1/10000;
            b=n1%10000/1000;
            c=n1%1000/100;
            d=n1%100/10;
            e=n1%10;
            if(a+b+c+d+e==n&&a==e&&b==d)
                cout<<n1<<endl;
                n1++;
        }
        int n2=100001;
        while(n2<1000000)
        {
            int a,b,c,d,e,f;
            a=n2/100000;
            b=n2%100000/10000;
            c=n2%10000/1000;
            d=n2%1000/100;
            e=n2%100/10;
            f=n2%10;
            if(a+b+c+d+e+f==n&&a==f&&b==e&&c==d)
                cout<<n2<<endl;
                n2++;
        }
        return 0;
    }
    

    BASIC-8 回文数

    #include<iostream>
    using namespace std;
    int main()
    {
        int n=1001;
        while(n<10000)
        {
            int a,b,c,d;
            a=n/1000;
            b=n%1000/100;
            c=n%100/10;
            d=n%10;
            if(a==d&&b==c)
                cout<<n<<endl;
            n++;
        }
        return 0;
    }
    

    BASIC-7 特殊的数字

    #include<iostream>
    using namespace std;
    int main()
    {
        int n=101;
        while(n<1000)
        {
            int a,b,c;
            a=n/100;
            b=n%100/10;
            c=n%10;
            if(a*a*a+b*b*b+c*c*c==n)
                cout<<n<<endl;
            n++;
        }
        return 0;
    }
    

    BASIC-6 杨辉三角形

    #include<iostream>
    
    using namespace std;
    
    int trangle[50][50];
    int main()
    {
        int n;
        cin>>n;
        trangle[1][1]=1;
        trangle[2][1]=1;trangle[2][2]=1;
        if(n==1)
            cout<<trangle[1][1]<<endl;
        else if(n==2)
            {
                cout<<trangle[1][1]<<endl;
                cout<<trangle[2][1]<<" "<<trangle[2][2]<<endl;
            }
        else
        {
            cout<<trangle[1][1]<<endl;
            cout<<trangle[2][1]<<" "<<trangle[2][2]<<endl;
            for(int i=3;i<=n;i++)
            {
                for(int j=1;j<=i;j++)
                {
                    trangle[i][j]=trangle[i-1][j-1]+trangle[i-1][j];
                    cout<<trangle[i][j]<<" ";
                }
                cout<<endl;
            }
        }
        return 0;
    }
    

    BASIC-5 查找整数

    #include<iostream>
    
    using namespace std;
    
    int num[1005];
    int main()
    {
        int n;
        cin>>n;
        for(int i=0;i<n;i++)
        {
            cin>>num[i];
        }
        int findnum;
        cin>>findnum;
        int flag=0;
        for(int i=0;i<n;i++)
        {
            if(num[i]==findnum)
                {
                    cout<<(i+1)<<endl;
                    flag=1;
                    break;
                }
        }
        if(flag==0)
            cout<<-1<<endl;
        return 0;
    
    }
    

    BASIC-4 数列特征

    #include<iostream>
    
    using namespace std;
    
    int num[10005];
    int main()
    {
        int n;
        cin>>n;
        int maxnum=-10001,minnum=10001,sum=0;
        for(int i=0;i<n;i++)
        {
            cin>>num[i];
            sum+=num[i];
            maxnum=max(maxnum,num[i]);
            minnum=min(minnum,num[i]);
        }
        cout<<maxnum<<endl;
        cout<<minnum<<endl;
        cout<<sum<<endl;
        return 0;
    
    }
    

    BASIC-3 字母图形
    思路:会发现每个字母跟它的位置的横纵坐标的绝对值有关系。

    #include<iostream>
    #include<math.h>
    using namespace std;
    
    int main()
    {
        int n,m;
        char ch;
        cin>>n>>m;
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
            {
                ch=char(65+abs(j-i));
                cout<<ch;
            }
            cout<<endl;
        }
        return 0;
    }
    

    BASIC-2 01字串

    #include<iostream>
    #include<math.h>
    using namespace std;
    
    int main()
    {
        for(int i=0;i<=1;i++)
        {
            for(int j=0;j<=1;j++)
            {
                for(int k=0;k<=1;k++)
                {
                    for(int h=0;h<=1;h++)
                    {
                        for(int m=0;m<=1;m++)
                        {
                            cout<<i<<j<<k<<h<<m;
                            cout<<endl;
                        }
                    }
                }
            }
        }
        return 0;
    }
    

    BASIC-1 闰年判断

    #include<iostream>
    #include<math.h>
    using namespace std;
    
    int main()
    {
        int n;
        cin>>n;
        int flag=0;
        if(n%4==0&&n%100!=0)
        {
            cout<<"yes"<<endl;
            flag=1;
        }
        else if(n%400==0&&flag==0)
            cout<<"yes"<<endl;
        else cout<<"no"<<endl;
        return 0;
    }
    
  • 相关阅读:
    js中变量声明提前
    冒泡与捕获
    win7安装不了nodejs及解决方法
    nodejs配置app的服务
    Ming Rpc
    test
    Java8 Lambda sample (iwantmoon.com出品)
    Spring Mvc 输出Json(iwantmoon.com出品)
    单点登录(iwantmoon.com出品)
    虚拟机WIN10发布.NetCore 3.1
  • 原文地址:https://www.cnblogs.com/bryce1010/p/9387002.html
Copyright © 2011-2022 走看看