编程题
第1题
模拟大乐透号码:
一组大乐透号码由10个1-99之间的数字组成打印大乐透号码信息代码实现,效果如图所示:
代码实现:
import java.util.Random; public class Test01 { public static void main(String[] args) { System.out.println("您的大乐透号码为:"); //声明并创建数组 int[] array = new int[10]; Random random = new Random(); for(int i = 0; i < array.length; i++){ array[i] = random.nextInt(99)+1; } for(int i = 0;i < array.length; i++){ System.out.print(array[i]+" "); } } }
第2题
打印扑克牌
代码实现,效果如图所示:
代码实现:
public class Test02 { public static void main(String[] args) { //花色 String[] strFlower = {"黑桃","红桃","梅花","方片"}; //点数 String[] strNumber = {"A","1","2","3","4","5","6","7","8" ,"9","10","J","Q","K"}; for(int i=0; i
第3题
模拟在一副牌中,抽取第1张,第5张,第50张扑克牌。
代码实现,效果如图所示:
代码实现:
public class Test03 { public static void main(String[] args) { //花色 String[] strFlower = {"黑桃","红桃","梅花","方片"}; //点数 String[] strNumber = {"A","2","3","4","5","6","7","8" ,"9","10","J","Q","K"}; //整合 String[] strPu = new String[strFlower.length*strNumber.length]; for(int i=0,k=0; i
第4题
统计字符
字符数组:{'a','l','f','m','f','o','b','b','s','n'}
统计每个字符出现的次数并打印到控制台。
代码实现,部分效果如图所示:
代码实现:
public class Test04 { public static void main(String[] args) { char[] ch = {'a','l','f','m','f','o','b','b','s','n'}; int[] count = new int[26]; //遍历将计算每个字母出现的次数 for(int i = 0; i < ch.length; i++){ count[ch[i]-97]++; } //遍历count数组显示结果 for(int i = 0; i < count.length; i++){ if(count[i] != 0){ System.out.println((char)(i+97)+"--"+count[i]); } } } }
第5题
统计高于平均分的分数有多少个。
定义数组[95, 92, 75, 56, 98, 71, 80, 58, 91, 91]。
代码实现,效果如图所示:
代码实现:
public class Test05 { public static void main(String[] args) { int[] arr = {95,92,75,56,98,71,80,58,91,91}; //总分,平均分 int acount = 0, avge = 0; //比平均分高的个数 int count = 0; for(int i = 0; i < arr.length; i++){ acount += arr[i]; } avge = acount / arr.length; for(int i = 0; i < arr.length; i++){ if(arr[i] > avge){ count++; } } System.out.println("高于平均分:" + avge + "的个数有"+count+"个"); } }
第6题
判断数组中的元素值是否对称.
代码实现,效果如图所示:
代码实现:
public class Test06 { public static void main(String[] args) { int[] arr = {1,2,3,5,4,3,2,1}; int len = arr.length - 1; //假设对称 boolean flag = true; //遍历,收尾判断 for(int i = 0; i <= len ; i++){ if(arr[i] != arr[len--]){ flag = false; break; } } for(int i = 0; i < arr.length; i++){ if(i == 0){ System.out.print("["+arr[i]); }else{ System.out.print(","+arr[i]); } } System.out.print("]是否对称:"); System.out.println(flag?"对称":"非对称"); } }
第7题
比较两个数组内容是否完全一致。
代码实现,效果如图所示:
代码实现:
public class Test07 { public static void main(String[] args) { int[] arr1 = {1,2,3,4,5,6,7}; int[] arr2 = {1,2,3,4,5,6,7}; boolean flag = true;//假设一致 if(arr1.length!=arr2.length){ flag = false; }else{ for (int i = 0; i < arr2.length; i++) { if(arr1[i] != arr2[i]){ flag = false; break; } } } System.out.println("是否一致:" + flag); } }
第8题
根据标准答案【ADBCD】,每题2分共10分,求出每名学生最终得分。
四名同学答案分别为:小尚:【DCBAD】小硅:【ADBCD】小谷:【ADBCA】小好:【ABCDD】每答对一题,得2分,输出四名同学的最终得分。
代码实现,效果如图所示:
代码实现:
package com.atguigu.com; public class Test08 { public static void main(String[] args) { char[] answer = {'A','D','B','C','D'}; char[] jue = {'D','C','B','X','D'}; char[] qing = {'A','D','B','C','D'}; char[] gu = {'A','D','B','C','A'}; char[] good = {'A','B','C','D','D'}; String[] str = {"小绝","小情","小谷","小好"}; int[] counts = new int[4]; for(int i = 0; i < answer.length; i++){ if(answer[i] == jue[i]){ counts[0]++; } if(answer[i] == qing[i]){ counts[1]++; } if(answer[i] == gu[i]){ counts[2]++; } if(answer[i] == good[i]){ counts[3]++; } } for(int i = 0; i < counts.length; i++){ System.out.println("满分10分,"+str[i]+":得分:"+counts[i]*2+"分"); } } }
第9题
左奇右偶
10个整数的数组{26,67,49,38,52,66,7,71,56,87}。元素重新排列,所有的奇数保存到数组左边,所有的偶数保存到数组右边。
代码实现,效果如图所示:
代码实现:
package com.atguigu.com; public class Test09 { public static void main(String[] args) { int[] arr = {26,67,49,38,52,66,7,71,56,87}; int left = 0 ,right = arr.length - 1; System.out.print("原数组:\n["); //输出原数组 for(int i = 0; i <= arr.length-1; i++){ if(i == 0){ System.out.print(arr[i]); }else{ System.out.print(","+arr[i]); } } //判断奇偶数以及交换 while(left < right){ if(arr[left] % 2 == 0 && arr[right] % 2 != 0){ int temp = arr[left]; arr[left] = arr[right]; arr[right] = temp; left++; right--; }else if(arr[left] % 2 != 0){ left++; }else if(arr[right] % 2 == 0){ right--; } } System.out.print("]\n排列后:\n["); //交换完数组 for(int i = 0; i <= arr.length-1; i++){ if(i == 0){ System.out.print(arr[i]); }else{ System.out.print(","+arr[i]); } } System.out.print("]"); } }
第10题
案例:从键盘输入本组学员的人数,和本组学员的成绩,用数组存储成绩,然后实现从高到低排序
代码实现:
import java.util.Scanner; public class Test10 { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("请输入本组学院的人数:"); int count = scan.nextInt(); //定义一个可变数组 int[] number = new int[count]; //输入成绩 for(int i = 0 ; i < number.length; i++){ System.out.println("请输入第"+(i+1)+"个学院的成绩"); number[i] = scan.nextInt(); } //排序 int max = number[0]; for(int i = 0; i < number.length ;i++ ){ for(int j = i; j < number.length; j++){ if( number[j] > number[i]){ int temp = number[i]; number[i] = number[j]; number[j] = temp; } } } for(int i = 0; i < number.length; i++){ System.out.print(number[i]+" "); } } }
第11题
案例:从键盘输入本组学员的人数,和本组学员的姓名,用数组存储姓名,然后再从键盘输入一个姓名,查找它是否在之前的数组中,如果存在,就显示它的下标。
代码实现:
import java.util.Scanner; public class Test11 { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("请输入本组学院的人数:"); int count = scan.nextInt(); String[] names = new String[count]; for(int i = 0; i < names.length; i++){ System.out.println("请输入第"+(i+1)+"个学生的姓名:"); names[i] = scan.next(); } System.out.println("请输入索要查找的姓名:"); String isEm = scan.next(); boolean flag = true; for(int i = 0; i < names.length ;i++){ if(isEm.equals(names[i])){ System.out.println("所查姓名的下标为:"+i); flag = false; break; } } if(flag){ System.out.println("没有这个学生!"); } } }
第12题
案例:从键盘输入一个英语单词,然后查找这个单词中是否存在'a'字
代码实现:
import java.util.Scanner; public class Test12 { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("请输入一个单词:"); String number = scan.next(); char[] ch = number.toCharArray(); // boolean flag = true; for(int i = 0; i < ch.length ;i++){ if('a' == ch[i]){ System.out.println(ch[i]+"存在"); break; }else if(ch.length-1 == i){ //遍历完没找到代表不存在 System.out.println("a不存在"); } } } }
第13题
随机验证码。
随机生成十组六位字符组成的验证码。
验证码由大小写字母、数字字符组成。
代码实现:
import java.util.Random; public class Test13 { public static void main(String[] args) { String[] str = new String[10]; Random rand = new Random(); for(int i = 0; i < 10; i++ ){ str[i] = ""; for(int j = 0; j < 6; j++){ int num; while(true){ num = rand.nextInt(123); if(num >= 48 && num <= 57){ break; }else if(num >= 65 && num <= 90){ break; }else if(num >= 97 && num <= 122){ break; } } str[i] += (char)num; } System.out.println("随机验证码:"+str[i]); } } }
第14题
数组去重
10个整数{9,10,6,6,1,9,3,5,6,4},范围1-10,保存到数组中。
去除数组中重复的内容,只保留唯一的元素。效果如图所示:
代码实现:
public class Test14 { public static void main(String[] args) { int[] arr = {9,10,6,6,1,9,3,5,6,4}; //1定义变量count,初始化为原数组的长度 for(int i = 0; i < arr.length ; i++){ System.out.print(arr[i]+" "); } int count = arr.length ; //2查找是否有重复的元素,并把后面的那个重复的元素覆盖,然后count-- for(int i = 0; i < count ;i++){ for(int j = i + 1; j < count ;j++){ if(arr[i] == arr[j]){ for(int k = j; k < count-1; k++){ arr[k] = arr[k+1]; } count --; } } } System.out.println(); //3创建新数组 int[] newArr = new int[count]; for(int i = 0; i < count; i++){ newArr[i] = arr[i]; } //4复制元素,把arr的前面的count个元素复制到新数组中 for(int i = 0; i < newArr.length ; i++){ System.out.print(newArr[i]+" "); } } }
第15题
使用二维数组打印一个 10 行杨辉三角.如图:
代码实现:
public class Test15 { public static void main(String[] args) { int[][] arr = new int[10][]; //初始化 for(int i = 0;i < arr.length ; i++){ arr[i] = new int[10]; } //赋值 for(int i = 0; i < arr.length ;i++){ for(int j = 0; j < i+1 ; j++){ if( j == 0 || i == j ){ arr[i][j] = 1; }else{ arr[i][j] = arr[i-1][j]+arr[i-1][j-1]; } } } //遍历 for(int i = 0; i < arr.length ; i++){ for(int j = 0; j < i + 1 ; j++){ System.out.print(arr[i][j]+"\t"); } System.out.println(); } } }
第16题
打印扑克牌,效果如图所示:
代码实现:
public class Test16 { public static void main(String[] args) { String[][] arr = new String[2][]; arr[0] = new String[4]; arr[1] = new String[13]; arr[0][0] = "黑桃"; arr[0][1] ="红桃"; arr[0][2] = "梅花"; arr[0][3] = "方片"; arr[1][0] = "A"; for(int i = 1; i < 10; i++){ arr[1][i] = i+1+""; } arr[1][10] = "J"; arr[1][11] = "Q"; arr[1][12] = "K"; for(int i = 0; i < arr[0].length ; i++){ for(int j = 0; j < arr[1].length ;j++){ System.out.print(arr[0][i]+arr[1][j]+" "); } System.out.println(); } } }
第17题
需求:保存全班的每个组的成绩,并对成绩做统计
从键盘输入一共有几组
从键盘输入每一组分别有多少人
从键盘输入每一个同学的成绩
统计每一组的最高分、最低分
统计每一组的平均分
统计全班的最高分、最低分
统计全班的平均分
统计全班的总人数
这个题稍微有点复杂,不过多想想就理清了。
实例如图:
代码实现:
import java.util.Scanner; public class Test17 { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("请输入一共有几个组:"); int club = scan.nextInt(); int[][] people = new int[club][]; for(int i = 0; i < club;i++){ System.out.println("请输入第"+(i+1)+"有多少人"); people[i] = new int[scan.nextInt()]; for(int j = 0; j < people[i].length ;j++){ System.out.println("请输入"+(j+1)+"组员的成绩:"); people[i][j] = scan.nextInt(); } } System.out.println("-------------------------"); //显示成绩表 System.out.println("每组成绩如下:"); for(int i = 0; i < people.length ; i++){ System.out.println("第"+(i+1)+"组:"); for(int j = 0; j < people[i].length ;j++){ System.out.print(people[i][j]+"\t"); } System.out.println(); } //计算每一组的最高分 int max[] = new int[people.length ]; //每一组的最低分 int min[] = new int[people.length]; //总成绩 int Account = 0; //每一组平均分 double avg[] = new double[people.length ]; for(int i = 0; i < people.length ; i++){ max[i] = people[i][0]; min[i] = people[i][0]; //avg[i] = people[i][0]; } //每一组人数 int count[] = new int[people.length ]; //找每一组最大值,最小值,个数,总成绩 for(int i = 0; i < people.length ; i++){ for(int j = 0; j < people[i].length;j++ ){ if(max[i] < people[i][j]){ max[i] = people[i][j]; } if(min[i] > people[i][j]){ min[i] = people[i][j]; } count[i] += people[i][j]; Account += people[i][j]; } } //总人数 int countNumber = 0; for(int i = 0; i < count.length ; i++){ avg[i] = ((int)((count[i]*1.0) / people[i].length)*100)/100*0.1 ; countNumber += people[i].length ; } //总平均分 double countAvge = 0.0; countAvge = ((int)((1.0*Account) / countNumber)*100)/100*0.1; int maxs = max[0]; int mins = min[0]; System.out.println("-------------------------"); System.out.println("每组最高分,最低分:"); //班级最高分,最低分 for(int i = 0; i < max.length ; i++){ System.out.println("第"+(i+1)+"组最高分:"+max[i]+",最低分:"+min[i] +",平均分:"+avg[i]); if(maxs < max[i]){ maxs = max[i]; } if(mins > min[i]){ mins = min[i]; } } System.out.println("全班最高分:"+maxs+",最低分:"+mins+ ",平均分:"+countAvge+",总人数:"+countNumber); } }
关于简答题(包括一些基本语法,算法,查找,复制,反转,排序)会在下次分享,下次见。
对于学号编程还是得多写多练,才能熟练掌握,比如看一眼题就知道思路等等!