news 2026/6/23 0:19:13

【期末复习01】--算法题ProgramDesign

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【期末复习01】--算法题ProgramDesign

文章目录

  • 文章目录
    • 文章介绍
    • 项目结构
    • 案例Algorithm01
    • 案例Algorithm02
    • 案例Algorithm03
    • 案例Algorithm04
    • 案例Algorithm05

文章目录

文章介绍

项目结构

案例Algorithm01

案例Algorithm02

案例Algorithm03

案例Algorithm04

案例Algorithm05

文章介绍
期末复习重点案例(算法题)

项目结构

1.案例Algorithm01
要求:使用冒泡排序算法对数组a={9, 7, 4, 6, 3, 1,10},按由小到大的规律排序数组中的元素。

packageProgramDesign;publicclassAlgorithm01{publicstaticvoidmain(String[]args){// 待排序数组int[]a={9,7,4,6,3,1,10};System.out.println("排序前数组:");printArray(a);// 冒泡排序核心逻辑bubbleSort(a);System.out.println("排序后数组(从小到大):");printArray(a);}/** * 冒泡排序方法:对int数组进行从小到大排序 * @param arr 待排序的数组 */publicstaticvoidbubbleSort(int[]arr){intn=arr.length;booleanswapped;// 优化标志:判断本轮是否发生交换(无交换则数组已有序)// 外层循环:控制排序轮数(最多需要 n-1 轮,因为每轮确定1个最大元素的位置)for(inti=0;i<n-1;i++){swapped=false;// 初始化:本轮未发生交换// 内层循环:遍历未排序部分,比较相邻元素// 每轮结束后,最大元素已"冒泡"到末尾,下轮无需遍历已排序的末尾元素for(intj=0;j<n-1-i;j++){// 若当前元素 > 下一个元素,交换位置(保证从小到大)if(arr[j]>arr[j+1]){inttemp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;swapped=true;// 标记本轮发生了交换}}// 优化:若本轮未发生交换,说明数组已有序,直接退出循环if(!swapped){break;}}}/** * 辅助方法:打印数组 * @param arr 要打印的数组 */publicstaticvoidprintArray(int[]arr){for(intnum:arr){System.out.print(num+" ");}System.out.println();}}

运行结果

2.案例Algorithm02
要求:输出100到300间所有能被7整除且不能被3整除的整数,每行输出5个。

packageProgramDesign;publicclassAlgorithm02{publicstaticvoidmain(String[]args){intcount=0;// 计数器:记录当前行已输出的数字个数// 遍历100到300(包含100和300)for(intnum=100;num<=300;num++){// 条件:能被7整除(num%7==0)且不能被3整除(num%3!=0)if(num%7==0&&num%3!=0){System.out.print(num+"\t");// 输出数字,用制表符分隔(排版整齐)count++;// 计数器自增// 每输出5个数字,换行(count是5的倍数时)if(count%5==0){System.out.println();}}}}}

运行结果

3.案例Algorithm03
要求:计算3到11之间(包括3和11)所有整数的阶乘和。

packageProgramDesign;publicclassAlgorithm03{publicstaticvoidmain(String[]args){longtotalSum=0;// 存储阶乘和(用long避免整数溢出,11! = 39916800,int足够,但long更稳妥)intstart=3;// 起始数intend=11;// 结束数System.out.println("计算 "+start+" 到 "+end+" 之间所有整数的阶乘和:");for(intnum=start;num<=end;num++){longfactorial=calculateFactorial(num);// 计算当前数的阶乘totalSum+=factorial;// 累加阶乘到总和// 打印中间过程(可选,便于验证)System.out.println(num+"! = "+factorial);}System.out.println("\n"+start+" 到 "+end+" 的阶乘和 = "+totalSum);}/** * 辅助方法:计算单个整数的阶乘(n!) * @param n 待计算阶乘的整数(此处n≥3,n≤11) * @return n的阶乘结果 */publicstaticlongcalculateFactorial(intn){longresult=1;// 阶乘初始值(1! = 1,0! = 1)// 循环计算:n! = n × (n-1) × ... × 1for(inti=1;i<=n;i++){result*=i;}returnresult;}}

运行结果

4.案例Algorithm04
要求:从键盘输入一个整数n,使用while设计程序计算从1到n的和。

/** * 计算1到n的累加和(while循环实现) */packageProgramDesign;importjava.util.Scanner;publicclassAlgorithm04{publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);intn=0;intsum=0;inti=1;// 仅校验正整数System.out.print("请输入一个正整数n:");while(true){if(scanner.hasNextInt()){n=scanner.nextInt();if(n>0)break;elseSystem.out.print("输入错误!请输入正整数:");}else{System.out.print("输入错误!请输入有效的整数:");scanner.next();}}// while循环累加(仅正整数)while(i<=n){sum+=i;i++;}System.out.println("1到"+n+"的累加和为:"+sum);scanner.close();}}

运行结果

5.案例Algorithm05
要求:从键盘输入一个4位整数n,计算各位数字的和。例如:n=3214,其各位数字和为3+2+1+4=10。

/** * 计算4位整数的各位数字之和 */packageProgramDesign;// 包声明必须在第一行有效语句位置importjava.util.Scanner;// 导入Scanner类,解决“找不到符号”问题publicclassAlgorithm05{publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);intn=0;// 步骤1:读取并校验4位整数(1000 ~ 9999)System.out.print("请输入一个4位整数:");while(true){// 校验输入是否为整数if(scanner.hasNextInt()){n=scanner.nextInt();// 校验是否为4位范围if(n>=1000&&n<=9999){break;// 输入合法,退出校验循环}else{System.out.print("输入错误!请输入1000-9999之间的4位整数:");}}else{System.out.print("输入错误!请输入有效的整数:");scanner.next();// 清空非法输入,避免死循环}}// 步骤2:核心逻辑——拆分各位数字并求和(while循环实现)inttemp=n;// 临时变量保存原数,避免修改nintdigitSum=0;// 存储各位数字和while(temp>0){intdigit=temp%10;// 取最后一位(个位)digitSum+=digit;// 累加当前位到和中temp=temp/10;// 去掉最后一位(整除10)}// 步骤3:输出结果System.out.println("4位整数 "+n+" 的各位数字之和为:"+digitSum);scanner.close();// 释放资源}}

运行结果

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/21 14:30:28

价值流与流程的区别:别让“伪敏捷“毁了你的运维体系

点击文末阅读原文免费下载ITIL流程设计体系文档8个在这个人人都在谈DevOps和敏捷运维的时代&#xff0c;我发现一个令人担忧的现象&#xff1a;很多企业把流程优化当成了价值流改进&#xff0c;结果越优化越复杂&#xff0c;越改进越低效。最近参与几家企业的运维体系评估&…

作者头像 李华
网站建设 2026/6/20 17:32:00

服务价值链管理:为什么90%的运维团队都在“瞎忙“?

点击文末阅读原文免费下载ITIL流程设计体系文档8个在数字化转型的浪潮中&#xff0c;运维团队的地位看似越来越重要&#xff0c;但一个尴尬的现实是&#xff1a;很多运维工程师每天忙得焦头烂额&#xff0c;却说不清楚自己的工作到底为业务创造了多少价值。据ITIL基金会最新发布…

作者头像 李华
网站建设 2026/6/21 2:47:58

服务请求管理的双重挑战:标准化流程与个性化需求如何共存?

点击文末阅读原文免费下载ITIL流程设计体系文档8个最近走访几家企业&#xff0c;发现一个普遍现象&#xff1a;IT服务台每天处理着大量的服务请求&#xff0c;从简单的密码重置到复杂的系统权限申请&#xff0c;从标准的软件安装到定制化的业务需求。运维团队一边在推进标准化流…

作者头像 李华
网站建设 2026/6/18 16:36:25

什么是AI Agent ? AI Agent:赋予机器“生命“的三大核心能力

AI Agent其实是一个具有自主意识的智能体&#xff0c;它指的其实是一段程序或者系统。也就是AI agent本质上来讲是一段程序&#xff0c;但是它和普通程序不同的是&#xff0c;它能够感知环境&#xff0c;推理决策并采取行动。也就是说AI agent必须要能具备感知、决策和行动的能…

作者头像 李华
网站建设 2026/6/23 3:59:09

基于Python的在线考试系统【2026最新】

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

作者头像 李华