Java9班第一次周测

1. 一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3编程找出1000以内的所有完数。
class WanShu
{
    public static void main(String[] args)
    {
        int sum = 0;
        for (int i = 1; i <= 1000; i++)
        {
            int a = 0;
            for (int j = 1; j < i; j++)
            {
                if (i % j == 0)
                    a += j;
            }
            if (a == i)
            {
                System.out.println(a);
                sum++;

            }
        }
    }
}
2. 一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
class TanQiu
{
    public static void main(String[] args)
    {
        double h1=100;//第1次开始下落的高度
        double high = h1/2;//第1次反弹的高度
        double sum=0;

        for(int i=1; i<=10; i++)
        {
            //从第1次反弹开始,到第10次落地,共10次反复
            //后一次是前一次高度的一半
            sum = high*2+sum;
            high = high/2;
        }

        //共经过的距离要加上开始下落的100米
        System.out.println("第10次落地共经过:"+(sum+100)+"米");

        //第10次弹起的高度是第11次的一倍
        System.out.println("第10次弹起:"+(high*2)+"米");
    }
}
3. 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。

class SuZhi
{
    public static void main(String[] args)
    {
        for (int i = 1; i <= 4; i++)
        {
            for (int j = 1; j <= 4; j++)
            {
                if (j == i)
                {
                    continue;
                }
                for (int k = 1; k <= 4; k++)
                {
                    if (k == i || k == j)
                    {
                        continue;
                    }
                    for (int m = 1; m <= 4; m++)
                    {
                        if (m == i || m == j || m == k)
                        {
                            continue;
                        }

                        System.out.println(i * 1000 + j * 100 + k * 10 + m);
                    }
                }
            }
        }
    }
}
4. 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。

class PingFangSu
{
    public static void main(String[] args)
    {
        for(int i=100000; i>0; i--)
        {
            //使用Math.sqrt开平方
            //%1==0判断是否为整数
            if(Math.sqrt(i+100)%1==0)
            {
                if(Math.sqrt(i+100+168)%1==0)
                {
                    System.out.println(i+"是完全平方数");
                }
            }
        }
    }
}
5. 输入某年某月某日,判断这一天是这一年的第几天?

分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。

class TianSu
{
    public static void main(String[] args)
    {
        int yy=2017;
        int mm=3;
        int dd=27;

        switch(mm-1) //用之前各个月的天数,加上本月的天数
        {
            case 11:
                dd=dd+30;
            case 10:
                dd=dd+31;
            case 9:
                dd=dd+30;
            case 8:
                dd=dd+31;
            case 7:
                dd=dd+31;
            case 6:
                dd=dd+30;
            case 5:
                dd=dd+31;
            case 4:
                dd=dd+30;
            case 3:
                dd=dd+31;
            case 2:
                dd=dd+28;
            case 1:
                dd=dd+31;
        }

        if(yy%4==0&&yy%100!=0||yy%400==0)
        {
            dd=dd+1; //如果是闰年再加1天
        }

        System.out.println("是"+yy+"的第"+dd+"天");
    }
}  
6. 打印出如下图案
*    
***    
******    
********    
******    
***    
*    

分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重for循环,第一层控制行,第二层控制列。

class LingXing
{
    public static void main(String[] args)
    {
        int m = -2;
        for (int i = 0; i < 7; i++)
        {
            if (i < 4)
            {
                if (i % 2 == 0)
                {
                    m = m + 3;
                } else m = m + 2;
            } else
            {
                if (i % 2 == 0)
                {
                    m = m - 2;
                } else
                    m = m - 3;
            }
            for (int j = 0; j < m; j++)
            {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}
7. 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。

分析:抓住分子与分母的变化规律。

class FenSu
{
    public static void main(String[] args)
    {
        double fz = 2.0;
        double fm = 1.0;
        double sum = 0.0;

        for(int i=1; i<=20; i++)
        {
            System.out.println(fz+"/"+fm);
            sum = sum+(fz/fm);
            double t = fz;
            fz = fz+fm;
            fm = t;
        }

        System.out.println(sum);
    }
}
8. 有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?

分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(10岁) ,再往回推。

class NianLing
{
    public static void main(String[] args)
    {
        int age = 10;

        for(int i=2; i<=5; i++)
        {
            age = age+2;
        }

        System.out.println("第5个人的年龄是"+age);
    }
}
9. 一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
class HuiWen
{
    public static void main(String[] args)
    {
        for (int i = 10000; i <= 99999; i++)
        {
            int gw = i % 10; //个位
            int ww = i / 10000; //万位

            int sw = (i / 10) % 10; //十位
            int qw = (i / 1000) % 10; //千位

            if ((gw == ww) && (sw == qw))
            {
                System.out.println(i+"是回文");
            }
        }
    }
}
10. 打印出杨辉三角形(要求打印出10行如下图)

1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1

class YangHui
{
    public static void main(String[] args)
    {
        int n = 10; //打印10行的杨辉三角形
        int i = 0;
        int j = 0;
        int[][] arr = new int[n][n];

        arr[0][0] = 1; //第0行特殊处理

        for (i = 1; i < n; i++) //从第1行开始,到第n行结束
        {
            arr[i][0] = 1; //每行的头尾固定为1
            arr[i][i] = 1;

            for (j = 1; j < i; j++) //从第2列开始,到第i-1列
            {
                //每个元素等于:上一行的上一列 + 上一行的该列
                arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
            }
        }

        //输出
        for (i = 0; i < n; i++)
        {
            for (j = 0; j <= i; j++)
            {
                System.out.print(arr[i][j] + " ");
            }
            System.out.println();
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343