HUAWEI JAVA 机试题整理

来源:互联网 发布:男孩被父砍 知乎 编辑:程序博客网 时间:2024/06/03 17:34

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 changes[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);//paixuCollections.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 blocke.printStackTrace();}}public static String cutString(String s, int n) throws UnsupportedEncodingException {// TODO Auto-generated method stubif(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 stubif(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 stubint 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){//jishuoutput[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 stubint 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 stubString s="";BufferedReader br=new BufferedReader(new InputStreamReader(System.in));try {s=br.readLine();} catch (IOException e) {// TODO Auto-generated catch blocke.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]);}elseisSushu(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 stubint 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 stubArrays.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);}}