2017-09-15

【程序1】   

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

//这是一个菲波拉契数列问题

int []a = new int [12];

int y;

for(int x=0;x<12;x++) {

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

a[0]=a[1]=1;

System.out.println(a[0]);

}else {

y=x+1;

a[x]=a[x-2]+a[x-1];

System.out.println(""+y+"个月兔子的数量="+a[x]);

}

    }

 

【程序2】   

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

程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。   

int i,j,k;

int n=0;

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

for(j=2;j<i;j++) {

if(i%j==0) {

break;

}

}

if(i==j) {

System.out.println("i="+i);

n++;

}

}

System.out.println("n="+n);

 

【程序3】   

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

int a,n=0;

int i;

int j;

int k;

for(a=100;a<=999;a++) {

i=a/100;

j=a/10%10;

k=a%10;

if(i*i*i+j*j*j+k*k*k==a) {

System.out.println("a是水仙花数:"+a);

n++;

System.out.println("水仙花个数:"+n);

}

}

  

【程序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的值,重复执行第一步。  

int i;

Scanner sc = new Scanner(System.in);

i = sc.nextInt();

int j,k = 0;

int n=0;

 

for(j=1;j<i;j++) {

if(i%j==0) {

k=k+j;

System.out.println("质因数是:"+j);

}

}

if(i==k) {

System.out.println(i);

}else {

System.out.println("它不是完数");

}

  

【程序5】   

题目:利用条件运算符的嵌套来完成此题:学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。   

 int score;

Scanner sc = new Scanner(System.in);

{System.out.println("成绩是:");}

score = sc.nextInt();

if(score>=60) {

if((score>=60)&&(score<=89)) {

System.out.println("B");

}

if(score>=90) {

System.out.println("A");

}

}else {

System.out.println("c");

}

【程序6】   

题目:输入两个正整数m和n,求其最大公约数和最小公倍数。   

/**在循环中,只要除数不等于0,用较大数除以较小的数,将小的一个数作为下一轮循环的大数,取得的余数作为下一轮循环的较小的数,如此循环直到较小的数的值为0,返回较大的数,此数即为最大公约数,最小公倍数为两数之积除以最大公约数。* /

 int m;

Scanner sc1 = new Scanner(System.in);

m=sc1.nextInt();

int n;

Scanner sc2 = new Scanner(System.in);

n=sc2.nextInt();

int i;

for(i=n;i>=1;i--) {

if((m%i==0)&&(n%i==0)) {

System.out.println("最大公约数:"+i);

i=i*(m/i)*(n/i);

System.out.println("最小公倍数:"+i);

break;

}

}

【程序7】   

题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。   

String str = "Hello, 我的名字是ruanchenxue ,我现在在"

+ "ICSS学习,我是0905班的学生,我们班一共有31个学生";

   

    int letterNum=0;  //英文字母的个数

    int num=0;        //数字个数

    int blankNum=0;   //空格的个数

    int m=0;          //其他

    

  

    for(int i=0;i<str.length();i++) {

       char zhi = str.charAt(i);   //调用charAt(索引)    将索引的值付给zhi;

     if( ( (zhi>='A')&&(zhi<='Z') ) ||( (zhi>='a')&&(zhi<='z') ) ) {

     letterNum++;          

     }else if( (zhi>='0')&&(zhi<='9') )  {

     num++;          

     }else if(zhi==' ') {

     blankNum++;}

     else {

     m++;

     }     

   }

    System.out.println("英文字母的个数"+letterNum);

     System.out.println("数字的个数"+num);

     System.out.println("空格的个数"+blankNum);

     System.out.println("其他"+m);

【程序8】   

题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。   

 int a;

Scanner sc = new Scanner(System.in);

a = sc.nextInt();

int s=0;

int n;

for(n=1;n<=10;n++) {

s+=a;

a=11*a;

}

System.out.println(s);

}

【程序9】   

题目:一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3.编程     找出1000以内的所有完数。   

int i,j,k;

int n=0;

for(i=1;i<=1000;i++) {

k=0;

for(j=1;j<i;j++) {

if(i%j==0) {

 k=k+j;

}

}

if(i==k) {

n++;

System.out.println(i);

}

}

System.out.println(n);

【程序10】   

题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在     第10次落地时,共经过多少米 第10次反弹多高  

 double a = 100;

double s = 0;

double h = 0;

for(int n=1;n<=11;n++) {

a=a/2;

h=a;

System.out.println("弹跳高度:"+h);      //11次弹跳的高度

s+=2*h;

System.out.println("总路程:"+(s+100));  //11次经过的路程

}

}

【程序12】   

题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润,求应发放奖金总数    

double s;

double i;

Scanner sc = new Scanner (System.in);

i = sc.nextInt();

if(i<=10) {

s=i*0.1;

System.out.println(s);

}

if(i>10&&i<=20) {

s=10*0.1+(i-10)*0.075;

System.out.println(s);

}

if(i>20&&i<=40) {

s=10*0.1+10*0.075+(i-20)*0.05;

System.out.println(s);

}

if(i>40&&i<=60) {

s=10*0.1+10*0.075+20*0.05+(i-40)*0.03;

System.out.println(s);

}

if(i>60&&i<=100) {

s=10*0.1+10*0.075+20*0.05+20*0.03+(i-60)*0.015;

System.out.println(s);

}

if(i>100) {

s=10*0.1+10*0.075+20*0.05+20*0.03+40*0.015+(i-100)*0.01;

System.out.println(s);

}

【程序13】   

题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少    

int m;

int n;

int i;

for(m=16;m<100;m++) {

for(n=10;n<100;n++) {

if(168==m*m-n*n){

System.out.println("m是:"+m+"\nn"+n);

i=m*m-268;

System.out.println(i);

}

}

}

 

/*按题意循环应该从-100开始(整数包括正整数、负整数、零),这样会多一个满足条件的数-99。

但是我看到大部分人解这道题目时都把题中的“整数”理解成正整数,我也就随大流了。*/

【程序15】   

题目:输入三个整数x,y,z,请把这三个数由小到大输出。   

int a,b,c,t;

Scanner sc1 = new Scanner(System.in);

a = sc1.nextInt();

Scanner sc2 = new Scanner(System.in);

b = sc2.nextInt();

Scanner sc3 = new Scanner(System.in);

c = sc3.nextInt();

// if(a<b) {t=a;a=b;b=t;}     输出时从大到小

// if(a<c) {t=a;a=c;c=t;}

// if(b<c) {t=b;b=c;c=t;}

if(a>b){t=a;a=b;b=t;}      //输出时从小到大

if(a>c){t=a;a=c;c=t;}

if(b>c){t=b;b=c;c=t;}

System.out.println(a+" "+b+" "+c);

【程序17】   

题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个     第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下     的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。   

int i,k = 1,t=0;

for(i=9;i>0;i--) {

t = (k+1)*2;

k = t;

System.out.println(""+i+""+"还剩下"+k+"桃子");

}

System.out.println(k);

}

【程序19】   

题目:打印出如下图案(菱形)   

     *     //分为俩个部分

  for(int i=1;i<=5;i++) {   //

System.out.println();

for (int space=4;space>=i ;space-- )

{

System.out.print(" ");   //空格

}

for(int j=1;j<=i;j++) { //

System.out.print(" *");

}

}

for(int i=1;i<=5;i++) {    //

System.out.println();

for (int space=1;space<=i ;space++ )

{

System.out.print(" ");      //空格

}

for(int j=5;j>i;j--) {

System.out.print(" *");  //

}

}

【程序20】   

题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。

double []a = new double [21];

int x;

double b =0;

for(x=0;x<=20;x++) {

if((x==0)) {

a[0]=1;

}else if(x==1){

a[1]=2;

}else {

a[x]=a[x-1]+a[x-2];

b+=a[x-1]/a[x-2];

System.out.println("b的值"+b);

}

}

【程序27】   

题目:求100之内的素数   

//使用除sqrt(n)的方法求出的素数不包括2和3

int i,j,k;

int n=0;

for(i=1;i<100;i++) {

for(j=2;j<i;j++) {

if(i%j==0) {

break;

}

}

if(i==j) {

System.out.println("i="+i);

n++;

}

}

System.out.println("n="+n);

【程序33】  

题目:打印出杨辉三角形(要求打印出10行如下图)      

            1   

          1    1   

        1    2    1   

      1    3    3    1   

    1    4    6    4    1   

1    5    10    10    5    1   

…………

如何让杨辉三角居中

int [][]a =new int[6][];

int i;

int j;

for(i=0;i<=6;i++) {

a[i]=new int[i+1];

for(j=0;j<=i;j++) {

if((i==0)||(j==0)||(i==j)) {

a[i][j]=1;

}else {

a[i][j]=a[i-1][j-1]+a[i-1][j];

}

System.out.print(a[i][j]+"\t");

}

System.out.println();

}

【程序34】   

题目:输入3个数a,b,c,按大小顺序输出。   

int a,b,c,t;

Scanner sc1 = new Scanner(System.in);

a = sc1.nextInt();

Scanner sc2 = new Scanner(System.in);

b = sc2.nextInt();

Scanner sc3 = new Scanner(System.in);

c = sc3.nextInt();

if(a<b) {t=a;a=b;b=t;}

if(a<c) {t=a;a=c;c=t;}

if(b<c) {t=b;b=c;c=t;}

System.out.println(a+" "+b+" "+c);

【程序45】   

题目:判断一个整数能被几个9整除   

//题目错了吧 能被9整除的就不是素数了!所以改成整数了。

int i;

int m=0;

Scanner sc = new Scanner(System.in);

i = sc.nextInt();

for(int n=1;n<=10;n++) {

if(i%9==0) {

m++;

i=i/9;

}

}

System.out.println(m);

posted @ 2017-09-20 17:14  rvic  阅读(95)  评论(0编辑  收藏  举报