HUAWEI JAVA 机试题整理

Q1


/***
 * 输入字符串长度len1,字符串s1,字符串长度len2,字符串s2。
 * 从后向前比较,以最短字符串为标准,输出不同的元素的个数。
 * 例如:  输入:s1="1,3,5"   len1=3        s2="2,4,1,7,5"   len2=5 
 * 输出:2 
 * 函数原型
 * public int getDiffNum(int len1, String s1, int len2, String s2
 * @author boo
 */
public class first {
	public static void main(String[]args){
		String s1="1,3,5" ;
		int len1=3 ;
		String s2="2,4,1,7,5";
		int len2=5 ;
		int num=  getDiffNum(len1,s1,len2,s2);
		System.out.println("num is:"+num);
	}
	public static int getDiffNum(int len1, String s1, int len2, String s2){
		int len=0;
		int count=0;
		String[] str1=s1.split(",");
		String[] str2=s2.split(",");
		if(len1>len2){
			 len=len2;
		}
		else{
			len=len1;
		}
		for(int i=len-1;i>0;i--){
			if(!str1[i].equals(str2[i])){
				count++;
				System.out.println("str:"+str1[i]);
				System.out.println("ss:"+str2[i]);
			}
		}
		return count;		
	}
}


Q2

/***
 * 输入字符串长度,字符串,计数m。
 * 从前往后计数,当数到m个元素时,m个元素出列,同时将该元素赋值给m,
 * 然后从下一个数计数循环,直到所有数字都出列,给定的数全部为大于0的数字。输出出队队列。
 * 例如:  输入:len=4    str="3,1,2,4"   m=7   
 * 输出:2,3,1,4  
 * 函数原型
 * public String getOutString(int len, String str, int m)
 * @autho
 */
import java.util.ArrayList;

public class second {
	public static void main(String[] args){
		int len=4;
		String str="3,1,2,4" ;
		int m=7 ;
		String str1=getOutString(len,  str,  m); 
		System.out.println("result:"+str1);
	}
public static String getOutString(int len,String str,int m){
	String str1="";
	String[] s=str.split(",");
	
	ArrayList<String> list=new ArrayList<String>();
	for(int i=0;i<len;i++){
		list.add(s[i]);
		System.out.println("-------->"+list.get(i));
	}
	for(int j=0;j<len;j++){
		int m1=7;
		int t=(m1-1)%list.size();
		System.out.println("========>"+t);
		str1+=list.get(t)+",";
		System.out.println("str1:"+str1);
		m=Integer.parseInt(list.get(t));
		m1=m+t;
		System.out.println("++++++++>"+m);
		list.remove(t);	
	}
	return str1;
	}
}

Q3


/****
 *输入一个表达式,没有括号,数字小于0-9之间,输出计算结果,所有的中间结果化为整形。
 *例如:  输入:3+8×2/9-2  
 *输出:2  
 *函数原型 
 *view plain
 *01. public int getMyRet(String str)  
 *@author BOO
 */
public class third {
	public static void main(String[] args){
		String str="3+8×2/9-2";
		int num=getMyRet( str);
		System.out.println("num="+num);
	}
	public static int getMyRet(String str){
		char[] c=str.toCharArray();
		int len=c.length;
		int sum=0;
		int left=0;
		int right=0;
		for(int i=0;i<len;i++){
			System.out.println("c:"+c[i]);
		}
		System.out.println("lenth="+len);
		String[] s=new String[len];
		for(int j=0;j<len;j++){
			//important change
			s[j]=Character.toString(c[j]);
			System.out.println("s="+s[j]);
		}
		for(int i=0;i<c.length;i++){
			
			if("×".equals(s[i])){
				System.out.println("i="+i);
				left=Integer.parseInt(s[i-1]);
				System.out.println("left="+left);
				
				right=Integer.parseInt(s[i+1]);
				System.out.println("right="+right);
				sum=left*right;
				System.out.println("sum="+sum);
				}
			if("/".equals(s[i])){
				System.out.println("i="+i);
				right=Integer.parseInt(s[i+1]);
				System.out.println("right="+right);
				sum=sum/right;
				System.out.println("sum="+sum);
			}
		}
		for(int i=0;i<s.length;i++){
			if("+".equals(s[i])){
				System.out.println("i="+i);
				left=Integer.parseInt(s[i-1]);
				System.out.println("left="+left);
				sum=left+sum;
				System.out.println("sum="+sum);
			}
			if("-".equals(s[i])){
				System.out.println("i="+i);
				right=Integer.parseInt(s[i+1]);
				System.out.println("right="+right);
				sum=sum-right;
				System.out.println("sum="+sum);	
			}
		}	
		return sum;
	}
}

Q4

/****
 * 找出字符串中出现次数最多的字母和出现的次数
 * @author BOO
 */
import java.util.ArrayList;
import java.util.Collections;


public class four {
public static void main(String[]args){
String input="adadfdfseffserfefseetsdg";
char[] chars = input.toCharArray();

String[] s=new String[chars.length];
for(int j=0;j<chars.length;j++){
s[j]=Character.toString(chars[j]);
}
ArrayList<String> list=new ArrayList<String>(chars.length);
for(int i=0;i<s.length;i++){
list.add(s[i]);
}
System.out.println(list);
//paixu
Collections.sort(list);

System.out.println(list);
ArrayList as=new ArrayList();
System.out.println("---as:"+as);

for(int k=0;k<list.size();k++){
if(!as.contains(list.get(k))){
as.add(list.get(k));
System.out.println("---as:"+as);
} 
}
int[] n=new int[as.size()];
for(int j=0;j<as.size();j++){
int begin=list.indexOf(as.get(j));
int last=list.lastIndexOf(as.get(j));
int num=last-begin+1;
System.out.println("begin="+begin);
System.out.println("last="+last);
System.out.println("num="+num);
n[j]=num;
System.out.println("n="+n[j]);
}
int max=0;
int m=0;
for(int i=0;i<n.length;i++){
if(n[i]>max){
max=n[i];
m=i;

} 
} 
System.out.println("max="+max);
System.out.print("m="+m+"\n");
System.out.println("max="+max+";the string is:"+as.get(m));
} 
}




Q5


/*****
 * 截取字符串,含有汉字和字母,不能截半个汉字
 * @author BOO
 */

import java.io.UnsupportedEncodingException;

public class five {
	public static void main(String[] args){
		String s="我ABC汉字DEF";
		int n=4;
		try {
			String str=cutString(s,n);
			System.out.println(str);
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public static String cutString(String s, int n) throws UnsupportedEncodingException {
		// TODO Auto-generated method stub
		if(s!=null&&"".equals(s)){
			
				s=new String(s.getBytes(),"GBK");
				
			}
			StringBuffer buffer=new StringBuffer();
				if (n!=0&&n<s.getBytes("GBK").length){
				char c;
				for(int i=0;i<n;i++){
					c=s.charAt(i);
					System.out.println("char c="+c);
					buffer.append(c);
					
					if(five.isChinese(c)){
						--n;
					}
				}
				}
				return buffer.toString();	
		}
		

	private static boolean isChinese(char c) throws UnsupportedEncodingException {
		// TODO Auto-generated method stub
		if(String.valueOf(c).getBytes("GBK").length>1){
			return true;
		}
		else{
		return false;}
	}
}

Q6


/****
 * 拆分字符串,字符串中含有逗号和数字,对数字排序并输出
 * @author BOO
 */
import java.util.ArrayList;
import java.util.Arrays;

public class six {
	public static void main(String[] args){
		String s="123,45,25,85";
		String[] str=s.split(",");
		for(int i=0;i<str.length;i++){
			System.out.println(str[i]);
		}
		
	int[] num=new int[str.length];
		for(int i=0;i<num.length;i++){
			num[i]=Integer.parseInt(str[i]);
			System.out.println("list-------->"+num[i]);
		}
		Arrays.sort(num);
		
		for(int j=0;j<num.length;j++){
			System.out.println(num[j]);
			//System.out.println("de"+num[num.length-1-j]);
		}
	}
}


Q7


/***
 * 选秀节目打分,分为专家评委和大众评委,score[] 数组里面存储每个评委打的分数,
 * judge_type[] 里存储与 score[] 数组对应的评委类别,judge_type[i] == 1,表示专家
 *评委,judge_type[i] == 2,表示大众评委,n表示评委总数。
 *打分规则如下:专家评委和大众评委的分数先分别取一个平均分(平均分取整),
 *然后,总分 = 专家评委平均分  * 0.6 + 大众评委 * 0.4,总分取整。
 *如果没有大众评委,则 总分 = 专家评委平均分,总分取整。函数最终返回选手得分。
 *函数接口   int cal_score(int score[], int judge_type[], int n) 
 * @author BOO
 */
public class seven {
	public static void main(String[] args){
		 int[] score=new int[]{60,80,75,50,49};
		 int[] judge=new int[]{1,1,1,2,2};
		 int n=5;
		 int sc=cal_score(score,judge,n);
		 System.out.println("sc="+sc);	 
	}
	public static  int cal_score(int score[], int judge_type[], int n){
		int sumZ=0,nZ=0;
		int sumD=0,nD=0;
		int aveZ=0;
		int aveD=0;
		int all=0;
		for(int i=0;i<n;i++){
			if(judge_type[i]==1){
				System.out.println("the "+i+"is perfesser");
				sumZ+=score[i];
				nZ++;
				System.out.println("score is="+sumZ+",the number is="+nZ);
			}
			
			else if(judge_type[i]==2){
				System.out.println("the"+i+"is dazhong");
				sumD+=score[i];
				nD++;
				System.out.println("score is="+sumD+",the number is="+nD);
			}
			else{
				System.out.println("maybe wrong");
			}
		}
		if(nZ!=0&&nD!=0){
		aveZ=sumZ/nZ;
		aveD=sumD/nD;
		all=(int) (aveZ*0.6+aveD*0.4);
	}else if(nD==0){
			all=aveZ;
		}
		return all;	
	} 
}

Q8

/****
 * 给定一个数组input[] ,如果数组长度n为奇数,则将数组中最大的元素放到 output[] 数组最中间的位置,
 * 如果数组长度n为偶数,则将数组中最大的元素放到 output[] 数组中间两个位置偏右的那个位置上,
 * 然后再按从大到小的顺序,依次在第一个位置的两边,按照一左一右的顺序,依次存放剩下的数。
 * 例如:input[] = {3, 6, 1, 9, 7}   output[] = {3, 7, 9, 6, 1};  input[] = {3, 6, 1, 9, 7, 8}    output[] = {1, 6, 8, 9, 7, 3}
 * 函数接口   void sort(int input[[, int n, int output[])
 * @author BOO
 */
public class eight {
	public static void main(String[] args){
	int[] input=new int[]{3,6,1,9,7,8};
	int n=6;
	int[] output=new int[6];
	sort(input,n,output);
	}


	private static void sort(int input[], int n, int output[]) {
		// TODO Auto-generated method stub
		int t=n/2;
		int tt=(n-1)/2;
		int[] os=new int[t];
		int[] js=new int[tt];
		Arrays.sort(input);
		for(int i=0;i<n;i++){
			System.out.println("input[]="+input[i]);
		}
		
		if(n%2==0){
			output[t]=input[n-1];
			System.out.println("zhongjian ou:"+output[t]);
			for(int i=0;i<n;i=i+2){
				os[i/2]=input[i];
				System.out.println("os"+os[i/2]);
			}
			for(int i=1;i<n-1;i=i+2){
				js[i/2]=input[i];
				System.out.println("js"+js[i/2]);
			}
			for(int i=0;i<t;i++){
				output[i]=os[i];
				System.out.println("out"+output[i]);
			}
			for(int i=0;i<tt;i++){
				output[n-1-i]=js[i];
				System.out.println("put"+output[n-1-i]);
			}
			for(int i=0;i<n;i++){
				System.out.println(output[i]);
			}	
		}else if(n%2==1){
			//jishu
			output[t]=input[n-1];
			System.out.println("zhongjian"+output[t]);
			for(int i=0;i<n-1;i=i+2){
				
					 os[i/2]=input[i];
					 System.out.println("---"+os[i/2]);
			}
			for(int i=1;i<n-1;i=i+2){
				js[i/2]=input[i];
				System.out.println(">>>>"+js[i/2]);
			}	
			for(int i=0;i<tt;i++){
				output[i]=js[i];
				System.out.println("out"+output[i]);
			}	
			for(int i=0;i<t;i++){
				output[n-1-i]=os[i];
				System.out.println("put"+output[n-1-i]);	
			}
			for(int i=0;i<n;i++){
				System.out.println("output"+output[i]);
			}
		}
	}
}

Q9


/*****
 * 操作系统任务调度问题。操作系统任务分为系统任务和用户任务两种。
 * 其中,系统任务的优先级 < 50,用户任务的优先级 >= 50且 <= 255。优先级大于255的为非法任
 *务,应予以剔除。现有一任务队列task[],长度为n,task中的元素值表示任务的优先级,数值越小,优先级越高。
 *函数scheduler实现如下功能,将task[] 中的任务按照系统任务、用户任务依次存放到 system_task[] 数组
 *和 user_task[] 数组中(数组中元素的值是任务在task[] 数组中的下标),并且优先级高的任务排在前面,
 *优先级相同的任务按照入队顺序排列(即先入队的任务排在前面),数组元素为-1表示结束。
 *  例如:task[] = {0, 30, 155, 1, 80, 300, 170, 40, 99}   
 *  system_task[] = {0, 3, 1, 7, -1}    user_task[] = {4, 8, 2, 6, -1}
 * 函数接口    void scheduler(int task[], int n, int system_task[], int user_task[])
 * @author BOO
 */
public class nine {
	public static void main(String[]args){
		int[] task=new int[]{0, 30, 155, 1, 80, 300, 170, 40, 99} ;
		int n=9;
		int[] system_task=new int[n];
		int[] user_task=new int[n];
		scheduler( task, n,system_task, user_task);
		
	}

	private static void scheduler(int[] task, int n, int[] system_task,
			int[] user_task) {
		// TODO Auto-generated method stub
		int sys = 0;
		int user = 0;
		for (int i = 0; i < n; i++) {
			int min = 0;
			for (int j = 0; j < n; j++) {
				if (task[min] > task[j])
					min = j;
				System.out.println("task[]="+task[min]+"min="+min+"j"+j);
			}

			if (task[min] < 50) {
				system_task[sys] =min;
				System.out.println("system_task[sys]="+system_task[sys]);
				sys++;
				System.out.println("sys="+sys);

			} else if (task[min] <= 255) {
				user_task[user] = min;
				System.out.println("user="+user_task[user]);
				user++;
			}
			task[min] = 300;
		}
		system_task[sys] = -1;
		user_task[user] = -1;
		for (int i = 0; i < sys+1; i++) {
			System.out.print(system_task[i] + ",");
		}
		System.out.println();
		for (int i = 0; i < user+1; i++) {
			System.out.print(user_task[i] + ",");
		}
		// System.out.println(user_task.toString());	
	}
}

Q10


/****
 * 给出一个数组判断数组中2的n次方的个数,并得到该数及其下标
 * @author BOO
 */
public class ten {
	public static void main(String[] args){
		/*
		for(int i=0;i<args.length;i++){
			System.out.println("arg:="+args[i]);
		}
		*/
		//int[] num=new int[]{1,5,9,4,8,11,15};
		int[] num={1,5,9,4,8,11,15};
		int sum=0;
		for(int i=0;i<num.length;i++){
			/*
			 * ((num[i]&(num[i]-1))==0)来判断是否为2的幂次方
			 */
			if((num[i]&(num[i]-1))==0){
				System.out.println(num[i]+" is 2 的幂次方");
				sum++;
				System.out.println("i="+i);
				System.out.println("sum="+sum);	
			}	
		}
		System.out.println("sum="+sum);
	}
}

Q11


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class testone {
	public static void main(String[] args){
		 testone one=new testone();
		System.out.println("please input a number");
		one.get();
	}
	private void get() {
		// TODO Auto-generated method stub
		String s="";
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		try {
			s=br.readLine();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		int a=Integer.parseInt(s);
		System.out.println("a*a="+a*a);	
	}
}

Q12


Q13

import java.util.Random;

/****
 * 生成100个的随机数并求出其中的素数
 * @author BOO
 */
public class testthree {
	public static void main(String[] args){
		
	int[] a=new int[101];
	
	for(int i=0;i<101;i++){
		a[i]=(int)(Math.random()*100);
		System.out.println("----"+a[i]);
		if(a[i]==1){
			System.out.println("------------------"+a[i]);
		}else
		isSushu(a[i]);
	}
	}
	private static void isSushu(int i) {
		// TODO Auto-generated method stub
		// 1 不是素数也不是合数
		int j,k;
			k=(int)Math.sqrt(i);
			for(j=2;j<=k;j++){
				if(i%j==0)
					break;
			} 
			if(j>k)
				System.out.println("su shu is:"+i);	
		}
	}


Q14


/****
 * 产生100以内的随机数,计算随机数出现最多的次数,并在出现最多的次数中找出最大的数
 * @author BOO
 */
import java.util.Arrays;

public class tstthree {
	private int[] num;
	public tstthree(int m){
		this.num=new int[m];
		System.out.println(m+"suijishu is:");
		for(int i=0;i<m;i++){
			num[i]=(int)(Math.random()*100);
			System.out.println(num[i]+"");
		}
		//System.out.println();
		this.getTop(this.num);
		this.findMax(this.num);
	}
	private void findMax(int[] num2) {
		// TODO Auto-generated method stub
		int maxCount=0;
		int maxNum=0;
		int[] count=new int[101];
		 for(int i=0;i<num2.length&&num2[i]>0;i++){
			 count[num2[i]]++;
			 System.out.println("count is :"+count[num2[i]]);
			 if((count[num2[i]]>maxCount)||(count[num2[i]]==maxCount&&maxNum<num2[i])){
				 maxCount=count[num2[i]];
				 maxNum=num2[i];
			 }
		 }
		System.out.println("the max count number is:"+maxCount+";the max value is:"+maxNum); 
		
	}
	private void getTop(int[] num2) {
		// TODO Auto-generated method stub
		Arrays.sort(num2);
		System.out.println("the num of sort:");
		for(int i=0;i<num2.length;i++){
			System.out.println(num2[i]);
		}
	}
	public static void main(String[] args){
		new tstthree(30);
	}
}





已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页