有些题目自己写出来了,有些借鉴的之前发布的集题里的答案,如有做的不好的地方欢迎指出
题目一:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后
每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?
分析 一月 1对, 2月 1对,3月 2对,4月 3对,5月5对,6月8对,7月13对,8月 21对
System.out.print("请输入你想知道的兔子数量的月份:");
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();//获取输入的整数
System.out.println(test(n));
System.out.println(fun(n));
scanner.close();
/**
* 兔子产仔菜鸟写法
* @param i
* @return
*/
public static int test(int i){
int tot = 0;
int a = 0;
int b = 1;
for(int j = 0;j<i; j++){
tot = a+b;
a = b;
b = tot;
}
return a;
}
/**
* 兔子产仔大神写法
* @param
* @return
*/
private static int fun(int n){
if(n==1 ||n==2)
return 1;
else
return fun(n-1)+fun(n-2);
}
运行截图:
题目二:判断101-200之间有多少个素数,并输出所有素数。
int j =0;
System.out.print("所有素数为:");
for(int i =101;i<=200;i++) {
if(isPrimeNumber(i)) {
System.out.print(i+",");
j++;
}
}
运行截图(输出最后一个多了个,号,本人无强迫症,哈哈):
题目三:打印出所有的”水仙花数”,所谓”水仙花数”是指一个三位数,其各位数字立方和等于该数本身。
例如:153是一个”水仙花数”,因为153=1的三次方+5的三次方+3的三次方
System.out.print("所有的水仙花数为:");
for(int i =100;i<=999;i++) {
if(number(i)) {
System.out.print(i+",");
}
}
private static boolean number(int i) {
//百位
int num1 = i/100;
//十位
int num2 = (i-num1*100)/10;
//个位
int num3 = (i-num1*100-num2*10);
if(Math.pow(num1,3)+Math.pow(num2,3)+Math.pow(num3,3) != i){
return false;
}
return true;
}
运行截图(输出最后一个多了个,号,本人无强迫症,哈哈):
题目四:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个正整数");
int a = scanner.nextInt();
decompose(a);
private static void decompose(int num){
int tmp = num/2;
for(int i=2;i <= tmp ;i++){
if(num%i == 0){
num = num/i;
System.out.println("质因数为:"+i);
i=1;
}
}
}
运行截图:
题目五:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下为C表示。30分为D
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个学生成绩");
int a = scanner.nextInt();
String b=a>=90?"此同学成绩为A":a>=60&&a<=80?"此同学成绩为B":a>=30&&a<60?"此同学成绩为C":"此同学成绩为D";
System.out.println(b);
运行截图:
题目六:输入两个正整数a和b,求其最大公约数和最小公倍数。
Scanner scanner=new Scanner(System.in);
System.out.println("请输入一个数");
int a = scanner.nextInt();
System.out.println("请再输入一个数");
int b = scanner.nextInt();
decompose1(a,b);
private static void decompose1(int num,int num1){
int tmp = 0;
for(int i=2;i>0;i++) {
if(num*i%num1==0) {
System.out.println("最小公倍数为"+num*i);
break;
}
}
for(int i=2;i <= num+num1 ;i++){
if(num%i == 0&&num1%i==0){
tmp=i;
}
if(i==num+num1&&tmp>0) {
System.out.println("最大公约数为:"+tmp);
}
}
if(tmp==0) {
System.out.println("没有公约数");
}
}
运行截图:
题目七:输入一行字符,分别统计出其英文字母、空格、数字和其它字符的个数
Scanner scanner=new Scanner(System.in);
//排除输入空格问题
scanner.useDelimiter("\n");
System.out.println("请输入一行字符");
String a= scanner.next();
fenge(a);
public static void fenge(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++) {
//将char数组元素转换为int数字
int ascii = (int)strArr[i];
//如果这个数字大于等于48并且小于等于57那么类型为数字
if( 48<= ascii && ascii <= 57){
num2 = num2 + 1;
num2Str = num2Str +strArr[i] +" ";
//如果这个数字等于32那么类型为空格
}else if(ascii == 32){
space = space +1;
//如果这个数字大于等于65并且小于等于90或者大于等于97并且小于等于122那么类型为字母
}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);
}
运行截图:
题目八:求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。
例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。输出结果的形式如:2+22+222=246
System.out.println("请输入第一个数字:");
int a = scanner.nextInt();
System.out.println("请输入第二个数字");
int b = scanner.nextInt();
String c ="";
int d =0;
for(int i =1;i<=a;i++) {
for(int j =1;j<=i;j++) {
c+=String.valueOf(b);
}
if(i==a) {
System.out.print(c);
}else {
System.out.print(c+"+");
}
d+=Integer.parseInt(c);
c="";
}
System.out.println("="+d);
运行截图:
题目九:一个数如果恰好等于它的因子之和,这个数就称为”完数”。例如6=1+2+3.编程找出1000以内的所有完数
private static void wannum() {
int a =0;
for (int i = 1; i <= 1000; i++) {
for(int j = 1;j<i;j++) {
if(i%j==0) {
a+=j;
}
}
if(a==i) {
System.out.println("1000以内的所有完数为:"+i);
a=0;
}else {
a=0;
}
}
}
运行截图:
题目十:一球从100米高度自由落下,每次落地后反跳回原高度的一半;n次落地经过路线总长度和下次反弹的高度。
System.out.println("请输入球第几次落地:");
int a = scanner.nextInt();
ball(a);
private static void ball(int a) {
//高度
double d =100.0;
//总长度
double b =0.0;
//下次反弹的高度
double c = 0.0;
for(int i = 1;i<=a;i++) {
if(i==1) {
b+=d;
c=d/2;
}else {
b+=c*2;
c=c/2;
}
}
System.out.println("总运动距离为:"+b);
System.out.println("下一次反弹高度为:"+c);
}
运行截图: