华为机试

华为机试

    9.17下午两点在大活开了华为宣讲会,鉴于简历已投,又不是现场笔试就没有跟过去听,xx和oo去了,xx还抽了个三等奖,貌似是什么上网设备,没搞清楚什么东西。

    9.18半夜两点多收到邀请机试的短信,幸亏早上起得早,还好没错过。10:00开始的机试,一共四道题,只需做三道。题目很简单,相信只要学过编程的人都会做,只是输入输出比较变态,多试几次就会通过。

    做的过程中需要注意:若用java语言,则类名必须为Main

 

题目 A: 首字母大写

时间限制: 10 Sec  内存限制: 128 MB
提交: 623  解决: 101
[提交 ][状态 ][讨论版 ]

题目描述

请编写一个main函数,它的功能是:将字符串中的所有单词的首字母改为大写,字符串中以空格分割各个单词,其他字符不变。

输入

一个字符串。

输出

所有单词的首字母改为大写的字符串。

样例输入

this is a Dog.

样例输出

This Is A Dog.

提示

注意代码规范性。

地区

西安研究所

产品线

公共

阶段

招聘

难度

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,且只包含数字的字符串

输出

输出该数字及个数做成的字符串,格式:"数字+逗号+个数"。注意逗号为英文半角

样例输入

463618964

样例输出

6,3

提示

 

地区

西安研究所

产品线

公共

阶段

招聘

难度

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有关的数字个数。

样例输入

20

样例输出

3

提示

只需要输出满足条件的数字的个数,不需要将这些数字输出

地区

西安研究所

产品线

公共

阶段

招聘

难度

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:数组长度

输出

大于等于所有元素平均值的元素的个数

样例输入

1,2,3,4,5

样例输出

3

提示

只需要完成该函数功能算法,中间不需要有任何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;
	}

}
 

 

你可能感兴趣的:(华为)