System.out.print(a[i]+"");
}
}
}
做了【程序1】
题目:
古典问题:
有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
(20个月)
1.程序分析:
兔子的规律为数列1,1,2,3,5,8,13,21....
publicclassEx1{
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
//TODO自动生成的方法存根
//兔子的规律为数列1,1,2,3,5,8,13,21....
for(inti=1;i<=20;i++){
System.out.println(f(i));
}
}
publicstaticintf(intx){
if(x==1||x==2){
return1;
}
else{
returnf(x-1)+f(x-2);
}
}
}
做了【程序2】
题目:
判断101-200之间有多少个素数,并输出所有素数。
1.程序分析:
判断素数的方法:
用一个数分别去除2到sqrt(这个数),如果能被整除,
则表明此数不是素数,反之是素数。
importjava.util.ArrayList;
publicclassEx2{
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
//TODO自动生成的方法存根
//intx=0;
ArrayListlist=newArrayList();//集合,用来装所有的素数
for(inti=101;i<=200;i++)
{
booleanb=true;//标签为b为真
for(intj=2;j
{
if(i%j==0)//求余数是否为0
{
b=false;//如果为0,将标签设置为false
break;//可以整除就跳出这个循环
}
}
if(b==true)//
{
list.add(i);//将符合要求的i加到集合里
//x++;素数个数加1
}
}
System.out.println("素数为:
"+list);
}
}
做了【程序3】
题目:
打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。
例如:
153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
1.程序分析:
利用for循环控制100-999个数,每个数分解出个位,十位,百位。
publicclassEx3{
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
//TODO自动生成的方法存根
for(inti=100;i<=999;i++){
inth=i/100;
intj;
intk;
inta=i%100;
if(a>=10){
j=a/10;
k=a%10;
}
else{
j=0;
k=a;
}
if(h*h*h+j*j*j+k*k*k==i)
System.out.println(i);
}
}
}
做了【程序4】
题目:
将一个正整数分解质因数。
例如:
输入90,打印出90=2*3*3*5。
程序分析:
对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
importjava.util.Scanner;
publicclassexp2{
publicstaticvoidmain(String[]args){
intk;
Scannerin=newScanner(System.in);
System.out.println("请输入一个正整数");
intn=in.nextInt();//
System.out.print(n+"=");
for(k=2;k<88;k++)//
{
while(n!
=k)//找到最小质数
{
if(n%k==0){
System.out.print(k+"*");
n=n/k;
}else{
break;
}
}
}
System.out.println(n);
}
}
做了【程序5】
题目:
利用条件运算符的嵌套来完成此题:
学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
1.程序分析:
(a>b)?
a:
b这是条件运算符的基本例子。
importjava.util.Scanner;
publicclassEx5{
publicstaticvoidmain(String[]args){
Scannerin=newScanner(System.in);
System.out.println("请输入成绩:
");
doublen=in.nextDouble();
grade(n);
}
//成绩计算器
publicstaticvoidgrade(doublen){
if(n>100||n<0){
System.out.println("输入无效!
");
}else{
Stringstr=(n>=90)?
"分,属于A等":
(n>=60)?
"分,属于B等":
"分,属于C等";
System.out.println(n+str);
}
}
}
做了【程序6】
题目:
输入两个正整数m和n,求其最大公约数和最小公倍数。
1.程序分析:
利用辗除法。
importjava.util.Scanner;
publicclassLx6{
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
Scannerin=newScanner(System.in);
intm;
intn;
System.out.println("请输入一个数");
m=in.nextInt();
System.out.println("请输入另一个数");
n=in.nextInt();
System.out.println(m+"和"+n+"的最大公约数是"+gys(m,n));
System.out.println(m+"和"+n+"的最小公倍数是"+gbs(m,n));
}
//最大公约数
publicstaticintgys(intm,intn){
while(m%n!
=0){
intr=m%n;
m=n;
n=r;
}
returnn;
}
//最小公倍数
publicstaticintgbs(intm,intn){
returnm*n/gys(m,n);
}
}
做了【程序7】
题目:
输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
1.程序分析:
利用while语句,条件为输入的字符不为'\n'.
importjava.util.Scanner;
publicclassEx7{
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
intabc=0;//英文字母个数
intsp=0;//空格键个数
intnum=0;//数字个数
intoth=0;//其他字符个数
Scannerin=newScanner(System.in);
System.out.println("输入一行字符");
Stringstr=in.nextLine();
char[]ch=str.toCharArray();//作用:
将字符串拆分为字符到数组。
for(inti=0;iif(Character.isLetter(ch[i])){
//判断是否字母
abc++;
}elseif(Character.isDigit(ch[i])){
//判断是否数字
num++;
}elseif(Character.isSpaceChar(ch[i])){
//判断是否空格键
sp++;
}else{
//以上都不是则认为是其他字符
oth++;
}
}
System.out.println("字母个数:
"+abc);
System.out.println("数字个数:
"+num);
System.out.println("空格个数:
"+sp);
System.out.println("其他字符个数:
"+oth);
}
}
做了【程序8】
题目:
求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。
例如2+22+222+2222+22222(此时共有5个数相加),
几个数相加有键盘控制。
1.程序分析:
关键是计算出每一项的值。
importjava.util.Scanner;
publicclassEx8{
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
System.out.println("输入a的值0-9之间");
Scannerin=newScanner(System.in);
inta=in.nextInt();
System.out.println("输入a叠加的最大个数");
intnum=in.nextInt();
intsum=0;
for(inti=1;i<=num;i++){//i是个数
inttemp=0;//每一项的值
for(intj=1;j<=i;j++){
temp+=Math.pow(10,j-1)*a;
}
sum+=temp;
}
System.o