那些年,我们一起做过的 Java 课后练习题(6 - 10)

博客围绕Java编程给出五个实例。包括求两数最大公约数与最小公倍数、统计字符类别个数、计算特定数列的值、找出1000内完数以及计算小球反弹路程和高度。对每个实例都进行了题目描述、分析,还提及实现与结果。

实例 6

题目

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

分析

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

实现

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 *
 * @author : cunyu
 * @version : 1.0
 * @email : 747731461@qq.com
 * @公众号 : 村雨遥
 * @website : https://cunyu1943.github.io
 * @date : 2021/6/1 22:23
 * @project : Java 编程实例
 * @package : PACKAGE_NAME
 * @className : Example6
 * @description :
 */

public class Example6 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("输入 m, n");
        int m = scanner.nextInt();
        int n = scanner.nextInt();
        int divisor = maxCommonDivisor(m, n);
        int multiple = m * n / maxCommonDivisor(m, n);
        System.out.println("最大公约数: " + divisor);
        System.out.println("最小公倍数: " + multiple);

    }

    public static int maxCommonDivisor(int a, int b) {
        int max, min;
        max = (a > b) ? a : b;
        min = (a < b) ? a : b;

        if (max % min != 0) {
            return maxCommonDivisor(min, max % min);
        } else {
            return min;
        }
    }
}

结果

实例 7

题目

输入一行字符,分别统计其中的英文字母、空格、数字和其他字符的个数;

分析

遍历字符串,然后看每个字符属于的类别,分别计数;

实现

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 *
 * @author : cunyu
 * @version : 1.0
 * @email : 747731461@qq.com
 * @公众号 : 村雨遥
 * @website : https://cunyu1943.github.io
 * @date : 2021/6/1 23:04
 * @project : Java 编程实例
 * @package : PACKAGE_NAME
 * @className : Example7
 * @description :
 */

public class Example7 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("输入字符串");
        String str = scanner.nextLine();

        int character = 0;
        int digit = 0;
        int blank = 0;
        int others = 0;
//        遍历字符串,然后统计其中的字符
        for (int i = 0; i < str.length(); i++) {
            char ch = str.charAt(i);
            if (ch == ' ') {
                blank++;
            } else if (ch >= '0' && ch <= '9') {
                digit++;
            } else if (ch >= 'a' && ch <= 'z' || ch >= 'A' && ch <= 'Z') {
                character++;
            } else {
                others++;
            }
        }

        System.out.println("空格数:" + blank);
        System.out.println("英文字母数:" + character);
        System.out.println("数字数:" + digit);
        System.out.println("其他字符数:" + others);
    }
}

结果

实例 8

题目

s=a+aa+aaa+…+aa…as = a + aa + aaa + … + aa…as=a+aa+aaa++aaa 的值,其中 aaa 是一个数字,如 2 + 22 + 222 + … + 22…2

分析

首先是分别输入 aaa 和次数 count 的值,然后循环得到最大的数,每次进行累加求和,然后向前移动一位。

实现

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 *
 * @author : cunyu
 * @version : 1.0
 * @email : 747731461@qq.com
 * @公众号 : 村雨遥
 * @website : https://cunyu1943.github.io
 * @date : 2021/6/2 16:25
 * @project : Java 编程实例
 * @package : PACKAGE_NAME
 * @className : Example8
 * @description :
 */

public class Example8 {
    public static void main(String[] args) {


        Scanner scanner = new Scanner(System.in);
        System.out.println("输入次数");
        int count = scanner.nextInt();
        System.out.println("输入 a");
        int a = scanner.nextInt();

        int sum = 0;
        int i = 0;
        // 缓存尾数
        int tmp = 0;

        while (i < count) {
            tmp += a;
            sum += tmp;
            a *= 10;
            i++;
        }

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

结果

实例 9

题目

一个数如果恰好等于它的因子之和,那么这个数就叫做 “完数”,如 6 = 1 + 2 + 3,编程找出 1000 之内的所有完数。

分析

求 num 的各个因子,然后用一个变量 sum 来计算一个数 num 的因子之和,最后判断 sum 和 num 是否相等,若相等则说明该数是一个完数,若不相等则说明不是。

实现

/**
 * Created with IntelliJ IDEA.
 *
 * @author : cunyu
 * @version : 1.0
 * @email : 747731461@qq.com
 * @公众号 : 村雨遥
 * @website : https://cunyu1943.github.io
 * @date : 2021/6/2 16:36
 * @project : Java 编程实例
 * @package : PACKAGE_NAME
 * @className : Example9
 * @description :
 */

public class Example9 {
    public static void main(String[] args) {
        System.out.println("1000 以内的完数:");
        int count = 0;
        for (int i = 1; i <= 1000; i++) {
            if (check(i)) {
                count++;
                System.out.print(i + "\t");
            }
        }
        System.out.println("\n1000 以内的完数个数:" + count);
    }

    /**
     * 判断一个数是否为完数
     *
     * @param num
     * @return true 完数;false 非完数
     */
    public static boolean check(int num) {
        int sum = 0;
//        求 num 的各个因子并求和
        for (int i = 1; i < num; i++) {
            if (num % i == 0) {
                sum += i;
            }
        }

//        判断各个因子之和是否等于该数
        if (sum == num) {
            return true;
        }

        return false;
    }
}

结果

实例 10

题目

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

分析

第一次下落的路程和下落高度均为 100 m,然后循环后续 9 次,每次下落的高度是上一次下落高度的一般,而经过的路程则为之前经过的路程之和加上本次下落的高度。

实现

/**
 * Created with IntelliJ IDEA.
 *
 * @author : cunyu
 * @version : 1.0
 * @email : 747731461@qq.com
 * @公众号 : 村雨遥
 * @website : https://cunyu1943.github.io
 * @date : 2021/6/2 16:46
 * @project : Java 编程实例
 * @package : PACKAGE_NAME
 * @className : Example10
 * @description :
 */

public class Example10 {
    public static void main(String[] args) {
        double height = 100.0d;
        double sum = 100.0d;

        for (int i = 1; i < 10; i++) {
//            经过的路程等于之前路程加上当前次下落高度
            sum += height;
//            当前次下落高度为上一次的一半
            height /= 2;
        }

        System.out.println("第 10 次反弹高度:" + height / 2);
        System.out.println("10 次共经过路程:" + sum);
    }
}

结果

**高校专业实习管理平台设计与实现** 本设计项目旨在构建一个服务于高等院校专业实习环节的综合性管理平台。该系统采用当前主流的Web开发架构,基于Python编程语言,结合Django后端框架与Vue.js前端框架进行开发,实现了前后端逻辑的分离。数据存储层选用广泛应用的MySQL关系型数据库,确保了系统的稳定性和数据处理的效率。 平台设计了多角色协同工作的管理模型,具体包括系统管理员、院系负责人、指导教师、实习单位对接人以及参与实习的学生。各角色依据权限访问不同的功能模块,共同构成完整的实习管理流程。核心功能模块涵盖:基础信息管理(如院系、专业、人员信息)、实习过程管理(包括实习公告发布、实习内容规划、实习申请与安排)、双向反馈机制(单位评价与学生反馈)、实习支持与保障、以及贯穿始终的成绩评定与综合成绩管理。 在技术实现层面,后端服务依托Django框架的高效与安全性构建业务逻辑;前端界面则利用Vue.js的组件化特性与LayUI的样式库,致力于提供清晰、友好的用户交互体验。数据库设计充分考虑了实习管理业务的实体关系与数据一致性要求,并保留了未来功能扩展的灵活性。 整个系统遵循规范的软件开发流程,从需求分析、系统设计、编码实现到测试验证,均进行了多轮迭代与优化,力求在功能完备性、系统性能及用户使用体验方面达到较高标准。 **核心术语**:实习管理平台;Django框架;MySQL数据库;Vue.js前端;Python语言。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
在电磁散射与雷达技术的研究中,涉及粗糙表面电磁特性模拟的核心概念包括统计参数化建模方法、不同电场矢量方向的极化模式、特定方向的能量反射现象、理想化波前模型以及具有随机起伏特征的界面。以下是对这些要点的系统阐述: 统计参数化建模是一种基于表面统计特征描述其不规则性的电磁散射计算方法,尤其适用于均方根高度较小的粗糙界面在微波至毫米波频段的散射特性分析。 水平极化与垂直极化分别指电场矢量平行于地面和垂直于地面的振动状态。在雷达探测中,采用不同的极化模式有助于提升目标辨识度并抑制环境干扰。 当电磁波与物体相互作用时,部分能量沿接近入射方向返回,这种现象称为反向散射。其在雷达系统的探测灵敏度与目标特征分析中具有关键作用。 平面波是在均匀介质中传播的理想波型,其电场与磁场分布保持一致的相位关系,常作为理论简化模型用于电磁问题的解析与数值计算。 粗糙界面指具有随机起伏特征的表面,其不规则程度可通过均方根高度进行量化。这种结构特性会改变电磁波的传播路径与能量分布,进而影响信号的接收与处理。 相关压缩文件可能包含了实现上述建模方法的程序代码,通常采用数值计算语言编写,用于模拟不同极化状态下粗糙表面对平面波的反向散射响应。通过此类仿真,能够预测各类场景下的散射参数,为雷达系统设计与遥感数据解译提供理论依据。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
本资源包提供了一套针对五层办公建筑的完整毕业设计资料,总建筑面积为5324平方米,采用钢框架作为主要承重体系。该资料集整合了结构计算文档、建筑方案图及结构施工图等核心内容,可作为土木工程专业高级学生深入理解实际工程应用的典型教学案例。以下为各组成部分的要点阐述: 1. **钢框架承重体系**:作为一种广泛应用于多层及高层建筑的结构形式,钢框架具备优异的承载能力、较轻的自重以及较高的施工效率。设计过程中需重点考量钢材的强度特性、耐久性能、防火处理及防锈措施。 2. **毕业设计任务**:此环节是土木工程专业学生在完成理论课程后进行的综合性实践训练,旨在通过模拟真实工程问题,提升其综合运用专业知识解决复杂技术难题的能力。 3. **结构计算文件**:作为设计的技术核心,该文件系统完成了各类荷载的统计与组合、整体稳定性验算、主要构件截面设计以及节点连接计算等内容,以确保结构在安全性与经济性方面达到平衡。 4. **计算机辅助设计源图**:采用CAD软件绘制的图纸源文件完整保留了建筑与结构设计的全部几何与标注信息,便于后续调整、深化及专项分析。 5. **建筑方案设计**:涵盖各层平面功能布局、立面造型设计与剖面构造详图,需综合考虑使用需求、空间组织、自然采光与通风效率以及节能设计原则。 6. **结构系统设计**:包括基础选型与布置、柱梁体系设计、楼盖系统选型,并需进行抗震设防与风荷载作用下的专项分析,以确保整体结构具有足够的刚度、强度与稳定性。 7. **工程建造设计流程**:涉及从地质勘察、施工组织设计、进度计划编制到质量与安全控制的全过程,是实现设计意图、完成实体建造的关键环节。 8. **高等教育应用**:本资料适用于高等院校相关专业的案例教学,能够帮助学生建立理论知识与工程实践之间的联系,强化其解决实际问题的综合技能。 9. **房地产开发关联**:此类设计方案在房地产项目中直接影响开发成本、产品定位与建设周期,是开发商、设计单位及施工方协同工作的重要技术基础。 通过系统研习本资料,学习者可全面掌握土木工程项目从方案构思、技术计算到施工图绘制的完整工作流程,对于深化专业认知、培养工程实践能力具有显著助益。同时,该案例亦展示了如何运用现代设计工具统筹考虑结构安全、建筑功能与经济可行性等多重目标。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

村雨遥

众筹一毛买键盘!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值