自己怎么建设购物网站,微信网站怎么做的好名字,网站优化排名提升,网站建设基础报告一#xff0c;编码题
1#xff0c;数组查找操作#xff1a;定义一个长度为10 的一维字符串数组#xff0c;在每一个元素存放一个单词#xff1b;然后运行时从命令行输入一个单词#xff0c;程序判断数组是否包含有这个单词#xff0c;包含这个单词就打印出“Yes”…一编码题
1数组查找操作定义一个长度为10 的一维字符串数组在每一个元素存放一个单词然后运行时从命令行输入一个单词程序判断数组是否包含有这个单词包含这个单词就打印出“Yes”不包含就打印出“No”。
import java.util.*;public class PanTi {public static void main(String[] args) {String[] strArr new String[10];strArr[0] java;strArr[1] html;strArr[2] sql;strArr[3] android;strArr[4] javascript;strArr[5] ruby;strArr[6] c;strArr[7] c;strArr[8] .net;strArr[9] ios;Scanner scanner new Scanner(System.in);System.out.print(请输入需要查找的计算机编程语言:);String inputStr scanner.next();boolean flag false;for (String string : strArr) {if (string.equals(inputStr)) {flag true;}}if (flag) {System.out.println(YES);} else {System.out.println(NO);}}} 2获取数组最大值和最小值操作利用Java的Math类的random()方法编写函数得到0到n之间的随机数n是参数。并找出产生50个这样的随机数中最大的、最小的数并统计其中60的有多少个。
提示使用 int num(int)(n*Math.random());获取随机数
import java.util.*;public class PanTi {public static void main(String[] args) {//创建一个长度为50的每个元素在0-100之间的数组int[] arr getArray(100);//遍历数组printArr(arr);//获取最大值和最小值int min getMin(arr);int max getMax(arr);System.out.println(数组中最大值 max \t数组中最小值 min);//统计其中大于等于60的元素个数int count count(arr,60);System.out.println(数组中大于或等于60的数有: count 个);}//遍历数组private static void printArr(int[] arr) {System.out.println(输出数组元素);for(int i0;iarr.length;i){if(i%10 0){System.out.println();}System.out.print(arr[i]\t);}}//获取数组最大值private static int getMax(int[] arr) {int max arr[0];for(int i1;iarr.length;i){if(maxarr[i]){max arr[i];}}return max;}//获取数组最小值private static int getMin(int[] arr) {int min arr[0];for(int i0;iarr.length;i){if(minarr[i]){min arr[i];}}return min;}// 创建数组 并且初始化50个数据public static int[] getArray(int n) {int arr[] new int[50];for (int i 0; i 50; i) {arr[i] (int) (n * Math.random());}return arr;}// 统计数组中大于等于60的数量的方法 思路使用一个int值计数public static int count(int[] arr,int elem) {int count 0;for (int i : arr) {if (i elem) {count;}}return count;}
}3数组逆序操作定义长度为10的数组将数组元素对调并输出对调前后的结果。
思路把0索引和arr.length-1的元素交换把1索引和arr.length-2的元素交换…..
只要交换到arr.length/2的时候即可。
import java.util.*;public class PanTi {public static void main(String[] args) {//定义一个数组并进行静态初始化。int[] arr {12, 98, 50, 34, 76, 87, 90, 34, 67, 80};//逆序前System.out.println(逆序前);printArr(arr);//逆序后System.out.println(逆序后);reverseArr(arr);printArr(arr);}public static void reverseArr(int[] arr) {for (int x 0; x arr.length / 2; x) {int temp arr[x];arr[x] arr[arr.length - 1 - x];arr[arr.length - 1 - x] temp;}}//遍历数组public static void printArr(int[] arr) {System.out.print([);for (int x 0; x arr.length; x) {if (x arr.length - 1) { //这是最后一个元素System.out.println(arr[x] ]);} else {System.out.print(arr[x] , );}}}} 4合并数组操作现有如下一个数组 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}
思路 确定出不为0的个数这样可以开辟新数组从旧的数组之中取出内容并将其赋给新开辟的数组。
import java.util.*;public class PanTi {public static void main(String[] args) {int oldArr[] {1, 3, 4, 5, 0, 0, 6, 6, 0, 5, 4, 7, 6, 7, 0, 5};int newArr[] selectArr(oldArr);for (int i : newArr) {System.out.print(i );}}// 去掉数组中值为0的元素的方法public static int[] selectArr(int[] arr) {// 1.计算数组中元素不为0的个数int count 0;for (int i : arr) {if (i ! 0) {count;}}// 2.创建一个新数组,长度为countint newArr[] new int[count];// 3.复制不为0的元素到新数组中int size 0;for (int i : arr) {if (i ! 0) {newArr[size] i;}}return newArr;}} 5二分法查找操作使用二分法查找有序数组中元素。找到返回索引不存在输出-1。
分析二分法查找的前提是数组有序。
假如有一组数为312243655687588要查给定的值24.可设三个变量frontmidend分别指向数据的上界中间和下界midfrontend/2. 开始令front0指向3end7指向88则mid3指向36。因为midx故应在前半段中查找。 令新的endmid-12而front0不变则新的mid1。此时xmid故确定应在后半段中查找。 令新的frontmid12而end2不变则新mid2此时a[mid]x查找成功。 如要查找的数不是数列中的数例如x25当第三次判断时xa[mid]按以上规律令frontmid1即front3出现frontend的情况表示查找不成功。
import java.util.*;public class PanTi {public static void main(String[] args) {int[] array {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};System.out.println(searchLoop(array, 9));}/*** 循环二分查找返回第一次出现该值的位置** param array 已排序的数组* param findValue 需要找的值* return 值在数组中的位置从0开始。找不到返回-1*/public static int searchLoop(int[] array, int findValue) {// 如果数组为空直接返回-1即查找失败if (array null) {return -1;}// 起始位置int start 0;// 结束位置int end array.length - 1;while (start end) {// 中间位置int middle (start end) / 2;// 中值int middleValue array[middle];if (findValue middleValue) {// 等于中值直接返回return middle;} else if (findValue middleValue) {// 小于中值时在中值前面找end middle - 1;} else {// 大于中值在中值后面找start middle 1;}}// 返回-1即查找失败return -1;}} 6二维数组遍历求和操作用二重循环求出二维数组b所有元素的和 int[][] b{{11},{21,22},{31,32,33}}
import java.util.*;public class PanTi {public static void main(String[] args) {int sum 0;int[][] b {{11}, {21, 22}, {31, 32, 33}};for (int i 0; i b.length; i) {for (int j 0; j b[i].length; j) {sum b[i][j];}}System.out.println(sum);}} 可选题
1生成一百个随机数放入数组然后排序输出。
import java.util.*;public class PanTi {public static void main(String[] args) {//1.生成100个随机数的数组int[] arr createArr();//2.从小到大排序arr sortArr(arr);//3.打印printArr(arr);}//生成100个随机数的方法public static int[] createArr() {int[] arr new int[100];for (int i 0; i arr.length; i) {arr[i] (int) (100 * Math.random());}return arr;}//对数组进行排序的方法public static int[] sortArr(int arr[]) {int temp;for (int i 0; i arr.length; i) {for (int j 0; j i; j) {if (arr[i] arr[j]) {temp arr[i];arr[i] arr[j];arr[j] temp;}}}return arr;}//数组遍历输出打印的方法public static void printArr(int[] arr) {for (int i : arr) {System.out.print(i \t);}}} 2题目输入某年某月某日判断这一天是这一年的第几天
分析以3月5日为例先把前两个月的加起来然后再加上5天即本年第几天特殊情况闰年且输入月份大于3需考虑多加一天。可定义数组存储1-12月各月天数。
import java.util.*;public class PanTi {public static void main(String[] args) {Scanner scanner1 new Scanner(System.in);System.out.print(输出今年是第几年);int year scanner1.nextInt();System.out.print(输出本月是第几月);int month scanner1.nextInt();System.out.print(输出今天是第几日);int day scanner1.nextInt();int daynum 0; // 天数//一年365天int[] month1 new int[]{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};//闰年366天if (year % 400 0 year % 100 ! 0 || year % 100 0) {month1 new int[]{31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; // 闰年里的每个月的天数}//判断这一天是第几天for (int index 1; index month; index) {if (index 1) {daynum day;} else {daynum month1[index - 2];}}System.out.println(这一天是这一年的第 daynum 天);}} 3 数组A1791113151719数组b246810 两个数组合并为数组c按升序排列。 要求使用Arrays类的方法快速实现。
import java.util.*;public class PanTi {public static void main(String[] args) {int data1[] new int[]{1, 7, 9, 11, 13, 17, 19};int data2[] new int[]{2, 4, 6, 8, 10};int newArr[] concat(data1, data2);print(newArr);Arrays.sort(newArr);print(newArr);}public static int[] concat(int src1[], int src2[]) {int len src1.length src2.length; // 新数组的大小int arr[] new int[len]; // 新数组
// int count 0;
// for (int i : src1) {
// arr[count] i;
// }
// for (int i : src2) {
// arr[count] i;
// }// 还可以通过系统的方法拷贝数组System.arraycopy(src1, 0, arr, 0, src1.length); // 拷贝第一个数组System.arraycopy(src2, 0, arr, src1.length, src2.length); //拷贝第二个数组return arr;}public static void print(int[] temp) {for (int x 0; x temp.length; x) {System.out.print(temp[x] 、);}System.out.println();}} 二简答题
1数组的特点。
有序性数组中的元素按照一定的顺序排列。类型一致性数组中的所有元素必须是相同的数据类型。连续存储数组中的元素在内存中连续存储这使得访问数组元素时效率较高。索引访问每个元素通过数组名和它在数组中的位置索引来访问例如array表示数组中的第一个元素。
2数组的优缺点 优点:
快速访问数组按照索引查询元素的速度非常快因为元素在内存中是连续存储的。大量数据存储数组适合存储大量数据因为它可以快速访问和遍历。随机访问数组支持随机访问元素只要知道元素的索引就可以直接访问。简单易用数组的定义和使用非常简单语法直观。高效查找利用二分查找等算法数组可以高效地查找元素。 缺点:
大小固定数组的大小一旦确定就不能改变不适合动态存储。类型单一数组只能存储一种类型的数据。插入和删除效率低由于元素连续存储插入和删除元素会导致大量元素移动影响效率。内存浪费如果数组中存储的元素少于其声明的大小会导致内存浪费。容易溢出如果访问超出数组边界的元素可能会导致程序错误或异常。
3冒泡排序的算法。 定义 冒泡排序是一种简单的排序算法其基本思想是通过重复遍历待排序的数列比较相邻元素的大小如果它们的顺序错误则交换它们的位置。这个过程会重复进行直到没有需要交换的元素为止。 冒泡排序的基本步骤 初始化设定一个标志位通常是布尔值用于优化算法可选。 遍历数列从数列的第一个元素开始到倒数第二个元素结束。 比较和交换比较相邻的两个元素如果前一个元素比后一个元素大对于升序排序则交换它们的位置。 优化如果在一次完整的遍历中没有发生任何交换说明数列已经有序可以提前结束排序。 重复重复步骤2到步骤4直到没有需要交换的元素为止1。 冒泡排序的算法原理 冒泡排序的核心思想是从待排序的元素中逐个比较相邻的两个元素如果它们的顺序不符合要求例如升序排序时前一个元素大于后一个元素则交换它们的位置。这个过程可以类比水中的冒泡现象大的元素会逐渐“浮”到数组的末尾而小的元素则会“沉”到数组的前面。
4数组的三种初始化方式是什么? 静态初始化
是在声明数组的同时直接为数组元素分配空间并赋值。 动态初始化
是将数组定义和为数组元素分配空间并赋值的操作分开进行。首先使用new关键字创建数组对象但不立即赋值之后再逐个赋值。 默认初始化
是指数组在定义后其元素会被隐式初始化为该类型的默认值。 public class Demo {public static void main(String[] args) {// 静态初始化int[] staticArray {1, 2, 3, 4, 5};System.out.println(staticArray); // 输出: 1System.out.println(staticArray:ml-citation{ref5 datacitationList}); // 输出: 5// 动态初始化int[] dynamicArray new int:ml-citation{ref3 datacitationList};dynamicArray 1;dynamicArray:ml-citation{ref1 datacitationList} 2;dynamicArray:ml-citation{ref2 datacitationList} 3;dynamicArray:ml-citation{ref4 datacitationList} 4;System.out.println(dynamicArray); // 输出: 1System.out.println(dynamicArray:ml-citation{ref5 datacitationList}); // 输出: 0未赋值// 默认初始化int[] defaultArray new int:ml-citation{ref3 datacitationList};System.out.println(defaultArray); // 输出: 0整数类型的默认值}
}