华为校园招聘Java机试题

又到校园招聘的时候了,前几天听同学说华为校招还要考上机,然后就在网上找往年的机试题,找到之后就开始战斗了。。下面的题目都是在网上找的,然后代码是自己一个一个写的。。。
1.程序实现目标: 输入一个字符串,将其各个字符对应的ASCII值加5后,输出结果。
程序要求:该字符串只包含小写字母,若其值加5后的字符值大于'z',将其转换成从a开始的字符。

    import java.util.Scanner;


    public class Test {


	public static void main(String[] args) {
		System.out.println(StringASCII("abcd"));
		Scanner in = new Scanner(System.in);
		System.out.println("请输入一串小写字母:");
		String str = in.next();
		System.out.println(StringASCII(str));
		in.close();
	}


	public static String StringASCII(String str) {
		StringBuffer reslut = new StringBuffer();
		// 将字符串转换成数组
		char[] array = str.toCharArray();
		for (int i = 0; i < array.length; i++) {
			char arr= (char) (array[i] + 5);
			if (arr >'z') {
				arr = 'a';
			}
			reslut.append(arr);
		}
		return reslut.toString();
	}
}


2.程序实现目标:求一个整型数组中元素的平均值,并统计其中大于和小于此平均值的元素的个数。
  程序要求:输入:整型数组中的元素个数及各个元素。

            输出:整型数组中元素的平均值,大于和小于此平均值的元素的个数

import java.util.Scanner;


public class CountAvg {


	/**
	 * @param args
	 */
	public static void main(String[] args) {
//		int arr[] = { 1, 2, 4, 23, 8, 11, 22, 31 };
		int[] arr = inputArr();
		int[] count = count(arr);
		System.out.println("数组的平均值:" + count[2] + ",小于平均值的个数:" + count[1]
				+ ",大于平均值的个数:" + count[0]);
	}


	// 输入整形数组
	private static int[] inputArr() {
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入整形数组的长度:");
		int i = scanner.nextInt();
		int arr[] = new int[i];
		System.out.println("请输入整形数组的元素:");
		for (int j = 0; j < arr.length; j++) {
			int str = scanner.nextInt();
			// System.out.println(arr[j]+"----"+str);
			arr[j] = str;
		}
		scanner.close();
		return arr;
	}


	/**
	 * 求出整形数组的平均值,大于和小于平均值的个数
	 * 
	 * @param arr
	 * @return
	 */
	private static int[] count(int[] arr) {
		int m = 0, n = 0, avg, total = 0;
		for (int i = 0; i < arr.length; i++) {
			total += arr[i];
		}
		avg = total / arr.length;
		for (int i = 0; i < arr.length; i++) {
			if (avg < arr[i]) {
				m++;
			} else {
				n++;
			}
		}
		int result[] = new int[3];
		result[0] = m;
		result[1] = n;
		result[2] = avg;
		return result;
	}
}

3、手动输入一个存储整数的数组,要求输出数组里面的2个最大值。
   实例: 
             输入:1,2,5,9,84,3,2
             输出:84,9

   
 import java.util.Scanner;


    public class CountMax {


	/**
	 * @param args
	 */
	public static void main(String[] args) {
		int[] arr = inputArr();
		countMax(arr);
		System.out.println("最大值:" + arr[0] + ",第二大的值" + arr[1]);
	}


	/**
	 * 计算出两个最大值
	 * 
	 * @param arr
	 * @return
	 */
	private static void countMax(int[] a) {
		// 冒泡排序
		int temp = 0;
		for (int i = 0; i < a.length; i++) {
			for (int j = 0; j < a.length - i - 1; j++) {
				if (a[j] < a[j + 1]) { // 把这里改成大于,就是升序了
					temp = a[j];
					a[j] = a[j + 1];
					a[j + 1] = temp;
				}
			}
		}
	}


	// 输入整形数组
	private static int[] inputArr() {
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入整形数组的长度:");
		int i = scanner.nextInt();
		int arr[] = new int[i];
		System.out.println("请输入整形数组的元素:");
		for (int j = 0; j < arr.length; j++) {
			int str = scanner.nextInt();
			// System.out.println(arr[j]+"----"+str);
			arr[j] = str;
		}
		scanner.close();
		return arr;
	}
}

</pre><span style="font-size:18px;">4、回文数字判断。题目描述:    有这样一类数字,他们顺着看和倒着看是相同的数,例如:121,656,2332等,这样的数字就称为:回文数字。编写一个函数,判断某数字是否是回文数字。    要求实现方法:public String isPalindrome(String strIn);【输入】strIn: 整数,以字符串表示;【返回】true: 是回文数字;              false: 不是回文数字;【注意】只需要完成该函数功能算法,中间不需要有任何IO的输入输出</span><pre name="code" class="java">import java.util.Scanner;


public class Palindrome {


	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		System.out.println("请输入一个整形数字:");
		String str = in.next();
		if (isPalindrome(str)) {
			System.out.println(str + "--是回文数字");
		} else {
			System.out.println(str + "--不是回文数字");
		}
		in.close();
	}


	/**
	 * 判断是否为回文数字
	 * 
	 * @param str
	 * @return
	 */
	private static boolean isPalindrome(String str) {
		boolean result = false;
		System.out.println("str长度---" + str.length());
		for (int i = 0; i <= str.length() / 2 - 1; i++) {
			if (str.charAt(i) == str.charAt(str.length() - i - 1)) {
				result = true;
			}else {
				result = false;
			}
		}
		return result;
	}


}


5、要求:随机打印50个随机(4-10长度)的字符串,要求字符串包含的范围是所有的英文字母包含大小写和数字,按照编码顺序排序,每行打印4个,要求首字符对齐.
import java.util.ArrayList;
import java.util.List;
import java.util.Random;


public class RandomStr {


	/**
	 * @param args
	 */
	public static void main(String[] args) {
		List<String> arrayStr = new ArrayList<String>();
		for (int i = 0; i < 50; i++) {
			Random random = new Random();
			// 0-6
			int nextInt = random.nextInt(7);
			int strlen = nextInt + 4;
			// 打印出随机数
			String randomStr = randomStr(strlen);
			// System.out.println("打印出来的字符串:" + randomStr);
			arrayStr.add(randomStr);
		}
		int count = 0;
		for (String str : arrayStr) {
			System.out.print(str + " ");
			if (count % 4 == 0) {
				// 换行
				System.out.println();
			}
			count++;
		}
	}


	/**
	 * 打印出随机的字符串
	 * 
	 * @param strlen
	 * @return
	 */
	private static String randomStr(int strlen) {
		char[] str = new char[strlen];
		int i = 0;
		while (i < strlen) {
			// 生成0-3的随机数
			int f = new Random().nextInt(4);
			if (f == 0) {
				str[i] = (char) ('a' + Math.random() * 26);
			} else if (f == 1) {
				str[i] = (char) ('A' + Math.random() * 26);
			} else {
				str[i] = (char) ('0' + Math.random() * 10);
			}
			i++;
		}


		return new String(str);
	}


}


6.手动输入一个字符串,仅限小写字母,统计并输出每个字符在字符串中出现的次数,并输出。提示(可以用Map)
实例:
输入:aaabbbccc
输出:a 3
      b 3
      c 3

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;


public class NumberOfElement {


	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		System.out.println("请输入的一组小写字符串:");
		String str = in.next();
		in.close();
		// 正则运算
		String reg = "^[a-z]*$";
		if (str.matches(reg)) {


			Map<Character, Integer> charCount = getCharCount(str);
			// 遍历map
			for (Map.Entry<Character, Integer> e : charCount.entrySet()) {
				System.out.println(e.getKey() + " " + e.getValue());
			}
		}else {
			System.out.println("您输入的字符串不符合要求");
		}
	}


	private static Map<Character, Integer> getCharCount(String str) {
		Map<Character, Integer> map = new HashMap<Character, Integer>();
		char[] array = str.toCharArray();
		for (int i = 0; i < array.length; i++) {
			if (!map.containsKey(array[i])) {
				map.put(array[i], 1);
			} else {
				map.put(array[i], map.get(array[i]) + 1);
			}
		}
		return map;
	}


}


7、要求实现方法public String addTwoBigNumber(String s1,string s2)
 大数相加,注意处理异常

import java.math.BigInteger;
import java.util.Scanner;


public class BigNumAdd {


	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		System.out.println("请输入第一个大数:");
		String str1 = in.next();
		System.out.println("请输入第二个大数:");
		String str2 = in.next();
		in.close();
		if (isBigNumber(str1) &&isBigNumber(str2)) {
			String bigNumber = addTwoBigNumber(str1, str2);
			System.out.println("两个大数相加的结果为:" + bigNumber);
		}else {
			System.out.println("输入错误!");
		}
	}


	/**
	 * 大数相加
	 * 
	 * @param s1
	 * @param s2
	 * @return
	 */
	public static String addTwoBigNumber(String s1, String s2) {
		BigInteger bt1 = new BigInteger(s1);
		BigInteger bt2 = new BigInteger(s2);
		return bt1.add(bt2).toString();
	}
	/**
	 * 判断一个字符串是否为大数
	 * @param str
	 * @return 
	 */
	public static boolean isBigNumber(String str) {
		boolean result = false;
		String reg = "[0-9]*$";
		if (str.matches(reg)) {
			result = true;
		} else {
			result = false;
		}
		return result;
	}
}

8、比较二维数组列最小值,组成一个新数组返回。(实现核心算法,不需要使用IO)

输入:intArr = { {5,6,1,16},{7,3,9}}

输出:intArrs ={1,3}


import java.util.Arrays;
import java.util.Scanner;




public class CountMin {


	/**
	 * @param args
	 */
	public static void main(String[] args) {
		int[][] arr = {
  {5,6,1,16},{7,3,9},{5,7,12}};
		int[] colmin = getColmin(arr);
		System.out.println(Arrays.toString(colmin));
	}


	private static int[] getColmin(int[][] arr) {
		int minArr[] = new int[arr.length];
		for (int i = 0; i < arr.length; i++) {
			int tmp[] = arr[i];
			// 数组的排序,从小到大
			Arrays.sort(tmp);
			minArr[i] = tmp[0];
		}
		return minArr;
	}


}


9. 输入:a aa,cat tiger.123dd 
输出: tiger
功能描述:键盘输入一句话
输出一句话中最常的单词,如果最长的出现多次&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值