
综合机试题目(包括数据结构和其它机试题目).pdf
22页数据结构方面1.二分查找public boolean foundbyerfen(int [] str,int key){// int left=0;// 左边界int right=str.length;//右边界int middle=(left+right)/ 2;// 中间分界while(leftkey){//如果要找的数小于中间的数那么只用在左边找right=middle-1; } else if(key>str[middle]){//如果要找的数大于中间的数left=middle+1; } else if(key==str[middle]){ System.out.println(“ 找到的了! “+middle); return true; } } return false; } 2.十进制转二进制(程序题)public int shitoer(int sa){//十进制转换二进制的方法(递归)int i=1; int re=1; if(sasa){break;} re=re*10;i=i*2; } return re+shitoer(sa-i); } 3.二叉树的遍历public void select(Node node){//二叉树的遍历注意要用到递归if(node!=null){ System.out.println(node.getValue()); if(node.getLeftnode()!=null){ select(node.getLeftnode()); } if(node.getRightnode()!=null){ select(node.getRightnode()); } } } 4.写一个快速排序public static void main(String[] args) { int a[]={6,5,1,8,2,7}; int pos; if(0=m){ j--; } if(i() { public int compare(Object o1, Object o2) { int[] one = (int[]) o1; int[] two = (int[]) o2; for (int i = 0; i two[k]) { return 1; } else if (one[k] * 处理能力: * a. 整数部分: 9999999999999999(16 位长,仟万亿级) * b. 小数部分: 3 位(可扩展,单位?),多于 3 位舍去 (不四舍五入 ) * 可无限扩展 ,方法: IUNIT 后依次递加合适的单位,并处理0 出现在关键位置 * * * @author JIM * @version 2.1 */ public class CurrencyUtil { /** 大写数字*/ private static final String[] NUMBERS = { “ 零“, “ 壹“, “ 贰“, “ 叁“, “ 肆“, “伍“, “陆“, “ 柒“, “捌 “, “玖“ }; /** 整数部分的单位*/ private static final String[] IUNIT = { “ 元“, “ 拾“, “ 佰“, “ 仟“, “ 万“, “ 拾“, “ 佰“, “仟“, “ 亿“, “拾 “, “佰“, “ 仟“, “万“, “ 拾“, “佰 “, “仟“ }; /** 小数部分的单位*/ private static final String[] DUNIT = { “ 角 “, “ 分“, “ 厘“ }; /** 整数部分长度限制,仟万亿级*/ private static int LIMIT = 16; /** * 得到中文金额。
* @return 中文金额*/ public static String toChinese(String str) { // 去掉 “,“ String number = getFormatNum(str); // 不是金额,直接返回if (!isMoney(number)) { return number; } // 整数部分数字String integerStr; // 小数部分数字String decimalStr; // 初始化:格式数字;分离整数部分和小数部分;确定长度if (number.indexOf(“.“) > 0) { integerStr = number.substring(0, number.indexOf(“.“)); decimalStr = number.substring(number.indexOf(“.“) + 1); } else if (number.indexOf(“.“) == 0) { integerStr = ““; decimalStr = number.substring(1); } else { integerStr = number; decimalStr = ““; } // integerStr 去掉首 0,不必去掉decimalStr 的尾 0(超出部分舍去 ) if (!integerStr.equals(““)) { integerStr = Long.toString(Long.parseLong(integerStr)); if (integerStr.equals(“0“)) { integerStr = ““; } } // overflow超出处理能力,直接返回if (integerStr.length() > LIMIT) { System.out.println(number + “: 超出处理能力 “); return number; } // 整数部分数字int[] integers = toArray(integerStr); // 设置万单位boolean isMust5 = isMust5(integerStr); // 小数部分数字int[] decimals = toArray(decimalStr); // 返回大写金额return getChineseInteger(integers, isMust5) + getChineseDecimal(decimals); } /** * 整数部分和小数部分转换为数组,从高位至低位*/ private static int[] toArray(String number) { int[] array = new int[number.length()]; for (int i = 0; i 1 // 其余情况else key += ““; // if(ii==5) break; } chineseInteger.append(integers[ii] == 0 ? key : (NUMBERS[integers[ii]] + IUNIT[length - ii - 1])); key = ““; } return chineseInteger.toString(); } /** * 得到中文金额的小数部分。
* @return 小数部分*/ private static String getChineseDecimal(int[] decimals) { StringBuffer chineseDecimal = new StringBuffer(““); for (int ii = 0; ii 4) { String subInteger = ““; if (length > 8) { // 取得从低位数,第5 到第 8 位的字串subInteger = integerStr.substring(length - 8, length - 4); } else { subInteger = integerStr.substring(0, length - 4); } return Integer.parseInt(subInteger) > 0; } else { return false; } } /** * 判断金额字符串是否合法不合法: a.包含多于一个 “.“ ;b.包含 “.“ 、“,“ 和数字以外的字符;c.¥/$? * @return true是 false 否*/ private static boolean isMoney(String number) { try { Double.parseDouble(number); } catch (Exception ex) { System.out.println(number + “ 不是合法金额“); return false; } return true; } public static void main(String[] args) { String num = “1234567890123456.43“; System.out.println(num + “-“ + CurrencyUtil.toChinese(num)); num = “0.979“; System.out.println(num + “-“ + CurrencyUtil.toChinese(num)); num = “09999999999999999“; System.out.println(num + “-“ + CurrencyUtil.toChinese(num)); num = “10,001,000.09“; System.out.println(num + “-“ + CurrencyUtil.toChinese(num)); num = “01.107000“; System.out.println(num + “-“ + CurrencyUtil.toChinese(num)); num = “1.0778879“; System.out.println(num + “-“ + CurrencyUtil.toChinese(num)); num = “1,002,002,020,000,201.897675434“; System.out.println(num + “-“ + CurrencyUtil.toChinese(num)); num = “201000000.00“; System.out.println(num + “-“ + CurrencyUtil.toChinese(num)); System.out.println(CurrencyUtil.ChangeToBig(num));} public static String ChangeToBig(String CurrentNumber) { // 输入 CurrentNumber 的数字格式必须为%*.**; String results = new String(“ ¥“); String temp = CurrentNumber; // 单位final String Units[] = { “ 分“, “ 角“, “ 元“, “ 拾“, “ 佰“, “仟“, “ 万“, “拾“, “ 佰“, “仟“, “ 亿“, “ 拾“, “ 佰“, “ 仟“, “ 兆“, “ 拾“, “ 佰“, “仟“ }; // 大写数final String Numbers[] = { “ 零“, “ 壹 “, “贰“, “ 叁“, “肆“, “ 伍“, “ 陆“, “ 柒“, “ 捌“, “玖“ }; // 处理后的字符串java.lang.StringBuffer buf = new java.lang.StringBuffer(0); char c; // 去掉小数点for (int i = 0; i = root.getNum()){ if(root.getRight()!=null){ addTre。
