有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。
程序代码如下:
package com.yoodb.util;
public class Demo01 {
public static void main(String[] args) {
int count = 0;
for (int i = 1; i <= 4; i++) {
for (int j = 1; j <= 4; j++) {
for (int k = 1; k <= 4; k++) {
if(i!=j && j!=k && i !=k) {
count +=1;
System.out.print(i+""+j+""+k + " ");
}
}
}
}
System.out.println("合计" + count + "个三位数。");
}
}
303 304 402 404 502 503 303 304 501 504 601 603 402 404 501 504 701 702 502 503 601 603 701 702 合计24个三位数。
企业发放的奖金根据利润提成。利润(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,求应发放奖金总数?
程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。
程序代码如下:
package com.yoodb.util;
import java.util.Scanner;
public class Demo02 {
private static Scanner s;
public static void main(String[] args) {
s = new Scanner(System.in);
System.out.print("请输入该月的利润:(万元)");
int I = s.nextInt();
long sum = 0;
if (I <= 100000) {
sum = I / 100 * 10;
} else if (I < 200000) {
sum = (long) (100000 / 100 * 10 + (I - 100000) / 100 * 7.5);
} else if (I < 400000) {
sum = (long) (100000 / 100 * 10 + 100000 / 100 * 7.5 + (I - 200000) / 100 * 5);
} else if (I < 600000) {
sum = (long) (100000 / 100 * 10 + 100000 / 100 * 7.5 + 200000 / 100 * 5 + (I - 400000) / 100 * 3);
} else if (I < 1000000) {
sum = (long) (100000 / 100 * 10 + 100000 / 100 * 7.5 + 200000 / 100 * 5 + 200000 / 100 * 3
+ (I - 600000) / 100 * 1.5);
} else {
sum = (long) (100000 / 100 * 10 + 100000 / 100 * 7.5 + 200000 / 100 * 5 + 200000 / 100 * 3
+ 400000 / 100 * 1.5 + (I - 1000000) / 100);
}
System.out.println("该月发放的奖金为:" + sum);
}
}
运行结果如下:
一个整数,它加上100后是一个完全平方数,加上168又是一个完全平方数,请问该数是多少?
程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上168后再开方,如果开方后的结果满足如下条件,即是结果。请看具体分析:
程序代码如下:
package com.yoodb.util;
public class Demo03 {
public static void main(String[] args) {
for (int i = 1; i < 1000; i++) {
int m = (int) Math.sqrt((i + 100));
int n = (int) Math.sqrt((i + 100 + 168));
if (m * m == i + 100 && n * n == i + 100 + 168) {
System.out.println("这个数是" + i);
}
}
}
}
输入某年某月某日,判断这一天是这一年的第几天?
程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本月的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。
程序代码如下:
package com.yoodb.util;
import java.util.GregorianCalendar;
import java.util.Scanner;
public class Demo04 {
private static Scanner scan;
public static void main(String[] args) {
scan = new Scanner(System.in);
System.out.println("输入年份:");
int year = scan.nextInt();
System.out.println("输入月份:");
int month = scan.nextInt();
System.out.println("输入日期:");
int day = scan.nextInt();
//判断是否是闰年,GregorianCalendar:判断年份是否是闰年的方法
GregorianCalendar gre = new GregorianCalendar();
boolean isLeapYear = gre.isLeapYear(year);//返回true:是闰年,false:不是闰年
int ap = isLeapYear ? 29 : 28;//判断2月份的天数
int days = 0;
switch (month) {
case 1:
days = day;
break;
case 2:
days = 31 + day;
break;
case 3:
days = 31 + ap + day;
break;
case 4:
days = 31 + ap + 31 + day;
break;
case 5:
days = 31 + ap + 31 + 30 + day;
break;
case 6:
days = 31 + ap + 31 + 30 + 31 + day;
break;
case 7:
days = 31 + ap + 31 + 30 + 31 + 30 + day;
break;
case 8:
days = 31 + ap + 31 + 30 + 31 + 30 + 31 + day;
break;
case 9:
days = 31 + ap + 31 + 30 + 31 + 30 + 31 + 31 + day;
break;
case 10:
days = 31 + ap + 31 + 30 + 31 + 30 + 31 + 31 + 30 + day;
break;
case 11:
days = 31 + ap + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + day;
break;
case 12:
days = 31 + ap + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + day;
break;
default:
System.out.println("月份输入错误!");
break;
}
System.out.println("这一天是这一年的第" + days + "天");
}
}
有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。
程序代码如下:
package com.yoodb.util;
public class Demo05 {
public static void main(String[] args) {
int count = 0;
for (int x = 1; x < 5; x++) {
for (int y = 1; y < 5; y++) {
for (int z = 1; z < 5; z++) {
if (x != y && y != z && x != z) {
count++;
System.out.print(x * 100 + y * 10 + z + "\t");
if (count % 4 == 0) {
System.out.println();
}
}
}
}
}
System.out.println("共有" + count + "个三位数");
}
}
关注微信公众号“Java精选”(w_z90110),回复关键词领取资料:如Hadoop,Dubbo,CAS源码等等,免费领取资料视频和项目。
涵盖:程序人生、搞笑视频、算法与数据结构、黑客技术与网络安全、前端开发、Java、Python、Redis缓存、Spring源码、各大主流框架、Web开发、大数据技术、Storm、Hadoop、MapReduce、Spark、elasticsearch、单点登录统一认证、分布式框架、集群、安卓开发、iOS开发、C/C++、.NET、Linux、Mysql、Oracle、NoSQL非关系型数据库、运维等。