java 50 道题_50道java算法题(一)

本文介绍了四个编程问题的解决方案:斐波那契数列、素数判断、水仙花数和字符串反转。程序分析了各自算法的核心逻辑,如递归求解斐波那契数、遍历判断素数、循环分解三位数以及字符数组操作反转字符串。同时,还展示了统计字符串中中文、英文和数字字符数量的方法。
摘要由CSDN通过智能技术生成

【程序1】

题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

1.程序分析:   兔子的规律为数列1,1,2,3,5,8,13,21....

f(n)=f(n-2)+f(n-1) 使用递归

public static int fib(intn)

{if(n==0 || n==1)

{return 1;

}else{return fib(n-1)+fib(n-2);

}

【程序2】

题目:判断101-200之间有多少个素数,并输出所有素数。

1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,

则表明此数不是素数,反之是素数。

public static boolean fn(intn)

{int flag=(int) Math.sqrt(n);boolean prime=true;for(int i=2;i<=flag;i++)

{if(n%i==0)

{

prime=false;break;

}

}returnprime;

}public static voidmain(String[] args) {//TODO Auto-generated method stub

for(int i=101;i<=200;i++)

{if(fn(i))

{

System.out.println(i);

}

}

}

【程序3】

题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。

程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。

for(int i=100;i<=999;i++)

{int a=i/100;int b=(i-a*100)/10;int c=i%10;if(a*a*a+b*b*b+c*c*c==i)

{

System.out.println(i);

}

}

【程序4】

字符串反转

题目:编程序将一个字符串反转。

输入任意字符串,比如abcd转换成dcba

public staticString reverse(String str)

{char [] mystr=str.toCharArray();for(int count=0;count

{char temp=mystr[count];

mystr[count]=mystr[str.length()-count-1];

mystr[str.length()-count-1]=temp;

}

str=new String(mystr); //字符串转数组

returnstr;

}

【程序5】

题目:有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数。

public static voidnumberOfChar(String str)

{char[] mystr=str.toCharArray();int nuberic=0;int letter=0;int chinese_character=0;for(int count=0;count

{int cn=mystr[count];if(cn>=19968 && cn<=40623) //java汉字字符编码

{

chinese_character++;

}if( Character.isDigit(mystr[count]))

{

nuberic++;

}else if(Character.isLetter(mystr[count]))

{

letter++;

}

}

System.out.println("number is " +nuberic +"\nletter is "+letter+"\nchinese letter"+chinese_character);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值