nsneyakvgc 发表于 2016-6-6 06:24:23

华为机试

华为机试


      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 >= 'a' && s1 <= 'z'){
s1 -= 32;//小写字符转为大写字符需要-32并强制类型转换为char
}
}
if(s1 == ' '){
if(s1 >= 'a' && s1 <= 'z'){
s1 -= 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 == s1){
count ++;
}
}
if(max < count){
max = count;
pos = s1 - '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;
}
avg = (double)sum/iLen;
for(int i = 0; i < iLen; i ++){
if(iArray >= avg){
count ++;
}
}
}
return count;
}
}

   
页: [1]
查看完整版本: 华为机试