【程序1】
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
//这是一个菲波拉契数列问题
分析
【程序2】
题目:判断101-200之间有多少个素数,并输出所有素数。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。
【程序3】
题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。
【程序4】
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
【程序5】
题目:利用条件运算符的嵌套来完成此题:学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
【程序6】
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
【程序7】
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
【程序8】
题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
【程序9】
题目:一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3.编程 找出1000以内的所有完数。
【程序10】
题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?
最近下午听课总有点困意,应从网上找了些题目练练手,然后犯困的时候就做题,这样还是满有效的.下面把这些发出来与大家一起分享一下.顺便散下金币,话说这几天我的技术分已经差不多够了.要多努力学点东西了...
2-3更新一下.下面附上我自己写的程序...能做出来的就尽量别看我的啊,做出来了有方法优化的话,大家一起分享一下.
//我还没有建立一种先分析再解题的习惯...得改...- /*1题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
- //这是一个菲波拉契数列问题*/
- class Proble1
- {
- public static void main(String[] args)
- {
- int[] arr=getSums(20);
- System.out.println(arr[19]);
- }
- public static int[] getSums(int moths)
- {
- int f1=1;
- int f2=1;
- int[]arr=new int[moths];
- arr[0]=f1;
- arr[1]=f2;
- for(int i=2;i<moths;i+=2)
- {
- f1+=f2;
- f2+=f1;
- arr[i]=f1;
- arr[i+1]=f2;
- }
- return arr;
- }
- }
复制代码- /* 题目:判断101-200之间有多少个素数,并输出所有素数。
- 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。*/
- class Proble2
- {
- public static void main(String[]args)
- {
- for(int i=101;i<=200;i++)
- {
- int n=0;
- for(int j=2;j<Math.sqrt(i);j++)
- {
- if(i%j==0)
- {
- n++;
- break;
- }
- }
- if(n==0)
- System.out.println(i+" ");
- }
- }
- }
复制代码- /*打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。*/
- class Proble3
- {
- public static int[] getNums(Integer num)
- {
- int[] arr=new int[num.toString().length()];
- for(int i=num.toString().length()-1;i>=0;i--)
- {
- arr[i]=num%10;//1634
- num/=10;
- }
- return arr;
- }
- public static void main(String[] args)
- {
- Function(10000000);//获取int范围内的水仙数;
- }
- public static void Function(Integer num)
- {
- int[] arr=new int[num.toString().length()];
- int sum=0;
- for(Integer i=1;i<num;i++)
- {
- for(int j=0;j<i.toString().length();j++)
- {
- arr=getNums(i);
- int temp=1;
- for(int k=0;k<i.toString().length();k++)//使num每个位上的数乘以他的几次幂;
- temp*=arr[j];
- sum+=temp;
- }
- if(sum==i)
- System.out.println(sum);
- sum=0;
- }
- }
- }
复制代码- /*题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 */
- package Foundation;
- class Proble4
- {
- public static void main(String[] args)
- {
- int num=10500;
- String s=getNum(num);
- System.out.println(num+"="+s);
- }
- public static String getNum(int num)
- {
- String s="";
- int i=2;
- while(num>=i)//90
- {
- while(num%i==0)
- {
- if(num>i) //分解到最后的因数小于分解的数时就+"*"
- s+=i+"*";
- else s+=i; //否则就不加
- num/=i;
- }
- i++;
- }
- //(num<i&&num!=1)
- //s+=num;
- if(s=="")
- s="该数没有正因数!";
- return s;
- }
- }
复制代码- /*利用条件运算符的嵌套来完成此题:学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。*/
- class Proble5
- {
- public static void main(String[] args)
- {
- System.out.println(getScore(99));
- }
- public static char getScore(int num)
- {
- char score =0;
- if(num<=100&&num>=90)
- score='A';
- else if(num<90&&num>59)
- score='B';
- else if(num>=0&&num<60)
- score='C';
- else throw new RuntimeException("错误的分数!");
- return score;
- }
- }
复制代码- /*输入两个正整数m和n,求其最大公约数和最小公倍数。 */
- class Proble6
- {
- public static void main(String[] args)
- {
- getNum(24,36);
- }
- public static void getNum(int a,int b)
- {
- sop(getMin(a,b));
- sop(getMax(a,b));
- }
- public static int getMin(int a,int b)
- {
- int min=a*b/(getMax(a,b));
- return min;
- }
- public static int getMax(int a,int b)
- {
- int max_num=0;
- int i=1;
- while(i<a)
- {
- if(a%i==0&b%i==0)
- max_num=i;
- i++;
- }
- return max_num;
- }
- public static void sop(Object obj)
- {
- System.out.println(obj);
- }
- }
复制代码- /*输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。ASC2 空格 32 48-0 65-A 97-a*/
- class Proble7
- {
- public static void main(String[] args)
- {
- String str="2342 134897d sfas dfjkl;ewrasfifa'cvje;weirou";
- System.out.println(getNum(str));
- }
- public static String getNum(String s)
- {
- char[] arr=s.toCharArray();
- int[] num={0,0,0,0};
- String str;
- for(int i=0;i<arr.length;i++)
- {
- if(arr[i]==32)
- num[1]++;
- else if(arr[i]>=48&&arr[i]<=57)
- num[2]++;
- else if(arr[i]>=65&&arr[i]<=90||arr[i]>=97&&arr[i]<=122)
- num[0]++;
- else num[3]++;
- }
- str=" 英文字母:"+num[0]+" 数字:"+num[2]+" 空格:"+num[1]+" 其他字符:"+num[3];
- return str;
- }
- }
复制代码- /*求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。*/
- class Proble8
- {
- public static void main(String[] args)
- {
- System.out.println(getNum(1,5));
- }
- public static String getNum(int a,Integer i)
- {
- String str="";
- int sum=0;
- int temp=a;
- for(int n=0;n<i;n++)
- {
- if(n>0)
- a=(a*10+temp);
- sum+=a;
- if(n<i-1)
- str+=a+"+";
- else str+=a;
- }
- str+="="+sum;
- return str;
- }
- }
复制代码- /*一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3.编程 找出1000以内的所有完数*/
- class Proble9
- {
- public static void main(String[] args)
- {
- printNum();
- }
- public static void printNum()
- {
- int sum=0;
- String str="";
- for(int i=2;i<1000;i++)
- {
- sum=0;
- for(int k=1;k<i;k++)
- {
- if(i%k==0)
- sum+=k;
- if(sum==i)
- {
- System.out.println(str+i+" ");
- break;
- }
- }
- }
- }
- }
复制代码- /*一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高? */
- class Proble10
- {
- public static void main(String[] args)
- {
- System.out.println(getMetre(100,4));
- }
- public static int getMetre(int metre,int n)
- {
- int count=0;
- int sum=0;
- while(metre/2!=0)
- {
- if(count==n)
- {
- System.out.println("metre="+metre);
- break;
- }
- metre/=2;
- sum+=metre;
- count++;
- }
- return sum;
- }
- }
- /*package Foundation;
- /*
- class Proble10
- {
- public static void main(String[] args)
- {
-
- }
- }*/
复制代码 |