你的位置:首页 > Java教程

[Java教程]循环练习


1:输入整数a和n,输出结果s,其中s与a、n的关系是:s=a+aa+aaa+aaaa+aa...a,最后为n个a。例如a=2、n=3时,s=2+22+222=246。

public class Demo1 {

    public static void main(String[] args) {

        int a,s,n;

        long sum=0;

        Scanner sin=new Scanner(System.in);

        System.out.println("请输入a和n:");

        a=sin.nextInt();

        n=sin.nextInt();

        String str="";

        s=0;

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

        {

            s*=10;

            s+=a;

            if(i==n)

            {

                str+=s;

            }else

            {

                str+=s+"+";

            }

            sum+=s;

        }     

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

    }

    

}

2:打印出2-99之间的同构数,同构数是指这个数为该数平方的尾数,如5的平方为25,6的平方为36,25的平方为625。

public class Demo2 {

    public static void main(String[] args) {

        int a;//平方值

        int b;//尾数

        

        for(int i=2;i<=99;i++)

        {

            a=i*i;

            if(i<=10)

            {

                b=a%10;//尾数取一位

            }

            else

            {

                b=a%100;//尾数取两位

            }

            

            if(i==b)

            {

                System.out.println(i+"是同构数,平方是:"+a);

            }

        }    

    }   

}

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

最大公约数:辗转取余法

最小公倍数:m*n/最大公约数

注意:

l 大数除以小数,所以要判断,保证m中是大数(交换)

l m和n的值因为辗转会发生改变,为了保证最小公倍数的计算,所以要将m和n的原值先保存起来

m,n,r,a,b,temp

public class Demo3 {

    public static void main(String[] args) {

        int m,n,r;//分别表示键盘上接收的两个数和求出的余数(r)

        int a,b;//保存m,n的原值(后面的辗转会改变m,n的值)。为了计算最小公倍数,需要原值

        int temp;//中间变量。有可能用户在m中保存小值,但程序要求m保存大值,算法要求大值取小值的模

        

        Scanner sin=new Scanner(System.in);

        System.out.println("请输入m和n:");

        m=sin.nextInt();

        n=sin.nextInt();

        

        //保留原值

        a=m;

        b=n;

        

        if(m<n)//如果m小于n,则交换

        {

            temp=m;

            m=n;

            n=temp;

        }

        

        //辗转取余法

        do

        {

            r=m%n;

            m=n;//上一次的除数变为被除数

            n=r;//上一次的余数变为除数

        }while(r!=0);

         

        System.out.println(a+"和"+b+"的最大公约数是:"+m);

         System.out.println(a+"和"+b+"的最小公倍数是:"+(a*b)/m);

        

        

    }

 }

 

 

试题4:输出1+2!+3!+...+20!的结果。

public class Demo4 {

    public static void main(String[] args) {

        long result=1;//表示阶乘的结果,阶乘即累乘

        long sum=0;//阶乘的和,初值为0;

        

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

        {

            result*=i;//计算数字i的阶乘

            sum+=result;

        }

        

        System.out.println("1+2!+3!+……+20!="+sum);

    }  

}