9. 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
1 public static intsumNum(){2 Scanner sc = newScanner(System.in);3 System.out.println("请输入a的值:");4 int a =Integer.parseInt(sc.next());5 System.out.println("请输入个数:");6 int count =Integer.parseInt(sc.next());7 int temp = 0;8 int sum = 0;9 for (int i = 1; i <=count ; i++) {10 temp = temp*10+a;11 sum+=temp;12 }13 returnsum;14 }
View Code
运行结果:
10.一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程 找出1000以内的所有完数。
1 public staticString wanshu(){2 StringBuilder sb = newStringBuilder();3 for (int i = 1; i <1000 ; i++) {4 int sum = 0;5 for(int j = 1;j<=i/2;j++){6 if(i%j==0){7 sum+=j;8 }9 }10 if(i ==sum){11 sb = sb.append(i+",");12 }13 }14 returnsb.toString();15 }
View Code
运行结果:
11. 一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?
1 public static voidfreefall(){2 double h = 100;3 double sumh = 100;4 for (int i = 0; i < 10; i++) {5 h/=2;6 sumh+=h;7 }8 System.out.println("第10次落地时共经过:"+sumh+"米");9 System.out.println("第10次反弹高度为:"+h+"米");10 }
View Code
运行结果:
12. 企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
1 public static voidbonus(){2 System.out.println("请输入当月利润:");3 Scanner sc = newScanner(System.in);4 double i =Double.parseDouble(sc.next());5 if(i<=100000){6 System.out.println("应发放奖金数:"+i*0.1);7 }else if(i>100000&&i<=200000){8 System.out.println("应发放奖金数:"+(100000*0.1+(i-100000)*0.75));9 }else if(i>200000&&i<=400000){10 System.out.println("应发放奖金数:"+(100000*0.1+100000*0.75)+(i-200000)*0.05);11 }else if(i>400000&&i<=600000){12 System.out.println("应发放奖金数:"+(100000*0.1+100000*0.75+200000*0.05)+(i-400000)*0.03);13 }else if(i>600000&&i<=1000000){14 System.out.println("应发放奖金数:"+(100000*0.1+100000*0.75+200000*0.05+200000*0.03)+(i-600000)*0.015);15 }else{16 System.out.println("应发放奖金数:"+(100000*0.1+100000*0.75+200000*0.05+200000*0.03+400000*0.015)+(i-1000000)*0.01);17 }18 }
View Code
运行结果:
13. 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
1 public static voidwanquan(){2 double temp = 0;3 for (int i = 0; i < 999; i++) {4 temp = (int)Math.sqrt(i+100);5 if(temp*temp == 100+i){6 temp = (int)Math.sqrt(i+268);7 if(temp*temp == i+268){8 System.out.println("这个数是"+i);9 }10 }11 }12
13 }
View Code
运行结果:
14. 输入某年某月某日,判断这一天是这一年的第几天?
1 public static intday(){2 Scanner sc = newScanner(System.in);3 String[] arrdate = new String[3];4 int i = 0;5 System.out.println("请输入日期:");6 //日期输入格式为yyyy-mm-dd,假定日期输入为正确数据
7 String date =sc.next();8 StringTokenizer st = new StringTokenizer(date, "-");9 while(st.hasMoreTokens()){10 arrdate[i] =st.nextToken();11 i++;12 }13 String year = arrdate[0].charAt(0) == 0?arrdate[0].substring(1):arrdate[0];14 String month = arrdate[1].charAt(0) == 0?arrdate[1].substring(1):arrdate[1];15 String day = arrdate[2].charAt(0) == 0?arrdate[2].substring(1):arrdate[2];16 int y =Integer.parseInt(year);17 int m =Integer.parseInt(month);18 int d =Integer.parseInt(day);19 if(m == 1){20 returnd;21 }22 if(m == 2){23 return 31+d;24 }25 if(y%4==0&&y%100!=0||y%400==0){26 d++;27 }28 switch(m){29 case 3:return 59+d;30 case 4:return 90+d;31 case 5:return 120+d;32 case 6:return 151+d;33 case 7:return 181+d;34 case 8:return 212+d;35 case 9:return 243+d;36 case 10:return 273+d;37 case 11:return 304+d;38 case 12:return 334+d;39 default:return -1;40 }41 }
View Code
运行结果: