• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

java经典小程序

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

1,编写程序,判断给定的某个年份是否是闰年。

      闰年的判断规则如下:

      (1)若某个年份能被4整除但不能被100整除,则是闰年。

      (2)若某个年份能被400整除,则也是闰年。

 

import java.util.Scanner;

class Bissextile{

    public static void main(String[] arge){

        System.out.print("请输入年份");

    int year;    //定义输入的年份名字为“year”

    Scanner scanner = new Scanner(System.in);

    year = scanner.nextInt();

    if (year<0||year>3000){

        System.out.println("年份有误,程序退出!");

        System.exit(0);

        }

    if ((year%4==0)&&(year%100!=0)||(year%400==0)) 

        System.out.println(year+" is bissextile");

    else 

        System.out.println(year+" is not bissextile ");

    }

}

2,给定一个百分制的分数,输出相应的等级。

        90分以上        A

        80~89          B

        70~79          C

        60~69          D

        60分以下        E

 

import java.util.Scanner;

class Mark{

    public static void main(String[] args){

        System.out.println("请输入一个分数");

        //定义输入的分数为“mark”,且分数会有小数

        double mark;

        Scanner scanner = new Scanner(System.in);

        mark = scanner.nextDouble();

 

        //判断是否有输入错误。

        if(mark<0||mark>100){

           System.out.println("输入有误! ");

           System.exit(0);

        }

        /*判断分数的等级

        90分以上者A级, 80~89分者 B级,70~79分者 C级, 60~69者 D级,60分以下 E级 */

        if (mark>=90) System.out.println("this mark is grade \\'A\\' ");

        else if (mark>=80) System.out.println("this mark is grade \\'B\\' ");

        else if (mark>=70) System.out.println("this mark is grade \\'C\\' ");

        else if (mark>=60) System.out.println("this mark is grade \\'D\\' ");

        else  System.out.println("this mark is grade \\'E\\' ");

    }

}

 

3,编写程序求 1+3+5+7+……+99 的和值。

 

class he{

    public static void main(String[] args){

        int number = 1;  //初始值1,以后再+2递增上去

        int sum = 0;

        for ( ; number <100; number+=2 ){ sum += number; }

        System.out.println("1+3+5+7+……+99= " +sum);

    }

}

 

4、利用for循环打印 9*9  ?

1*1=1

1*2=2  2*2=4

1*3=3  2*3=6   3*3=9

1*4=4  2*4=8   3*4=12  4*4=16

1*5=5  2*5=10  3*5=15  4*5=20  5*5=25

1*6=6  2*6=12  3*6=18  4*6=24  5*6=30  6*6=36

1*7=7  2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49

1*8=8  2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64

1*9=9  2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81

 

//循环嵌套,打印九九乘法表

public class NineNine{

    public static void main(String[]args){

    System.out.println();

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

        for(int k=1;k<10;k++) {   //老师的做法,判断语句里的 k<=j,省去下列的if语句。

            if (k>j) break;       //此处用 continue也可以,只是效率低一点

            System.out.print(" "+k+"X"+j+"="+j*k);

         }

        System.out.println();

        }

    }

}

 

 

6、输出所有的水仙花数,把谓水仙花数是指一个数3位数,其各各位数字立方和等于其本身,

   例如: 153 = 1*1*1 + 3*3*3 + 5*5*5  

 

class DafodilNumber{

    public static void main(String[] args){

        System.out.println("以下是所有的水仙花数");

    int number = 100;     // 由于水仙花数是三位数,故由100开始算起

 

    int i, j, k;     // i  j  k  分别为number 的百位、十位、个位

    for (int sum; number<1000; number++){

        i=number/100;  j=(number-i*100)/10;  k=number-i*100-j*10;

        sum=i*i*i+j*j*j+k*k*k;

        if (sum==number) System.out.println(number+" is a dafodil number! ");

        }

    }

}

7、求  a+aa+aaa+.......+aaaaaaaaa=?

      其中a19之中的一个数,项数也要可以指定。

 

import java.util.Scanner;

class Multinomial{

    public static void main(String[] args){

        int  a;      //定义输入的 

        int  num;   //定义最后的一项有多少个数字

        Scanner scanner = new Scanner(System.in);

            System.out.println("请输入一个 1~9 的 ");

        a = scanner.nextInt();

            System.out.println("请问要相加多少项?");

        num = scanner.nextInt();

        int sum=0;

        int a1=a;  // 用来保存 的初始值

        for (int i=1; i<= num; i++){

            sum+= a; 

            a = 10*a +a1;   // 这表示的下一项

        // 每次 的下一项都等于前一项*10,再加上刚输入时的 ;注意,这时的 已经变化了。

            }

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

    }

}

 

8、求 2/1+3/2+5/3+8/5+13/8.....20项之和?

 

class Sum{

    public static void main(Sting[] args){

        double sum=0;

        double fenZi=2.0, fenMu=1.0;    //初始的分子 (fenZi)2,分母(fenMu)

        for(int i=1; i<=20; i++){

            sum += fenZi / fenMu ;

            fenMu = fenZi;           //下一项的分母 = 上一项的分子

            fenZi += fenMu;         //下一项的分子 = 上一项的分子加分母

        }

        System.out.println("sum= "sum);

    }

}

9、利用程序输出如下图形:

   *

   * * *

   * * * * *

   * * * * * * *

   * * * * *

   * * *

   *

class Asterisk{ 

    public static void main(String[] args){

        for (int i=1; i<=13; i+=2){

            for(int j=1; j<=i && i+j<= 14; j++){System.out.print("* ");}

            System.out.println();  // 换行

        }

    }

}

11、计算圆周率

  PI44/3+4/5-4/7.......

  打印出第一个大于 3.1415小于 3.1416的值

 

class Pi {

    public static void main(String[] args){

        double pi =0;  //定义初始值

        double fenZi = 4;    //分子为

        double fenMu = 1;  //第一个4,可看作分母为的分式,以后的分母每次递增2

        for (int i = 0; i < 1000000000; i++){ //运行老久,减少循环次数会快很多,只是精确度小些

            pi += (fenZi/fenMu) ;

            fenZi *= -1.0;    //每项分子的变化是+4,-4+4,-4 ....

            fenMu += 2.0;    //分母的变化是1357, ....   每项递加2

            }

        System.out.println(pi);

    }

}

输出结果为pi = 3.1415926525880504,应该不精确

 

12、输入一个数据n,计算斐波那契数列(Fibonacci)的第n个值

  1  1  2  3  5  8  13  21  34

  规律:一个数等于前两个数之和

//计算斐波那契数列(Fibonacci)的第n个值

public class Fibonacci{

    public static void main(String args[]){

        int n = Integer.parseInt(args[0]);

        int n1 = 1;//第一个数

        int n2 = 1;//第二个数

        int sum = 0;//

        if(n<=0){

            System.out.println("参数错误!");

            return;

        }

        if(n<=2){

            sum = 1;            

        }else{

            for(int i=3;i<=n;i++){

                sum = n1+n2;

                n1 = n2;

                n2 = sum;

            }

        }

        System.out.println(sum);

    }

}

 

//计算斐波那契数列(Fibonacci)的第n个值

//并把整个数列打印出来

public class FibonacciPrint{

    public static void main(String args[]){

        int n = Integer.parseInt(args[0]);

        FibonacciPrint t = new FibonacciPrint();

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

            t.print(i);

        }

    }

    public void print(int n){

        int n1 = 1;//第一个数

        int n2 = 1;//第二个数

        int sum = 0;//

        if(n<=0){

            System.out.println("参数错误!");

            return;

        }

        if(n<=2){

            sum = 1;            

        }else{

            for(int i=3;i<=n;i++){

                sum = n1+n2;

                n1 = n2;

                n2 = sum;

            }

        }

        System.out.println(sum);

    }

}

 

13、求1-1/3+1/5-1/7+1/9......的值。

  a,求出前50项和值。

  b,求出最后一项绝对值小于1e-5的和值。

 

 

 

15、在屏幕上打印出n行的金字塔图案,如,若n=5,则图案如下:

        *

       ***

      *****

     *******

    *********

//打印金字塔图案

public class PrintStar{

    public static void main(String args[]){

        

        for(int i=1;i<=col;i++){//i表示行数

            //打印空格

            for(int k=0;k<col-i;k++){

                System.out.print(" ");

            }

            //打印星星

            for(int m=0;m<2*i-1;m++){

                System.out.print("*");

            }

            System.out.println();

        }

    }

}

 

16、歌德巴赫猜想,任何一个大于六的偶数可以拆分成两个质数的和

  打印出所有的可能

//任何一个大于六的偶数可以拆分成两个质数的和

//打印出所有的可能

public class Gedebahe{

    public static void main(String args[]){

        int num = Integer.parseInt(args[0]);

        if(num<=6){

            System.out.println("参数错误!");

            return;

        }

        if(num%2!=0){

            System.out.println("参数错误!");

            return;

        }

        Gedebahe g = new Gedebahe();

        //1不是质数,2是偶数,因此从3开始循环

        for(int i=3;i<=num/2;i++){

            if(i%2==0){//如果为偶数,退出本次循环

                continue;

            }

            //inum-i都为质数时,满足条件,打印

            if(g.isPrime(i) && g.isPrime(num-i)){    /*判断素数的方法*/如果i是素数 并且参数num-参数i也是素数的时候 

 

你的程序如此运行java xxx aa bb 

aa = args[0]  bb 就是args[1]这样Integer.parseInt就是把这args这个数据的第一个元素转换成为Integer类型。 

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

            }        

        }

    }

4章 数组

1. 定义一个int型的一维数组,包含10个元素,分别赋一些随机整数,然后求出所有元素的最大值,

最小值,平均值,和值,并输出出来。

 

class ArrayNumber{

    public static void main(String[] args){

        int[] arrayNumber;

        arrayNumber = new int[10];

    System.out.println("以下是随机的10个整数:");

        // 填入随机的 10个整数

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

            arrayNumber[i] = (int)(100*Math.random());

            System.out.print(arrayNumber[i]+" ");

            }

        System.out.println();

        int max = arrayNumber[0];

        int min = arrayNumber[0];

        int sum = 0;

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

            if(max < arrayNumber[i])

                max = arrayNumber[i];  //求最大值

            if(min > arrayNumber[i])

                min = arrayNumber[i];   //求最小值

            sum += arrayNumber[i];

            }

    System.out.println("其中 Max="+max+",Min="+min+",Sum="+sum+",Avg="+sum/10.0);

    }

}

 

2.定义一个int型的一维数组,包含10个元素,分别赋值为1~10, 然后将数组中的元素都向前移一个位置,

即,a[0]=a[1],a[1]=a[2],…最后一个元素的值是原来第一个元素的值,然后输出这个数组。

 

3. 定义一个int型的一维数组,包含40个元素,用来存储每个学员的成绩,循环产生400~100之间的随机整数,

将它们存储到一维数组中,然后统计成绩低于平均分的学员的人数,并输出出来。

 

4. (选做)承上题,将这40个成绩按照从高到低的顺序输出出来。

 

5,(选做)编写程序,将一个数组中的元素倒排过来。例如原数组为12345;则倒排后数组中的值

54321

 

6,要求定义一个int型数组a,包含100个元素,保存100个随机的4位数。再定义一个

   int型数组b,包含10个元素。统计a数组中的元素对10求余等于0的个数,保存

   到b[0]中;对10求余等于1的个数,保存到b[1]中,……依此类推。

 

class Remain{

    public  static void main( String[] args){

        int[] a = new int[100];

 

        //保存100个随机4位数到 

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

            a[i] = (int) (1000*Math.random());

        }

 

        //统计 数组中的元素对 10 求余的各个的数目

        int[] b = new int[10];

        int k,sum;

        for (int j = 0;  j < b.length;  j++){

            for (k=0,sum=0;  k < a.length;  k++){

                if ((a[k]%10)==j) sum++;

            }

            b[j] = sum;

            System.out.printf("b[%d]=%d\n",j,b[j]);

        }

    }

}        

Scanner n = new Scanner(System.in)  

 

7,定义一个20*5的二维数组,用来存储某班级20位学员的5门课的成绩;这5门课

   按存储顺序依次为:core C++coreJavaServletJSPEJB

   (1)循环给二维数组的每一个元素赋0~100之间的随机整数。

   (2)按照列表的方式输出这些学员的每门课程的成绩。

   (3)要求编写程序求每个学员的总分,将其保留在另外一个一维数组中。

   (4)要求编写程序求所有学员的某门课程的平均分。

import java.lang.Math;

import java.util.Random;

public class C {

/**

 * @param args

 */

public static void main(String[] args) {

// TODO Auto-generated method stub

int i[]=new int[20];

int m[]=new int[5];

 

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

{

i[j]=j+1;

for(int l=0;l<m.length;l++)

    {

m[l]=1+(int)(Math.random()*99);

System.out.print(m[l]+" "); 

    }

System.out.println("同学"+i[j]+"成绩分别为:");

}

 

           

}

 

}

class Student{

    public static void main(String[] args ){

        int[][] mark = new int[20][5];

        // 给学生赋分数值,随机生成

        for ( int i = 0;  )

    }

}//未完成

 

 

 8,完成九宫格程序

    在井字形的格局中(只能是奇数格局),放入数字(数字由),使每行每列以及斜角线的和都相等

 

    经验规则:从 开始按顺序逐个填写; 1  放在第一行的中间位置;下一个数往右上角45度处填写;

        如果单边越界则按头尾相接地填;如果有填写冲突,则填到刚才位置的底下一格;

        如果有两边越界,则填到刚才位置的底下一格。

 

    个人认为,可以先把最中间的数填到九宫格的最中间位置;再按上面的规则逐个填写,而且

        填的时候还可以把头尾对应的数填到对应的格子中。(第 个值跟倒数第 个值对应,格局上以最中

        间格为轴心对应)

        这样就可以同时填两个数,效率比之前更高;其正确性有待数学论证(但多次实验之后都没发现有错)

    九宫格的 至少还可以填在另外的三个位置,只是接下来的填写顺序需要相应改变;

    再根据九宫格的对称性,至少可以有8种不同的填写方式

 

import java.util.Scanner;

class NinePalace{

    public static void main(String[] args){

        // 定义 为九宫格的行列数,需要输入

        System.out.println("请输入九宫格的行列规模(只能是奇数的)");

        Scanner n = new Scanner(System.in);

        int N;

 

        //判断格局是否奇数 (可判断出偶数、负数 及小数)

        double d;

        while (true){

            d = n.nextDouble();

            N = (int)d;

            if ((d-N)>1.0E-4||N%2==0||N<0)

                {System.out.println("输入出错,格局只能是正奇数。请重新输入");}

            else break;

        }

 

        //老师的九宫格填写方法

        int[][] result = new int[N][N];   //定义保存九宫格的数组

        int row = 0; //行 初始位置

        int col = N/2; //列 初始位置,因为列由0开始,故N/2是中间位置

        for (int i=1;  i<=N*N; i++){

            result [row][col] = i;

            row--;

            col++;

            if (row<0&&col>=N){col--;row+=2;} //行列都越界

            else if (row<0){ row = N-1;}   //行越界

            else if (col>=N){col = 0;}  //列越界

            else if (result[row][col] != 0){col--;row+=2;}  //有冲突

        }

 

        //打印出九宫格

        for (int i=0;  i<N;  i++){

            for(int j=0;  j<N; j++){System.out.print(result[i][j]+"\t");}

            System.out.println();

        }

 

        //我个人的填格方式

        int[][] result2 = new int[N][N];  //为免冲突,重新 new 一个数组

        result2[N/2][N/2] = (N*N+1)/2;  //先把中间值赋予中间位置

        row = 0;   //定义行及列的初始赋值位置。之前赋值的for对两个值有影响,故需重新定位

        col = N/2;

        for (int i=1; i<=N*N/2; i++){

            result2[row][col] = i;

            //下面这句是把跟 对应的值放到格局对应的位置上

            result2[N-row-1][N-col-1] = N*N+1-i;

            row--;

            col++;

            if (row<0){ row = N-1;}   //行越界

            else if (col>=N){col = 0;}  //列越界

            else if (result2[row][col] != 0){col--;row+=2;}  //有冲突

            //这方法不可能出现行列两边都越界的情况,详情需要数学论证

        }

 

        System.out.println();

        //再次打印出九宫格,以对比验证

        for (int i=0;  i<N;  i++){

            for(int j=0;  j<N; j++){System.out.print(result2[i][j]+"\t");}

            System.out.println();

        }

 

    }

}

 

9,求一个3*3矩阵对角线元素之和  

 

 

10,打印杨辉三角

11. 约梭芬杀人法

   把犯人围成一圈,每次从固定位置开始算起,杀掉第7个人,直到剩下最后一个。

11_2、用数组实现约瑟夫出圈问题。 n个人排成一圈,从第一个人开始报数,从1开始报,报到m的人出圈,剩下的人继续开始从1报数,直到所有的人都出圈为止。对于给定的n,m,求出所有人的出圈顺序。

12. 判断随机整数是否是素数

产生1000-999之间的随机整数,然后判断这100个随机整数哪些是素数,哪些不是?

 

public class PrimeTest{

    public static void main(String args[]){

        for(int i=0;i<100;i++){

            int num = (int)(Math.random()*1000);

            PrimeTest t = new PrimeTest();

            if(t.isPrime(num)){

                System.out.println(num+" 是素数!");

            }else{

                System.out.println(num+" 不是素数!");

            }

            System.out.println();

 &nbs


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
学习小程序(2)发布时间:2022-07-18
下一篇:
考勤签到小程序发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap