当前位置: 首页 > news >正文

【期末复习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();// 释放资源}}

运行结果

http://www.cnnetsun.cn/news/2639.html

相关文章:

  • 价值流与流程的区别:别让“伪敏捷“毁了你的运维体系
  • 服务价值链管理:为什么90%的运维团队都在“瞎忙“?
  • 服务价值体系落地后为何“雷声大雨点小“?深度剖析实施效果不佳的根本原因
  • 服务请求管理的双重挑战:标准化流程与个性化需求如何共存?
  • 什么是AI Agent ? AI Agent:赋予机器“生命“的三大核心能力
  • 基于Python的在线考试系统【2026最新】
  • 基于Python的高校后勤报修系统【2026最新】
  • 向海而生:未来港口海岛低空经济的系统架构与游戏规则
  • Linux系统多线程上下文切换(context switch)的 CPU 时钟耗时
  • 港科喜讯|香港科大校友企业“遇见小面“成功在港交所挂牌上市
  • taro学习路线
  • AI治堵,畅行三秦|SaaS信控嘹咋咧,一路畅的很!
  • 智能仓储项目投标/销售实战⑩:失败与复盘——如何优雅地“陪跑“并赢得未来?
  • 智能仓储进化史㉘ | 从“无人化“到“少人化“:智能化的边界在哪里?
  • 从大海捞针到一键下单:电子元器件采购背后的系统支撑
  • MCP:让 AI 工具互联互通的“普通话“
  • redis热点key拆分和读多副本
  • 线程池监控的五大指标
  • 1765360170889
  • 【网络安全】内网渗透基础知识超详细指南:从概念到核心原理,黑客入门必学干货全解析
  • 实战为王!2025精选十五个网络安全靶场(免费/开源+内网/Web/CTF全覆盖)
  • 0 基础转行网络安全:3 个月入门 + 接单变现,我从行政转成安全运维的真实经历
  • 大模型学习基础(四) Transformer架构 下
  • 零拷贝的原理
  • 祝贺东航首飞全球最长单程航线!通义千问和 AI 网关助力推出首个行程规划 Agent
  • 微服务架构下高可用、高保真接口 MOCK 解决方案的深度解析与实践
  • 交大医学院 | VHL综合征家系致病基因研究克服WES/芯片检测小片段CNV的技术缺陷
  • MoonBit Pearls Vol.17 :在 MoonBit 中实现 IntMap
  • 14、Mercurial与Buildbot搭建代码管理与持续集成环境
  • 15、软件代码管理与生命周期迭代式管理指南