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

C++存储奇数到数组并通过指针访问的实现及原书错误排查

问题排查及修复方案

核心错误点

  • 数组初始化逻辑错误:原代码中odds[i] = i + 1的赋值逻辑生成的是1~50的连续整数,不符合「存储前50个奇数」的要求。前N个奇数的通项公式为2*i + 1(i从0开始计数),替换即可修复数值错误。
  • 可选优化点:逆序遍历循环中直接用int类型接收size_t类型的n-1,如果数组规模超过int取值范围会出现溢出,可增加显式类型转换避免类型不匹配警告。

修复后的完整代码

// 存储奇数到数组并使用指针表示法访问
#include <iostream>
#include <iomanip>

int main()
{
  const size_t n {50};
  size_t odds[n];
  for (size_t i {}; i < n; ++i)
    odds[i] = 2*i + 1; // 核心修改:生成第i+1个奇数

  const size_t perline {10};
  std::cout << "The numbers are:\n";
  for (size_t i {}; i < n; ++i)
  {
    std::cout << std::setw(5) << *(odds + i);
    if ((i + 1) % perline == 0)                        
      std::cout << std::endl;
  }

  std::cout << "\nIn reverse order the numbers are:\n";
  for (int i {static_cast<int>(n) - 1}; i >= 0; --i) // 显式类型转换避免类型不匹配警告
  {                                                    
    std::cout << std::setw(5) << *(odds + i);
    if (static_cast<size_t>(i) % perline == 0)
      std::cout << std::endl;
  }
  return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 04:48:04