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

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.lqws.cn/news/524845.html

相关文章:

  • SpringBoot高校党务系统
  • 激光雷达全链路光学系统及探测器能量耦合分析
  • python的少数民族音乐网站系统
  • request这个包中,get 这个方法里传入的是params ,post这个方法里传入的是data 和 json。这个区别是什么?
  • HarmonyOS5 如何性能优化?
  • Vue Devtools “Open in Editor” 配置教程(适用于 VSCode 等主流编辑器)
  • PyTorch RNN实战:快速上手教程
  • 笔记03:布线-过孔的调用与添加
  • 求助deepsee 生成语法树代码
  • matlab机器人工具箱(Robotics Toolbox)安装及使用
  • 使用node的mysql模块操作MySQL数据库
  • 多传感器标定简介
  • Linux驱动学习day7
  • 【kubernetes】--Service
  • C# LINQ语法
  • Redis—持久化
  • 使用亮数据网页抓取API自动获取Tiktok数据
  • C++包管理工具:conan2使用教程
  • 网络安全技术期末考试
  • 专题:2025医疗AI应用研究报告|附200+份报告PDF汇总下载
  • 多个 Job 并发运行时共享配置文件导致上下文污染,固化 Jenkins Job 上下文
  • QUdpScoket 组播实现及其中的踩坑点记录
  • 【DevTools浏览器开发者工具反调试之无限Debugger跳过】
  • 如何防止自己的电脑被控制?开启二次验证保护教程
  • 强化学习理论基础:从Q-learning到PPO的算法演进(1)
  • [日志收集]
  • 刷题 | 牛客 - js中等题-下 (更ing)45/54知识点解答
  • 深度学习实战112-基于大模型Qwen+RAG+推荐算法的作业互评管理系统设计与实现
  • Java期末复习题(二)
  • 计算机网络-----详解HTTPS协议