华为机试
9.17下午两点在大活开了华为宣讲会,鉴于简历已投,又不是现场笔试就没有跟过去听,xx和oo去了,xx还抽了个三等奖,貌似是什么上网设备,没搞清楚什么东西。
9.18半夜两点多收到邀请机试的短信,幸亏早上起得早,还好没错过。10:00开始的机试,一共四道题,只需做三道。题目很简单,相信只要学过编程的人都会做,只是输入输出比较变态,多试几次就会通过。
做的过程中需要注意:若用java语言,则类名必须为Main
题目 A: 首字母大写
时间限制: 10 Sec 内存限制: 128 MB
提交: 623 解决: 101
[提交 ][状态 ][讨论版 ]
题目描述
请编写一个main函数,它的功能是:将字符串中的所有单词的首字母改为大写,字符串中以空格分割各个单词,其他字符不变。
输入
一个字符串。
输出
所有单词的首字母改为大写的字符串。
样例输入
样例输出
提示
注意代码规范性。
地区
西安研究所
产品线
公共
阶段
招聘
难度
1级
答案
import java.util.Scanner; public class Main { public static void main(String[] args){ Main m = new Main(); Scanner sca = new Scanner(System.in);//注意java获取输入的方式 String s = sca.nextLine();//获取一行 String r = m.change(s); System.out.println(r); } public String change(String s){ char[] s1 = s.toCharArray(); for(int i = 0; i < s1.length; i ++){ if(i == 0){ if(s1[0] >= 'a' && s1[0] <= 'z'){ s1[0] -= 32;//小写字符转为大写字符需要-32并强制类型转换为char } } if(s1[i] == ' '){ if(s1[i + 1] >= 'a' && s1[i + 1] <= 'z'){ s1[i + 1] -= 32; } } } return new String(s1); } }
题目 B: 统计出现最多的数字
时间限制: 1 Sec 内存限制: 128 MB提交: 931 解决: 156
[ 提交 ][ 状态 ][ 讨论版 ]
题目描述
输入一个长度小于等于256,大于0,且只包含数字的字符串,统计其中出现最多数字的个数。
输出该数字及个数做成的字符串,格式:"数字+逗号+个数"。
输入
输入一个长度小于等于256,大于0,且只包含数字的字符串
输出
输出该数字及个数做成的字符串,格式:"数字+逗号+个数"。注意逗号为英文半角
样例输入
样例输出
提示
地区
西安研究所
产品线
公共
阶段
招聘
难度
2级
答案
import java.util.Scanner; public class Main { public static void main(String[] args){ Main m = new Main(); Scanner sca = new Scanner(System.in); String s = sca.next(); String r = m.getR(s); System.out.println(r); } public String getR(String s){ char[] s1 = s.toCharArray(); int count = 1; int max = 0; int pos = 0; for(int i = 0; i < s1.length; i ++){ count = 1; for(int j = i + 1; j < s1.length; j ++){ if(s1[j] == s1[i]){ count ++; } } if(max < count){ max = count; pos = s1[i] - '0'; //字符转为int需要-48或者-'0' } } String s2 = String.valueOf(pos) + "," + String.valueOf(max); return s2; } }
题目 C: 挑7
时间限制: 1 Sec 内存限制: 128 MB提交: 542 解决: 85
[ 提交 ][ 状态 ][ 讨论版 ]
题目描述
输出7和7的倍数,还有包含7的数字(如17,27,37...70,71,72,73...)的个数
输入
一个整数N。(N不大于30000)
输出
不大于N的与7有关的数字个数。
样例输入
样例输出
提示
只需要输出满足条件的数字的个数,不需要将这些数字输出
地区
西安研究所
产品线
公共
阶段
招聘
难度
1级
答案
import java.util.Scanner; public class Main { public static void main(String[] args){ Main m = new Main(); Scanner sca = new Scanner(System.in); int n = sca.nextInt(); int r = m.getR(n); System.out.println(r); } public int getR(int n){ int count = 0; String s = null; for(int i = 1; i <= n; i ++){ if(i % 7 == 0){ count ++; }else{ s = String.valueOf(i); if(s.contains("7")){ count ++; } } } return count; } }
题目 D: 统计大于均值的数字个数
时间限制: 10 Sec 内存限制: 128 MB提交: 2212 解决: 392
[ 提交 ][ 状态 ][ 讨论版 ]
题目描述
编写一个函数,统计出具有n个元素的一维数组中大于等于所有元素平均值的元素的个数并返回。
要求实现函数: int GetByondAvgNumber(int iArray[], int iLen);
输入
int GetByondAvgNumber(int iArray[], int iLen) 【输入】iArray:整数数组,空间已经开辟好;iLen:数组长度
输出
大于等于所有元素平均值的元素的个数
样例输入
样例输出
提示
只需要完成该函数功能算法,中间不需要有任何IO的输入输出提示。请提交完整代码。
地区
北京研究所
产品线
公共
阶段
招聘
难度
1级
答案:
public class Main { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Main m = new Main(); int[] iArray = {1, 2, 3, 4, 5}; int iLen = iArray.length; int a = m.GetByondAvgNumber(iArray, iLen); System.out.println(a); } int GetByondAvgNumber(int iArray[], int iLen){ int sum = 0; double avg = 0; int count = 0; if(iArray != null){ for(int i = 0; i < iLen; i ++){ sum += iArray[i]; } avg = (double)sum/iLen; for(int i = 0; i < iLen; i ++){ if(iArray[i] >= avg){ count ++; } } } return count; } }