考核题
第一题
/** *中国朋友们聚会时喜欢玩"逢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+"\n数字有:"+sz+"\n空格有:"+kg+"\n其他符号有:"+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.学的太少,在本次考核中有好多没见过的方法,这表明自己还是见到的题少,做的题也少。