前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java 版 C 语言经典 100 例(21 - 25)

Java 版 C 语言经典 100 例(21 - 25)

作者头像
村雨遥
发布2020-06-28 12:07:44
3690
发布2020-06-28 12:07:44
举报
文章被收录于专栏:JavaParkJavaPark

1. 实例 21

1.1 题目

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

1.2 思路

  1. 设第一天桃子数为 ,则第二天桃子数为 ,第三天桃子数为 …
  2. 反过来推,则
  3. 以此类推,从第 10 天类推到第一天是一个循环

1.3 代码

代码语言:javascript
复制
/**
 * @ClassName : TwentyOne
 * @Author : cunyu
 * @Date : 2020/6/23 7:59
 * @Version : 1.0
 * @Description : 实例 21
 **/

public class TwentyOne {
    public static void main(String[] args) throws Exception {
        // num:第10天的桃子数
        int num = 1;
        // 总的桃子数
        int sum = 0;

        // 逆向推,前一天的桃子数 = 2 * (后一天桃子数 + 1),前边有 9 天,所以循环 9 次
        for (int i = 0; i < 9; i++) {
            sum = 2 * (num + 1);
            num = sum;
        }

        System.out.println("桃子总数:" + sum);
    }
}

1.4 结果

代码语言:javascript
复制
桃子总数:1534

2. 实例 22

2.1 题目

❝两个乒乓球队进行比赛,各出三人。甲队为 a,b,c 三人,乙队为 x,y,z 三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a 说他不和 x 比,c 说他不和 x,z 比,请编程序找出三队赛手的名单。 ❞

2.2 思路

见代码注释即可

2.3 代码

代码语言:javascript
复制
/**
 * @ClassName : TwentyTwo
 * @Author : cunyu
 * @Date : 2020/6/23 8:27
 * @Version : 1.0
 * @Description : 实例 22
 **/

public class TwentyTwo {
    public static void main(String[] args) throws Exception {
        char a, b, c;
        System.out.println("对阵顺序表:");

        // 事先 a,b,c 均可能对阵上 x,y,z
        for (a = 'x'; a <= 'z'; a++) {
            for (b = 'x'; b <= 'z'; b++) {
                for (c = 'x'; c <= 'z'; c++) {
                    // a 不对阵 x,c 不对阵 x,z
                    if (a != 'x' && c != 'x' && c != 'z') {
                        // a,b,c 对阵选手不同
                        if (a != b && a != c && b != c) {
                            System.out.format("a --> %c\t b --> %c\tc --> %c", a, b, c);
                        }
                    }
                }
            }
        }
    }
}

2.4 结果

代码语言:javascript
复制
对阵顺序表:
a --> z	 b --> x	c --> y

3. 实例 23

3.1 题目

打印出如下图案(菱形)。

代码语言:javascript
复制
   *
  ***
 *****
*******
 *****
  ***
   *

3.2 思路

图形可拆分为两部分来看待,前四行一个规律,后三行一个规律,利用双重 for 循环,第一层控制行,第二层控制列

3.3 代码

代码语言:javascript
复制
/**
 * @ClassName : TwentyThree
 * @Author : cunyu
 * @Date : 2020/6/23 8:41
 * @Version : 1.0
 * @Description : 实例 23
 **/

public class TwentyThree {
    public static void main(String[] args) throws Exception {

        // 上半部分
        for (int i = 0; i < 4; i++) {
            for (int j = 4; j > i + 1; j--) {
                // 输出左上角位置的空白
                System.out.print(" ");
            }
            for (int j = 0; j < 2 * i + 1; j++) {
                // 输出菱形上半部边缘
                System.out.print("*");
            }
            // 换行
            System.out.println();
        }

        // 下半部分
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < i + 1; j++) {
                // 输出菱形左下角空白
                System.out.print(" ");
            }
            for (int j = 0; j < 2 * (3 - i) - 1; j++) {
                // 输出菱形下半部边缘
                System.out.print("*");
            }
            // 换行
            System.out.println();
        }
    }


}

3.4 结果

代码语言:javascript
复制
   *
  ***
 *****
*******
 *****
  ***
   *

4. 实例 24

4.1 题目

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

4.2 思路

从第 2 个数开始,后一个数的分母是前一个的分子,而分子则是前一个数的分子与分母之和

4.3 代码

代码语言:javascript
复制
/**
 * @ClassName : TwentyFour
 * @Author : cunyu
 * @Date : 2020/6/23 8:59
 * @Version : 1.0
 * @Description : 实例 24
 **/

public class TwentyFour {
    public static void main(String[] args) throws Exception {
        double sum = 0.0;
        float numerator = 2.0f;
        float denominator = 1.0f;

        // 从第 2 个数开始
        for (int i = 1; i <= 20; i++) {
            sum = sum + numerator / denominator;
            float tmp = denominator;
            // 后一个数的分母等于前一个数的分子
            // 而后一个数的分子等于前一个数的分子分母之和
            denominator = numerator;
            numerator += tmp;
        }

        System.out.println("最终结果:" + sum);
    }
}

4.4 结果

代码语言:javascript
复制
最终结果:32.660260796546936

5. 实例 25

5.1 题目

❝求 的和。 ❞

5.2 思路

类似于累加,详细情况见代码。

5.3 代码

代码语言:javascript
复制
/**
 * @ClassName : TwentyFive
 * @Author : cunyu
 * @Date : 2020/6/23 9:12
 * @Version : 1.0
 * @Description : 实例 25
 **/

public class TwentyFive {
    public static void main(String[] args) throws Exception {
        // 最终结果和第一个值
        long sum = 0;
        long num = 1;

        for (int i = 1; i <= 20; i++) {
            // i = 1,num = 1
            // i = 2,num = 1 * 2
            // i = 3,num = 1 * 2 * 3
            num = i * num;
            // 求和
            sum += num;
        }

        System.out.println("最终结果:" + sum);
    }
}

5.4 结果

代码语言:javascript
复制
最终结果:2561327494111820313
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 村雨遥 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 实例 21
    • 1.1 题目
      • 1.2 思路
        • 1.3 代码
          • 1.4 结果
          • 2. 实例 22
            • 2.1 题目
              • 2.2 思路
                • 2.3 代码
                  • 2.4 结果
                  • 3. 实例 23
                    • 3.1 题目
                      • 3.2 思路
                        • 3.3 代码
                          • 3.4 结果
                          • 4. 实例 24
                            • 4.1 题目
                              • 4.2 思路
                                • 4.3 代码
                                  • 4.4 结果
                                  • 5. 实例 25
                                    • 5.1 题目
                                      • 5.2 思路
                                        • 5.3 代码
                                          • 5.4 结果
                                          领券
                                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档