You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++实现1+a+a²+…+aⁿ求和代码未通过检测,请求问题排查

代码缺陷分析:实数几何级数求和程序

咱们来一步步拆解这段代码里的问题,这些问题直接导致程序无法正确完成求和任务:

1. 变量类型不匹配,引发精度丢失或计算错误

  • 求和结果s被定义为int类型,但题目要求计算的是包含实数a的和式,结果必然是实数(比如a=0.5、n=2时,正确结果是1.75)。用整数类型存储会直接截断小数部分,得到错误的整数结果。
  • 变量m被定义为int,但它用来存储a的幂次(初始是a,之后是a²、a³...)。把double类型的a赋值给int的m会直接截断小数部分,比如a=1.5时,m会被赋值为1,后续所有幂次计算全错。

2. 自然数n的输入处理不符合要求

题目明确说明输入的n是自然数,部分定义中自然数包含0(此时和式只有1这一项)。但代码里的while(n <= 0)会强制用户重新输入n,这就排除了n=0的合法情况,导致程序无法处理n=0的场景。

3. 典型错误场景示例

举个简单例子:当输入a=1.5、n=2时,正确结果是1+1.5+2.25=4.75,但代码会把m初始化为1,求和得到1+1+1=3,完全偏离正确结果;如果输入a=0.3、n=1,正确结果是1.3,代码会输出1,直接丢失小数部分。

快速修复建议

  • 将s和m的类型都改为double,确保能存储实数结果和幂次;
  • 移除while(n <= 0)的循环(题目已说明输入是自然数,若要做校验,也应允许n=0,此时直接输出1.0即可);
  • 初始化m时直接用double类型的a,避免不必要的类型转换错误。

内容的提问来源于stack exchange,提问作者JIM Jordon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 22:18:13