【程序1】
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....
f(n)=f(n-2)+f(n-1) 使用递归
public static int fib(int n) { 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(int n) { int flag=(int) Math.sqrt(n); boolean prime=true; for(int i=2;i<=flag;i++) { if(n%i==0) { prime=false; break; } } return prime; } public static void main(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 static String reverse(String str) { char [] mystr=str.toCharArray(); for(int count=0;count<str.length()/2;count++) { char temp=mystr[count]; mystr[count]=mystr[str.length()-count-1]; mystr[str.length()-count-1]=temp; } str=new String(mystr); //字符串转数组 return str; }
【程序5】
题目:有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数。
public static void numberOfChar(String str) { char[] mystr=str.toCharArray(); int nuberic=0; int letter=0; int chinese_character=0; for(int count=0;count<mystr.length;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); }