【程序1】
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?
importjava.util.Scanner;/*** 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?
* 分析 一月 1对, 2月 1对,3月 2对,4月 3对,5月5对,6月8对,7月13对,8月 21只*/
public classSubject1 {public static voidmain(String[] args) {
System.out.print("请输入你想知道的兔子数量的月份:");
Scanner scanner=newScanner(System.in);int n=scanner.nextInt();//获取输入的整数
System.out.println(test(n));
System.out.println(fun(n));
scanner.close();
}/*** 菜鸟写法
*@parami
*@return
*/
public static int test(inti){int tot = 0;int a = 0;int b = 1;for(int j = 0;j
tot= a+b;
a=b;
b=tot;
}returna;
}/*** 大神写法
*@param*@return
*/
private static int fun(intn){if(n==1 ||n==2)return 1;else
return fun(n-1)+fun(n-2);
}
}
运行结果:
【程序2】
题目:判断101-200之间有多少个素数,并输出所有素数。
/**
* 【程序2】
* 题目:判断101-200之间有多少个素数,并输出所有素数。
*
* 分析:什么是素数,不能被自己和1整除的数。
*/
public class Subject2 {
public static void main(String[] args) {
getPrimeNumber(101,200);
}
/**
* 判断a和b之间有多少个素数
* @param a
* @param b
*/
public static void getPrimeNumber(int a,int b){
int sum = 0;
if(a >= b){
System.out.println("a不能大于等于b!");
}
System.out.print("素数:");
for(int i=a;i<=b;i++){
if(isPrimeNumber(i)){
sum += 1;
System.out.print(i+" ");
}
}
System.out.println();
System.out.println("存在素数数量:"+sum);
}
/**
* 判断num是否是一个素数
* @param i
* @return
*/
private static boolean isPrimeNumber(int i) {
boolean flag = true;
for(int j=2;j <= i/2;j++){
if(i%j == 0){
flag = false;
break;
}
}
return flag;
}
}
运行结果:
【程序3】
题目:打印出所有的”水仙花数”,所谓”水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个”水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
/***
* 【程序3】
* 题目:打印出所有的”水仙花数”,所谓”水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个”水仙花数”,因为153=1的三次方+5的三次方+3的三次方。*/
public classSubject3 {public static voidmain(String[] args) {for(int i= 100 ; i<=999;i++){if(isNarcissus(i)){
System.out.println("水仙花数:"+i);
}
}
}public static boolean isNarcissus(inta){int num1 = 0; //个位
int num2 = 0; //十位
int num3 = 0; //百位
num3 = a/100;
num2= (a - num3*100)/10;
num1= a - num3*100 - num2*10;if(Math.pow(num1,3) + Math.pow(num2,3) + Math.pow(num3,3) ==a){return true;
}return false;
}
}
运行结果:
【程序4】
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
/*** 【程序4】
* 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。*/
public classSubject4 {public static voidmain(String[] args) {
System.out.print("请输入需要分解因数的整数:");
Scanner scanner=newScanner(System.in);int a = scanner.nextInt();//获取输入的整数
decompose(a);
}/*** 分解质因数
*@paramnum
*@return
*/
public static void decompose(intnum){int tmp = num/2;for(int i=2;i <= tmp ;i++){if(num%i == 0){
num= num/i;
System.out.println("质因数为:"+i);
i=1;continue;
}
}
}
}
运行结果:
【程序5】
题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
/*** 【程序5】
* 题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。*/
public classSubject5 {public static voidmain(String[] args) {
System.out.println("请输入学生成绩:");
Scanner scanner= newScanner(System.in);int a =scanner.nextInt();
String result= a>=90? "A" : (60<=a && a<90? "B" :"C");
System.out.println("该学生的最终评级为:"+result);
}
}
运行结果:
【程序6】
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
importjava.util.Scanner;/*** 【程序6】
* 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。*/
public classSubject6 {public static voidmain(String[] args) {
System.out.println("请输入第一个正整数:");
Scanner scanner= newScanner(System.in);int a =scanner.nextInt();
System.out.println("请输入第二个正整数:");int b =scanner.nextInt();int maxCommonDivisor =maxCommonDivisor(a,b);
System.out.println("最大公约数:"+maxCommonDivisor);int minCommonMultiple = (a*b)/maxCommonDivisor;
System.out.println("最小公倍数:"+minCommonMultiple);
scanner.close();
}/*** 获取num1和num2的最大公约数
*@paramnum1
*@paramnum2
*@return
*/
public static int maxCommonDivisor(int num1,intnum2){int result = 1;int tmp = num1>num2?num2 :num1;for (int i = 2; i <= tmp; i++) {if(num1%i == 0 && num2%i == 0){
result= i*result;
num1= num1/i;
num2= num2/i;
i=1;
}
}returnresult;
}
}
运行结果:
【程序7】
题目:输入一行字符,分别统计出其英文字母、空格、数字和其它字符的个数。
importjava.util.Scanner;/*** 【程序7】
* 题目:输入一行字符,分别统计出其英文字母、空格、数字和其它字符的个数。*/
public classSubject7 {public static voidmain(String[] args) {
System.out.println("请输入字符串:");
Scanner scanner=newScanner(System.in);
scanner.useDelimiter("\n");
String tmpStr=scanner.next();
classify(tmpStr);
}public static voidclassify(String str){char[] strArr =str.toCharArray();int num1 = 0; //字母
String num1Str = "";int num2 = 0; //数字
String num2Str = "";int space = 0; //空格
String spaceStr = "";int other = 0; //其他
String otherStr = "";for (int i = 0; i < strArr.length ; i++) {int ascii = (int)strArr[i];if( 48<= ascii && ascii <= 57){
num2= num2 + 1;
num2Str= num2Str +strArr[i] +" ";
}else if(ascii == 32){
space= space +1;
}else if((65<= ascii && ascii <= 90) || (97 <= ascii && ascii <= 122)){
num1= num1 + 1;
num1Str= num1Str +strArr[i] +" ";
}else{
other= other + 1;
otherStr= otherStr +strArr[i] +" ";
}
}
System.out.println("存在字母个数:" +num1);
System.out.println("存在字母如下:" +num1Str);
System.out.println("存在数字个数:" +num2);
System.out.println("存在数字如下:" +num2Str);
System.out.println("存在空格个数:" +space);
System.out.println("存在其他个数:" +other);
System.out.println("存在其他如下:" +otherStr);
}
}
运行结果:
【程序8】
题目:求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。输出结果的形式如:2+22+222=246;
importjava.math.BigDecimal;importjava.util.Scanner;/*** 【程序8】
* 题目:求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。输出结果的形式如:2+22+222=246;*/
public classSubject8 {public static voidmain(String[] args) {
System.out.println("请输入数字1(小于10):");
Scanner scanner=newScanner(System.in);int a =scanner.nextInt();
System.out.println("请输入数字2(1-10):");int b =scanner.nextInt();
sum(a,b);
}/*** 求和
*@paramnum1
*@paramnum2*/
public static void sum(int num1,intnum2) {
String numStr= "";
String result= "";
BigDecimal bigDecimal= new BigDecimal("0");for(int i=0;i< num1; i++){
numStr= numStr+num2;if(i==0){
result= result+numStr;
}else{
result= result+"+"+numStr;
}
bigDecimal= bigDecimal.add(newBigDecimal(numStr));
}
result= result +"=" +bigDecimal.toString();
System.out.println("结果:"+result);
}
}
运行结果:
【程序9】
题目:一个数如果恰好等于它的因子之和,这个数就称为”完数”。例如6=1+2+3.编程找出1000以内的所有完数。
importjava.util.ArrayList;importjava.util.List;/***
* 【程序9】
* 题目:一个数如果恰好等于它的因子之和,这个数就称为”完数”。例如6=1+2+3.编程找出1000以内的所有完数。*/
public classSubject9 {public static voidmain(String[] args) {for (int i = 0; i <1000 ; i++) {
perfectNum(i);
}
}/*** 判断是否是完数*/
public static void perfectNum(intnum){
List list =decompose(num);int sum = 0;for(inti :list){
sum= sum +i;
}if(num ==sum && num != 1){
System.out.println("完数:"+num);
}
}/*** 分解质因数
*@paramnum
*@return
*/
public static List decompose(intnum){
List list = newArrayList();
list.add(1);int tmp = num/2;for(int i=2;i <= tmp ;i++){if(num%i == 0){
list.add(i);continue;
}
}returnlist;
}
}
运行结果:
【程序10】
题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;n次落地经过路线总长度和下次反弹的高度。
importjava.util.Scanner;/*** 【程序10】
* 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;n次落地经过路线总长度和下次反弹的高度。*/
public classSubject10 {public static voidmain(String[] args) {
System.out.println("请选择第几次落地:");
Scanner scanner= newScanner(System.in);int n =scanner.nextInt();
sumLength(n);
}public static void sumLength(intn){double height = 100;double sumLength = 0;for(int i=1; i<=n; i++){if(i==1){
sumLength= sumLength +height;
}else{
sumLength= sumLength + height*2;
}
height= height/2;
}
System.out.println("总运动距离为:"+sumLength);
System.out.println("反弹高度为:"+height);
}
}
运行结果:
参考:https://blog.csdn.net/zzzzzzzhu/article/details/82355001