一、有一对兔子,从出生后第三个月起,每个月都生一对兔子,小兔子长到第三个月又生一对兔子,每个月兔子的总数是?
import java.util.Scanner;
public class Rabbit {
public static void main (String args[]) {
int z = 0; //当月兔子数
int x = 1; //上月兔子数
int y = 1; //上上月兔子数
Scanner scanner = new Scanner(System.in);
System.out.println("要计算到第几个月?");
int month = scanner.nextInt();
if(month!=1&&month!=2) {
for (int i = 3; i <= month; i++) {
z = x + y;
y = x;
x = z;
}
System.out.println("第" + month + "个月有" + z + "对兔子");
}
else if (month == 1) {
System.out.println("第1月有1对兔子");
}
else if (month == 2) {
System.out.println("第2月有1对兔子");
}
}
}
二、猴子第一天摘下若干个桃子,当即吃了一半,然后又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个,以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,就只剩一个桃子了。求第一天共摘多少个桃子?
思路:逆向思维,从最后一天剩的一个桃子找突破口。
public class Peach {
public static void main (String args[]){
int x = 1;
System.out.println("第10天有1桃子");
for (int i=9;i>0;i--){
x=(x+1)*2;
System.out.println("第"+i+"天有"+x+"桃子");
}
}
}
三、一个小于1000的正整数整数加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是?
public class Square {
public static void main(String[] args) {
for (int i = 1; i < 1000; i++) {
if (Math.sqrt(i + 100)%1==0 &&Math.sqrt (i+100+168)%1==0) {//此处的对1取余为判断是否为整数,若是整数可证明开方成功,是两个一样的数字,即完全平方数
System.out.println(i);
}
}
}
}
四、小球从100米高度自由落下,每次落地后反跳回原高度的一半再落下,在第10次落地时共经过多少米?第10次反弹多高?
public class Jump {
public static void main(String[] args) {
float h = 100;//初始状态小球所处高度为100米
float sum = 100;
for (int i = 0; i < 10; i++) {
h = h / 2;//每次反弹
sum += 2 * h;
}
System.out.println("总共走过" + sum + "米," + "第十次弹起高度为" + h + "米");
}
}
五、(盛大游戏2018秋招)公司要开发一个业务管理系统,要求注册环节的密码需要提示用户其安全等级,密码按如下规则进行计分,并根据不同的得分为密码进行安全等级划分。
得分要求:
(1)密码长度
小于等于4 个字符——5分
5 到7 字符——10分
大于等于8 个字符——25分
(2)字母
没有字母——0分
全都是小(大)写字母——10分
大小写混合字母——20分
(3)数字
没有数字——0分
1 个数字——10分
大于1 个数字——20分
(4)符号
没有符号——-0分
1 个符号——10分
大于1 个符号——25分
(5)奖励
同时含有字母和数字——2分
同时含有字母、数字和符号——3分
同时含有大小写字母、数字和符号——5分
评分标准:
大于等于 90——非常安全VERY_SECURE
大于等于80——安全SECURE
大于等于70——非常强VERY_STRONG
大于等于 60——强STRONG
大于等于 50——一般AVERAGE
大于等于 25——弱WEAK
大于等于0——非常弱VERY_WEAK
测试:
样例输入:dgsayd$%12
样例输出:SECURE
import java.util.Scanner;
public class PasswordTest {
//一、密码长度:
//5 分: 小于等于4 个字符
//10 分: 5 到7 字符
//25 分: 大于等于8 个字符
public int testLength(String s){
if(s.length()<=4){
return 5;
}
else if(s.length()<=7){
return 10;
}
else {
return 25;
}
}
//二、字母:
//0 分: 没有字母
//10 分: 全都是小(大)写字母
//20 分: 大小写混合字母
public int testLetter(String s) {
int letterNumber = 0;
int bigLetter = 0;
int smallLetter = 0;
char arr[]=s.toCharArray();
for (int i = 0; i < s.length(); i++) {
if (isLetter(arr[i])) {
letterNumber++;
}
if (isBigLetter(arr[i])) {
bigLetter++;
}
if (isSmallLetter(arr[i])) {
smallLetter++;
}
}
if(letterNumber==0){//不含字母
return 0;
}
else if ((bigLetter == 0 &&smallLetter>0)||( smallLetter == 0&&bigLetter>0)) {//仅仅含有大写或小写字母
return 10;
} else if (bigLetter > 0 && smallLetter > 0 &&(bigLetter+smallLetter<=s.length())) {//同时含有大小写混合字母
return 20;
}
else {
return 0;
}
}
private boolean isLetter(char n){
if((n>='a'&&n<='z')||(n>='A'&&n<='Z')){
return true;
}
return false;
}
private boolean isSmallLetter(char n){
if(n>='a'&&n<='z'){
return true;
}
return false;
}
private boolean isBigLetter(char n){
if(n>='A'&&n<='Z'){
return true;
}
return false;
}
//三、数字:
//0 分: 没有数字
//10 分: 1 个数字
//20 分: 大于1 个数字
public int testNumber(String s){
int number=0;
char arr[]=s.toCharArray();
for(int i=0;i<arr.length;i++){
if(isNumber(arr[i])){
number++;
}
}
if(number==0){
return 0;
}
else if(number==1){
return 10;
}
else {
return 20;
}
}
private boolean isNumber(char n){
if(n>='0'&&n<='9'){
return true;
}
return false;
}
//四、符号:
//0 分: 没有符号
//10 分: 1 个符号
//25 分: 大于1 个符号
public int testCharacter(String s) {
char arr[] = s.toCharArray();
int character = 0;
for (int i = 0; i < arr.length; i++) {
if ((!isLetter(arr[i])) && (!isNumber(arr[i]))) {
character++;
}
}
if (character == 1) {
return 10;
} else if (character > 1) {
return 25;
} else {
return 0;
}
}
//五、奖励:
//2 分: 字母和数字
//3 分: 字母、数字和符号
//5 分: 大小写字母、数字和符号
public int awardScore(String s) {
if (testLetter(s) > 0 && testNumber(s) > 0) {//字母和数字得分都大于0表明同时含有字母和数字
if (testCharacter(s) > 0) {//同时又含有符号
if (testLetter(s) == 20) {//含有字母又是大小写混合
return 5;
}
return 3;
}
return 2;
}
else {
return 0;
}
}
//评分标准:
//大于等于 90: 非常安全
//大于等于80: 安全
//大于等于70: 非常强
//大于等于 60: 强
//大于等于 50: 一般
//大于等于 25: 弱
//大于等于0: 非常弱
public void showLevel(String s){
int score=testLength(s)+testNumber(s)+testLetter(s)+testCharacter(s)+awardScore(s);
// System.out.println(score);
// System.out.println("长度得分"+testLength(s));
// System.out.println("字母得分"+testLetter(s));
// System.out.println("数字得分"+testNumber(s));
// System.out.println("符号得分"+testCharacter(s));
// System.out.println("奖励得分"+awardScore(s));
if(score>=90){
System.out.println("VERY SECURE!");
}
else if(score>=80){
System.out.println("SECURE!");
}
else if(score>=70){
System.out.println("VERY STRONG!");
}
else if(score>=60){
System.out.println("STRONG!");
}
else if(score>=50){
System.out.println("AVERAGE!");
}
else if(score>=25){
System.out.println("WEAK!");
}
else if(score>=0){
System.out.println("VERY WEAK!");
}
}
//测试
public static void main(String[] args) {
PasswordTest test=new PasswordTest();
Scanner scanner=new Scanner(System.in);
System.out.println("请输入密码:");
String s=scanner.nextLine();
//dgsayd$%12 输出 SECURE
//3+25+10+25+20=83
test.showLevel(s);
}
}