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

Java课后习题(编程题)

第一题:


import java.util.Scanner;class Test {public static void main(String args[]) {Scanner sc=new Scanner(System.in);System.out.println("请输入一个x值:");int x=sc.nextInt();int y=0;if(x>0){y=3*x-1;}else if(x<0){y=2*x-1;}else{y=-1;}System.out.println("y的值为:"+y);
}
}

第二题:

class Test {public static void main(String args[]) {int i=1;int sum=0;while(i<=1000){if(i%3==0&&i%7==0){sum+=i;}i++;}System.out.println("sum= "+sum);
}
}

第三题:

方法思路
  1. 观察数列规律

    • 第1项:8

    • 第2项:88 = 8 × 10 + 8

    • 第3项:888 = 88 × 10 + 8

    • 第n项:前一项 × 10 + 8

  2. 使用 for 循环

    • 初始化 currentTerm = 8(第一项)和 sum = 0

    • 循环10次,每次计算当前项并累加到 sum,然后更新 currentTerm 为下一项

    • 
      class Test {public static void main(String args[]) {long sum=0;long current=8;for(int i=1;i<=10;i++){sum+=current;current=10*current+8;System.out.println("sum="+sum);}
      }
      }

第四题:


class Test {public static void main(String args[]) {double sum=0;for(double i=1;i<=10000;i++){sum+=Math.pow(-1,i+1)*(1/(i*2-1));System.out.println("sum="+sum);}
}
}

 第五题:

方法思路
  1. 问题分析

    • 计算从 100! 到 200! 的阶乘之和。

    • 直接计算大数的阶乘会超出 long 甚至 double 的范围,因此必须使用 BigInteger(Java 提供的任意精度整数类)。

  2. 算法设计

    • 使用 BigInteger 存储阶乘和累加结果。

    • 利用 迭代计算阶乘,避免重复计算(如 101! = 100! * 101

      import java.math.BigInteger;public class FactorialSum {public static void main(String[] args) {BigInteger sum = BigInteger.ZERO; // 初始化总和为0BigInteger factorial = BigInteger.ONE; // 初始化阶乘为1(用于迭代计算)// 先计算 100!(因为从100开始累加)for (int i = 1; i <= 100; i++) {factorial = factorial.multiply(BigInteger.valueOf(i));}// 从100! 累加到200!for (int i = 100; i <= 200; i++) {sum = sum.add(factorial); // 累加当前阶乘if (i < 200) {factorial = factorial.multiply(BigInteger.valueOf(i + 1)); // 计算下一个阶乘:(i+1)!}}System.out.println("100! + 101! + ... + 200! 的和 = " + sum);}
      }

      关键点说明

    • 为什么用 BigInteger

      • 100! 的值已经是 9.3326 × 10¹⁵⁷,远超 long(最大值 ~9.2 × 10¹⁸)和 double 的范围。

      • BigInteger 可以处理任意大小的整数,但计算速度较慢。

    • 优化计算

      • 迭代计算阶乘:利用 (n+1)! = n! * (n+1),避免重复计算。

      • 从 100! 开始:直接计算 100!,然后基于它计算 101!102!...,而不是对每个数单独求阶乘。

    • 内存和性能

      • 计算 200! 会生成一个非常大的数(约374位),但 BigInteger 能正确存储。


    • 验证代码正确性

    • 测试小范围:比如计算 1! + 2! + 3!,验证结果是否为 1 + 2 + 6 = 9


    • 总结

    • 适用场景:需要计算极大整数阶乘的和(如密码学、组合数学)。

    • 注意事项

      • BigInteger 运算比基本数据类型慢,但对大数必不可少。

      • 如果仅需近似值,可用 double + 对数变换,但精度会损失。

    • 输出中间值:可以在循环中打印 i! 和部分和,观察是否按预期增长。

http://www.xdnf.cn/news/14748.html

相关文章:

  • Spring Cloud Ribbon核心负载均衡算法详解
  • 《高等数学》(同济大学·第7版)第九章 多元函数微分法及其应用第一节多元函数的基本概念
  • Android14音频子系统-ASoC-ALSA之DAPM电源管理子系统
  • MQTT 客户端(MQTT Client)工具介绍及分享
  • 【DataWhale组队学习】AI办公实践与应用-数据分析
  • MySQL之视图深度解析
  • 大塘至浦北高速分布式光伏项目,让‘交通走廊’变身‘绿色能源带’
  • RabbitMq中启用NIO
  • TDengine 的 CASE WHEN 语法技术详细
  • AES加密:为你的PDF文档加上一道钢铁防线
  • 在uni-app build的index.html 中加入 <mate,和title 等标签内容 内容
  • JSON-LD技术深度解析:从语义网理想到现实应用的完整指南(JSON和知识图谱的桥梁)
  • 阿里云OSS文件上传完整实现方案
  • CSS基础3
  • 人力资源在现代公司中的重要性
  • OSS与NAS混合云存储架构:非结构化数据统一管理实战
  • 大模型项目实战:业务场景和解决方案
  • 数组题解——移除元素​【LeetCode】
  • 6.24_JAVA_微服务_Elasticsearch搜索
  • 原生策略与功耗方案参考
  • 【C/C++】C++ 编程规范:101条规则准则与最佳实践
  • 对象的实例化内存布局与访问定位
  • 从虚拟机角度解释python3相对导入问题(下)
  • 【Pandas】pandas DataFrame update
  • Kafka的消费消息是如何传递的?
  • langchain从入门到精通(十六)——Embedding文本嵌入模型介绍与使用
  • git学习资源
  • 模块化桌面机器人概念设计​​ - ModBot
  • 竹云受邀出席华为开发者大会,与华为联合发布海外政务数字化解决方案
  • AutoGPT,自主完成复杂任务