您的位置:首页 > 编程语言 > Java开发

java基础习题50道(三)

2017-07-28 08:57 357 查看
package com.oracle.day161105_java50;

/*

 * 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。

 * */

public class Demo11 {

public static void main(String[] args) {
// TODO Auto-generated method stub

int count = 0;
int n = 0;
for(int i=1;i<5;i++){
for(int j=1;j<5;j++){
if(j==i)
 continue;
for(int k=1;k<5;k++){
if(k!=i && k!=j){
n = i*100+j*10+k;
 System.out.print(n+" ");
 if((++count)%5==0)
 System.out.println();
}
}
}
}
System.out.println();
System.out.println("符合条件的数共:"+count+"个");
}

}

package com.oracle.day161105_java50;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

/*

 * 【程序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,求应发放奖金总数? 

程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。

 * */

public class Demo12 {

public static void main(String[] args) {
// TODO Auto-generated method stub

System.out.print("请输入当前利润:");
long profit = Long.parseLong(key_Input());
System.out.println("应发奖金:"+bonus(profit));
}
//接受从键盘输入的内容
private static String key_Input(){
String str = null;
BufferedReader bufIn = new BufferedReader(new InputStreamReader(System.in));
try{
str = bufIn.readLine();
}catch(IOException e){
e.printStackTrace();
}finally{
try{
bufIn.close();
}catch(IOException e){
e.printStackTrace();
}
}
return str;
}
//计算奖金
private static long bonus(long profit){
long prize = 0;
long profit_sub = profit;
if(profit>1000000){
profit = profit_sub-1000000;
profit_sub = 1000000;
prize += profit*0.01;
}
if(profit>600000){
profit = profit_sub-600000;
profit_sub = 600000;
prize += profit*0.015; 
}
if(profit>400000){
profit = profit_sub-400000;
profit_sub = 400000;
prize += profit*0.03;
}
if(profit>200000){
profit = profit_sub-200000;
profit_sub = 200000;
prize += prize*0.05;
}
if(profit>100000){
profit = profit_sub-100000;
profit_sub = 100000;
prize += profit*0.075;
}
prize += profit_sub*0.1;
return prize;

}

}

package com.oracle.day161105_java50;

/*

 * 

 * 【程序13】

题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

程序分析:在10万以内判断,先将该数加上100后再开方,

再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。

 * */

public class Demo13 {

public static void main(String[] args) {
// TODO Auto-generated method stub

int n=0;
for(int i=0;i<100001;i++){
if(isCompSqrt(i+100) && isCompSqrt(i+268)){
n = i;
break;
}
}
System.out.println("所求的数是:"+n);
}
//判断完全平方数
private static boolean isCompSqrt(int n){
boolean isComp = false;
for(int i=1;i<Math.sqrt(n)+1;i++){
if(n==Math.pow(i,2)){
isComp = true;
break;
}
}
return isComp;
}

}

package com.oracle.day161105_java50;

import java.util.Scanner;

/*

 * 【程序14】

题目:输入某年某月某日,判断这一天是这一年的第几天?

程序分析:以3月5日为例,应该先把前两个月的加起来,

然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。

 * */

public class Demo14 {

public static void main(String[] args) {
// TODO Auto-generated method stub

int y,m,d; 
   int sum=0; 
   int feb=28; 
   Scanner in = new Scanner(System.in); 
   System.out.print("请输入年份:"); 
   y = in.nextInt(); 
   System.out.print("请输入月份:"); 
   m = in.nextInt(); 
   System.out.print("请输入几号:"); 
   d = in.nextInt(); 
    
   if((y%4==0 && y%100!=0) || y%400==0) //闰年判断
   { 
     feb = 29; 
   } 
    
   switch(m) 
     { 
         case 1: 
           sum = d; 

bfd2
           break; 
         case 2: 
           sum = 31 + d; 
           break; 
         case 3: 
           sum = 31+feb+d; 
           break; 
         case 4: 
           sum = 31+feb+31+d; 
           break; 
         case 5: 
           sum = 31+feb+31+30+d; 
           break; 
         case 6: 
           sum = 31+feb+31+30+31+d; 
           break; 
         case 7: 
           sum = 31+feb+31+30+31+30+d; 
           break; 
         case 8: 
           sum = 31+feb+31+30+31+30+31+d; 
           break; 
         case 9: 
           sum = 31+feb+31+30+31+30+31+31+d; 
           break; 
         case 10: 
           sum = 31+feb+31+30+31+30+31+31+30+d; 
           break; 
         case 11: 
           sum = 31+feb+31+30+31+30+31+31+30+31+d; 
           break; 
         case 12: 
           sum = 31+feb+31+30+31+30+31+31+30+31+30+d; 
   } 
   System.out.println(y+"-"+m+"-" + d + "是这一年的第"+sum+"天!"); 
}

}

package com.oracle.day161105_java50;

import java.util.Scanner;

/*

 * 【程序15】

题目:输入三个整数x,y,z,请把这三个数由小到大输出。

程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,

如果x>y则将x与y的值进行交换,然后再用x与z进行比较,

如果x>z则将x与z的值进行交换,这样能使x最小。

 * */

public class Demo15 {

public static void main(String[] args) {
// TODO Auto-generated method stub

Scanner scan = new Scanner(System.in).useDelimiter("\\D");
System.out.print("请输入三个数:");
int x = scan.nextInt();
int y = scan.nextInt();
int z = scan.nextInt();
scan.close();
System.out.println("排序结果:"+sort(x,y,z));
}
//比较两个数的大小
private static String sort(int x,int y,int z){
String s = null;
if(x>y){
int t = x;
x = y;
y = t;
}
if(x>z){
int t = x;
x = z;
z = t;
}
if(y>z){
int t = z;
z = y;
y = t;
}
s = x+" "+y+" "+z;
return s;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: