2017.8.21每天五个编程题(七、八)

来源:互联网 发布:上海数据交易中心工资 编辑:程序博客网 时间:2024/06/05 22:43

第三十六题:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数

import java.util.Scanner;public class lianxi36 {public static void main(String[] args) {   int N =10;   int[] a = new int[N];   Scanner s = new Scanner(System.in);   System.out.println("请输入10个整数:");   for(int i=0; i<N; i++) {    a[i] = s.nextInt();   }   System.out.print("你输入的数组为:");   for(int i=0; i<N; i++) {     System.out.print(a[i] + " ");   }   System.out.print("\n请输入向后移动的位数:");   int m = s.nextInt();   int[] b = new int[m];   for(int i=0; i<m; i++) {    b[i] = a[N-m+i];   }   for(int i=N-1; i>=m; i--) {   a[i] = a[i-m];   }   for(int i=0; i<m; i++) {    a[i] = b[i];   }System.out.print("位移后的数组是:");   for(int i=0; i<N; i++) {    System.out.print(a[i] + " ");   }}}


第三十七题:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。

package com.eightth.java;import java.lang.reflect.Array;import java.util.Arrays;import java.util.Scanner;public class Test37 {public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.print("请输入总人数:");int p = input.nextInt();boolean[] people = new boolean [p];for(int i = 0;i<people.length;i++){people[i] = true;}int t =0; int len = people.length;while(len>1){for(int i = 0;i<people.length;i++){if(people[i]){t++;}if(t==3){people[i] = false;len --;t=0;}}}System.out.println("现在的情况是:"+Arrays.toString(people));for(int i = 0; i<people.length;i++){if(people[i]){System.out.println("剩下的是第:"+(i+1)+"个人");}}}}

第四十题:字符串排序

public class lianxi40 {public static void main(String[] args) {   int N=5;   String temp = null;   String[] s = new String[N];   s[0] = "matter";   s[1] = "state";   s[2] = "solid";   s[3] = "liquid";   s[4] = "gas";   for(int i=0; i<N; i++) {    for(int j=i+1; j<N; j++) {     if(compare(s[i], s[j]) == false) {      temp = s[i];      s[i] = s[j];      s[j] = temp;     }    }   }    for(int i=0; i<N; i++) {    System.out.println(s[i]);   }}static boolean compare(String s1, String s2) {   boolean result = true;   for(int i=0; i<s1.length() && i<s2.length(); i++) {    if(s1.charAt(i) > s2.charAt(i)) {     result = false;     break;    } else if(s1.charAt(i) <s2.charAt(i)) {     result = true;     break;    } else {     if(s1.length() < s2.length()) {      result = true;     } else {      result = false;     }    }   }   return result;}}

第五十二题:

将一个键盘输入的数字转化成中文输出

(例如:输入:1234567 输出:一百二拾三万四千五百六拾七)

用java语言实现,,请编一段程序实现!

package com.eightth.java;import java.util.HashMap;import java.util.Map;import java.util.Scanner;public class MapTest {public static void main(String[] args) {Map<Object, String> map = new HashMap<Object, String>();map.put('1', "一");map.put('2', "二");map.put('3', "三");map.put('4', "四");map.put('5', "五");map.put('6', "六");map.put('7', "七");map.put('8', "八");map.put('9', "九");map.put('0', "零");map.put('.', "点");Scanner sc = new Scanner(System.in);System.out.println("请输入一串数字:");String a = sc.nextLine();System.out.println("转换成大写为:");String newS = "";char[] ch = a.toCharArray();for (int i = ch.length, s = 0; i > 0; i--, s++) {if (ch[s] == '零') {System.out.println("不能以零开头");break;}int num = 0;if (i == 9) {newS += map.get(ch[s]) + "亿";continue;}if (i > 5) {if (i % 4 == 0) {// 千num = 4;} else {num = i % 4;}} else {num = i % 6;}switch (num) {case 1:newS += map.get(ch[s]) + "";break;case 2:newS += map.get(ch[s]) + "拾";break;case 3:newS += map.get(ch[s]) + "百";break;case 4:newS += map.get(ch[s]) + "千";break;case 5:newS += map.get(ch[s]) + "万";break;}}System.out.println(newS);}}



原创粉丝点击