JavaSE基础编程十题(数组和方法部分)

打印 上一主题 下一主题

主题 891|帖子 891|积分 2673

写在前面

继承昨天Java中的数组和方法部分的习题,今天写十题编程题,来看看你能写出来几题。答案也是仅供参考,如果有更好的解法接待在下面留言!
题目展示

1.数组查找操作:定义一个长度为10 的一维字符串数组,在每一个元素存放一个单词;然后运行时从命令行输入一个单词,步伐判断数组是否包含有这个单词,包含  这个单词就打印出“Yes”,不包含就打印出“No”。
代码:
  1. public static void main(String[] args) {
  2.         System.out.println("请输入一个单词:");
  3.         Scanner sc = new Scanner(System.in);
  4.         String word = sc.next();
  5.         String[] array = new String[]{"first","time","you","sing"
  6.                 ,"song","got","practice","same","principle","applies"};
  7.         for(int i = 0; i < array.length;i++)
  8.         {
  9.             if(word.equals(array[i]))
  10.             {
  11.                 System.out.println("Yes");
  12.                 return;
  13.             }
  14.         }
  15.         System.out.println("No");
  16.     }
复制代码
效果截图:


2.数组逆序操作:定义长度为10的数组,将数组元素对调,并输出对调前后的效果。  思绪:把0索引和arr.length-1的元素互换,把1索引和arr.length-2的元素互换,只要互换到arr.length/2的时间即可。
代码:
  1. public static void main(String[] args) {
  2.         System.out.println("逆序前的数组为:");
  3.         char[] array = new char[]{'a','b','c','d','e','f','g','h','i','j'};
  4.         printArray(array);
  5.         for (int start=0, end = array.length-1 ; start < end ; start++,end--)
  6.         {
  7.             char temp = array[start];
  8.             array[start] = array[end];
  9.             array[end]= temp;
  10.         }
  11.         System.out.println("逆序后的数组为:");
  12.         printArray(array);
  13.     }
  14.     public static char[] printArray(char[] arr){
  15.         for (int k = 0 ; k < arr.length ; k++){
  16.             if(k==0){
  17.                 System.out.print("["+arr[k]+", ");
  18.             }else if(k == arr.length-1){
  19.                 System.out.print(arr[k]+"]");
  20.             }else {
  21.                 System.out.print(arr[k]+", ");
  22.             }
  23.         }
  24.         System.out.println();
  25.         return arr;
  26.     }
复制代码
效果截图:

3.归并数组操作:现有如下一个数组: int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5}  要求将以上数组中值为0的项去掉,将不为0的值存入一个新的数组,天生的新数组为: int newArr [] ={1,3,4,5,6,6,5,4,7,6,7,5}
代码:
  1. public static void main(String[] args) {
  2.         int[] oldArr = new int[]{1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};
  3.         System.out.println("原数组为:");
  4.         printArray(oldArr);
  5.         int count = 0;
  6.         for (int i = 0 ; i<oldArr.length ; i++){
  7.             if(oldArr[i] != 0){
  8.                 count++;
  9.             }
  10.         }
  11.         int[] newArr = new int[count];
  12.         int size = 0;
  13.         for (int i = 0 ; i< oldArr.length;i++)
  14.         {
  15.             if(oldArr[i] != 0)
  16.             {
  17.                 newArr[size] = oldArr[i];
  18.                 size++;
  19.             }
  20.         }
  21.         System.out.println("去除0之后的数组为:");
  22.         printArray(newArr);
  23.     }
  24.     public static int[] printArray(int[] arr){
  25.         for (int k = 0 ; k < arr.length ; k++){
  26.             if(k==0){
  27.                 System.out.print("["+arr[k]+", ");
  28.             }else if(k == arr.length-1){
  29.                 System.out.print(arr[k]+"]");
  30.             }else {
  31.                 System.out.print(arr[k]+", ");
  32.             }
  33.         }
  34.         System.out.println();
  35.         return arr;
  36.     }
复制代码
效果截图:


5.二维数组遍历求和操作:用二重循环求出二维数组b所有元素的和:int[][] b={{11},{21,22},{31,32,33}}。
代码:
  1. public static void main(String[] args) {
  2.         int[] a = new int[]{3, 36, 55, 68, 75, 88, 12, 24};
  3.         int[] orderAsc = maoPaoOrder(a);
  4.         System.out.println("升序排序好的数组为:");
  5.         printArray(orderAsc);
  6.         Scanner sc = new Scanner(System.in);
  7.         System.out.println("请输入一个您要查找的数:");
  8.         int number = sc.nextInt();
  9.         int front = 0;
  10.         int end = a.length - 1;
  11.         int res = -1;
  12.         while (front <= end) {
  13.             int mid = (front + end) / 2;
  14.             if (number > a[mid]) {
  15.                 front = mid + 1;
  16.             } else if (number < a[mid]) {
  17.                 end = mid - 1;
  18.             } else {
  19.                 res = mid;
  20.                 break;
  21.             }
  22.         }
  23.         if (res == -1) {
  24.             System.out.println(-1);
  25.         } else {
  26.             System.out.println("查找成功!你要查找的数的索引为:" + res);
  27.         }
  28.     }
  29.     public static int[] maoPaoOrder(int[] arr) {
  30.         for (int i = 0; i < arr.length; i++) {
  31.             for (int j = i + 1; j < arr.length; j++) {
  32.                 if (arr[i] > arr[j]) {
  33.                     int temp = arr[i];
  34.                     arr[i] = arr[j];
  35.                     arr[j] = temp;
  36.                 }
  37.             }
  38.         }
  39.         return arr;
  40.     }
  41.     public static int[] printArray(int[] arr) {
  42.         for (int k = 0; k < arr.length; k++) {
  43.             if (k == 0) {
  44.                 System.out.print("[" + arr[k] + ", ");
  45.             } else if (k == arr.length - 1) {
  46.                 System.out.print(arr[k] + "]");
  47.             } else {
  48.                 System.out.print(arr[k] + ", ");
  49.             }
  50.         }
  51.         System.out.println();
  52.         return arr;
  53.     }
复制代码
效果截图:

*6.题目:输入某年某月某日,判断这一天是这一年的第几天?分析:以3月5日为例,先把前两个月的加起来,然后再加上5天即本年第几天,特殊情况,闰年且输入月份大于3需考虑多加一天。可定义数组存储1-12月各月天数。 *
代码:
  1.   public static void main(String[] args) {
  2.         int[][] b = {{11}, {21, 22}, {31, 32, 33}};
  3.         int sum = 0;
  4.         for (int i = 0; i < b.length; i++) {
  5.             for (int j = 0; j < b[i].length; j++) {
  6.                 sum = sum + b[i][j];
  7.             }
  8.         }
  9.         System.out.println("二维数组b的元素和为:" + sum);
  10.     }
复制代码
效果截图:

7.使用二分法查找有序数组中元素。找到返回索引,不存在输出-1。使用递归实现。
代码:
  1. public static void main(String[] args) {
  2.         int[] days = new int[]{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
  3.         int year = 0;
  4.         int month = 0;
  5.         int day = 0;
  6.         int sum = 0;
  7.         System.out.println("请输入日期,包含年月日,两个数之间用空格分隔:");
  8.         Scanner sc = new Scanner(System.in);
  9.         year = sc.nextInt();
  10.         month = sc.nextInt();
  11.         day = sc.nextInt();
  12.         if ((year % 100 != 0 && year % 4 == 0) || year % 400 == 0) {
  13.             days[1] = 29;
  14.         }
  15.         for (int i = 0; i < month - 1; i++) {
  16.             sum = sum + days[i];
  17.         }
  18.         sum = sum + day;
  19.         System.out.println(year + "年" + month + "月" + day + "日对应这一年的第" + sum + "天。");
  20.     }
复制代码
效果截图:


8.数组A:1,7,9,11,13,15,17,19;数组b:2,4,6,8,10   两个数组归并为数组c,按升序分列。
代码:
  1. public static void main(String[] args) {
  2.         int[] a = new int[]{3, 36, 55, 68, 75, 88, 12, 24};
  3.         int[] orderAsc = maoPaoOrder(a);
  4.         System.out.println("升序排序好的数组为:");
  5.         printArray(orderAsc);
  6.         Scanner sc = new Scanner(System.in);
  7.         System.out.println("请输入一个您要查找的数:");
  8.         int number = sc.nextInt();
  9.         int res = erFenSearch(a, number);
  10.         if (res == -1) {
  11.             System.out.println("查找失败!" + -1);
  12.         } else {
  13.             System.out.println("查找成功!你要查找的数的索引为:" + res);
  14.         }
  15.     }
  16.     //二分查找的结果方法
  17.     public static int erFenSearch(int[] arr, int x) {
  18.         return erFenSearch(arr, x, 0, arr.length - 1);
  19.     }
  20.     //二分查找的方法
  21.     public static int erFenSearch(int[] arr, int x, int front, int end) {
  22.         int mid = (front + end) / 2;
  23.         while (front <= end) {
  24.             if (x > arr[mid]) {
  25.                 return erFenSearch(arr, x, mid + 1, end);
  26.             } else if (x < arr[mid]) {
  27.                 return erFenSearch(arr, x, front, mid - 1);
  28.             } else {
  29.                 return mid;
  30.             }
  31.         }
  32.         return -1;
  33.     }
  34.     //冒泡排序数组
  35.     public static int[] maoPaoOrder(int[] arr) {
  36.         for (int i = 0; i < arr.length; i++) {
  37.             for (int j = i + 1; j < arr.length; j++) {
  38.                 if (arr[i] > arr[j]) {
  39.                     int temp = arr[i];
  40.                     arr[i] = arr[j];
  41.                     arr[j] = temp;
  42.                 }
  43.             }
  44.         }
  45.         return arr;
  46.     }
  47.     //打印数组方法
  48.     public static int[] printArray(int[] arr) {
  49.         for (int k = 0; k < arr.length; k++) {
  50.             if (k == 0) {
  51.                 System.out.print("[" + arr[k] + ", ");
  52.             } else if (k == arr.length - 1) {
  53.                 System.out.print(arr[k] + "]");
  54.             } else {
  55.                 System.out.print(arr[k] + ", ");
  56.             }
  57.         }
  58.         System.out.println();
  59.         return arr;
  60.     }
复制代码
效果截图:

9.字符大小转换:输入一个字符,判断它是否为小写字母,如果是,将它转换成大写字母,否则,不转换;
代码:
[code] public static void main(String[] args) {        Scanner sc = new Scanner(System.in);        System.out.println("请输入一个英文字母:");        char c = sc.next().charAt(0);        if (65

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

杀鸡焉用牛刀

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表