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;
}
}
/*
* 题目:有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;
}
}
相关文章推荐
- java基础习题50道(四)
- java基础习题50道(五)
- java基础习题50道(六)
- java基础习题50道(一)
- java基础习题50道(七)
- java基础习题50道(八)
- java基础习题50道(九)
- java基础习题50道(二)
- java基础习题50道(十)
- 50道Java习题之11
- 黑马程序员_Java基础[14]_模版设计模式、习题练习
- JAVA基础编程练习题--50道
- Java基础——【习题二】函数练习题
- JAVA基础习题小结①
- Java应用基础:进阶篇 习题——分数
- 50道Java习题之03
- Java基础——【习题三】数组练习题
- Java基础部分习题
- 50道Java习题之14
- 50道JAVA基础编程练习题 - 题目