zl程序教程

您现在的位置是:首页 >  其他

当前栏目

BannerStudio---BannerStudio20级第一阶段考核

2023-03-14 22:40:36 时间

考核题

第一题

/**
  *中国朋友们聚会时喜欢玩"逢7过"的游戏,老外有个同样的游戏,
  *FlipFlop,它从1计数到100,顺序输出。当遇到3的倍数就要
  *“Flip”,遇到5的倍数就要说“Flop”,既为3的倍数又为5的倍数
  *则要说“FlipFlop”,说错的话表演节目或罚酒。 
  **/
public class Test01 {
public static void main(String[] args) {
    for(int i=1;i<=100;i++) {
        if(i%3==0&&i%5==0) {
            System.out.println(i+":FlipFlop");
        }
        else if(i%3==0) {
            System.out.println(i+":Flip");
        }
        else if(i%5==0) {
            System.out.println(i+":Flop");
        }
    }
}
}

第二题

/**
  *在数学上有一个著名的斐波那契数列,它的规律为:
  *1,1,2,3,5,8,13,21……,请编程输出其前20个数字。
  */
  public class Test02 {
public static void main(String[] args) {
    int a=0,b=1;
    System.out.print(a+"  "+b+"  ");
    for(int i=0;i<9;i++) {
        a+=b;
        b+=a;
        System.out.print(a+"  "+b+"  ");
    }
}
}

第三题

/**
  *有两个已经排好序的数组,A:{9,28,38,40,56,65,78,82} 
  * B:{13,21,33,38,45},请定义一个新数组,将这两个数组中的数
  * 据合并到新数组中并且保证数据仍然是有序的。
  */
  public class Test03 {
public static void main(String[] args) {
    int[] A= {9,28,38,40,56,65,78,82};
    int[] B= {13,21,33,38,45};
    int[] C=new int [A.length+B.length];
    int a=0,b=0;
    for(int i=0;i<A.length+B.length;i++) {
        if(b<=B.length-1) {
        if(A[a]>B[b]) {
            C[i]=B[b];
            b++;
        }
        else {
            C[i]=A[a];
            a++;
        }
    }
        else {
            C[i]=A[a];
            a++;
        }
    }
    for(int D:C) {
        System.out.print(D+"  ");
    }
}
}

第四题

/**
  *输入一行字符,分别统计出其中英文字母、空格、
  *数字和其它字符的个数。
  */
  import java.util.Scanner;
public class Test04 {
public static void main(String[] args) {
    Scanner sc=new Scanner(System.in);
    String a=sc.nextLine();
    char[] b=a.toCharArray();
    int zm=0,sz=0,kg=0,ot=0;
    for(int i=0;i<b.length;i++) {
        if((b[i]>='a'&&b[i]<='z')||(b[i]>='A'&&b[i]<='Z')) {
            zm++;
        }
        else if(b[i]>='0'&&b[i]<='9') {
            sz++;
        }
        else if(b[i]==' ') {
            kg++;
        }
        else {
            ot++;
        }
    }
    System.out.print("字母有:"+zm+"
数字有:"+sz+"
空格有:"+kg+"
其他符号有:"+ot);
}
}

第五题

/**
  *输出矩形、空心矩形、等腰三角形、菱形
  *例如这样的等腰三角形与菱形
  *等腰梯形和菱形用数字构成,且每入一行就多加一;
  *矩形用'*'来构成
  */
import java.util.Scanner;
public class Test05 {
public static void main(String[] args) {
    for(int i=1;i<=5;i++) {
        for(int j=1;j<=10;j++) {
            System.out.print("*");
    }
        System.out.println();
    }
    System.out.println("--------------------");
    for(int i=1;i<=5;i++) {
        for(int j=1;j<=10;j++) {
            if((i==1)||(i==5)) {
            System.out.print("*");
            }
            else {
                if(j==1||j==10) {
                    System.out.print("*");
                }
                else {
                    System.out.print(" ");
                }
            }
        }
        System.out.println();
    }
    System.out.println("--------------------");
    System.out.println("请定义三角形的边长");
    Scanner sc=new Scanner(System.in);
    int side=sc.nextInt();
    int change=1;
    for(int i=1;i<=side;i++) {
        for(int j=side-i;j>0;j--) {
            System.out.print(" ");
        }
        for(int p=1;p<=2*i-1;p++) {
        if(p==1) {
            System.out.print(change);
        }
            else if(p<=i){
                change++;
                System.out.print(change);
        }
            else {
                change--;
                System.out.print(change);
            }
        }
        System.out.println();
}
    System.out.println("--------------------");
    System.out.println("请定义菱形的边长");
     side=sc.nextInt();
     change=1;
    for(int i=1;i<=side;i++) {
        for(int j=side-i;j>0;j--) {
            System.out.print(" ");
        }
        for(int p=1;p<=2*i-1;p++) {
        if(p==1) {
            System.out.print(change);
        }
            else if(p<=i){
                change++;
                System.out.print(change);
        }
            else {
                change--;
                System.out.print(change);
            }
        }
        System.out.println();
}
    for(int i=side;i>=1;i--) {
        for(int j=side-i;j>0;j--) {
            System.out.print(" ");
        }
        for(int p=1;p<=2*i-1;p++) {
            if(p==1) {
                System.out.print(change);
            }
            else if(p<=i){
                change++;
                System.out.print(change);
        }
            else {
                change--;
                System.out.print(change);
            }
        }
        System.out.println();
}
}
}

第六题

/**小蓝给学生们组织了一场考试,卷面总分为100分,
  *每个学生的得分都是一个0到100的整数。
  *请计算这次考试的最高分,最低分和平均分。
  *[输入格式]输入的第一行包含一个整数n,表示考试人数。
  *接下来n 行, 每行包含一个0至100的整数,表示一个学生的得分。
  *[输出格式]输出三行。第一行包含一个整数, 表示最高分。
  *第二行包合一个整数, 表示最低分。
  *第三行包含一个实数,四舍五入保留正好两位小数,表示平均分。
  *[样例输入]
  *7
  *80
  *92
  *56
  *74
  *88
  *99
  *10
  *[样例输出]
  *99
  *10
  *71.29
  */
import java.util.Scanner;
public class Test06 {
public static void main(String[] args) {
    System.out.println("输入班里人数:");
    Scanner sc=new Scanner(System.in);
    int num=sc.nextInt();
    System.out.println("输入每一个同学的成绩:");
    int[] a=new int[num];
    for(int i=0;i<num;i++) {
        a[i]=sc.nextInt();
    }
        int temp=0;
        for(int j=0;j<num;j++) {
            if(a[j]>a[temp]) {
                temp=j;
            }
    }
        System.out.println("最高分为:"+a[temp]);
        int temp1=0;
        for(int j=0;j<num;j++) {
            if(a[j]<a[temp1]) {
                temp1=j;
            }
    }
        System.out.println("最低分为:"+a[temp1]);
        double pj=0;
        for(int i=0;i<num;i++) {
            pj+=a[i];
        }
        System.out.println("平均分为:"+String.format("%.2f",pj/num));
}
}

缓考题

第一题

/**
  *从1累加到100,但如果要累加的数据能被3整除,
  *并且也能被7整数,那么就不要累加这个数。
  *最后输出结果。
  */
public class Test07 {
public static void main(String[] args) {
    int a=0;
    for(int i=1;i<=100;i++) {
        if(i%3==0&&i%7==0) {
            continue;
        }
        a+=i;
    }
    System.out.println(a);
}
}

第二题

/**
  *求1+2!+3!+...+20!的和
  */
public class Test08 {
public static void main(String[] args) {
    long a=1,sum=0;
    for(int i=1;i<=20;i++) {
        a*=i;
        sum+=a;
    }
    System.out.println(sum);
}
}

第三题

/**
  *计算1/2+2/3+3/4+.....+19/20的和
  */
public class Test09 {
public static void main(String[] args) {
    float sum=0;
    for(float i=1;i<20;i++) {
        sum+=i/(i+1);
    }
    System.out.println(sum);
}
}

第四题

/**
  *有一个已经排好序的数组[1,3,5,9,11,13]。现输入一个数7,
  *要求按原来的规律将它插入数组中
  */
public class Test10 {
public static void main(String[] args) {
    int[] A= {1,3,5,9,11,13};
    int[] B=new int[A.length+1];
    for(int i=0;i<A.length;i++) {
        B[i]=A[i];
    }
    B[A.length]=7;
    for(int i=0;i<B.length;i++) {
        for(int j=0;j<B.length-1;j++) {
            if(B[j]>B[j+1]) {
                int temp=B[j];
                B[j]=B[j+1];
                B[j+1]=temp;
            }
        }
    }
    for(int C:B) {
        System.out.print(C+"  ");
    }
}
}

第五题

/**
  *小蓝要为一条街的住户制作门牌号。
  *这条街一共有 2020 位住户,门牌号从 1 到 2020 编号。
  *小蓝制作门牌的方法是先制作 0 到 9 这几个数字字符,
  *最后根据需要将字符粘贴到门牌上,
  *例如门牌 1017 需要依次粘贴字 符 1、 0、 1、 7,即需要 1 个字符 0, 2 个字符 1, 1 个字符 7。
  *请问要制作所有的 1 到 2020 号门牌,总共需要多少个字符 2?
  *打印输出
  */
  public class Test11 {
public static void main(String[] args) {
    int sum=0;
    for(int i=1;i<=2020;i++) {
        int a=i;
        do {
            if(a%10==2) {
                sum++;
            }
        }while((a/=10)>0);
    }
    System.out.print(sum);
}
}

第六题

/**
  *输入一个字符串,输出这个字母和它出现的次数。
  */
import java.util.Scanner;
public class Test12 {
public static void main(String[] args) {
    int max=0;
    Scanner sc=new Scanner(System.in);
    String s=sc.nextLine();
    int[] count=new int[127];
    for(int i=0;i<s.length();i++) {
        char  c=s.charAt(i);
        max=(++count[c]>max)?count[c] :max ;
    }
    System.out.println(max);
}
}

心得体会:

1.学的太浅,当遇到问题时脑海中不能找到相对应的方法去运行。

2.学的太少,在本次考核中有好多没见过的方法,这表明自己还是见到的题少,做的题也少。