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

C++作业求助:如何用调和级数第i+1项初始化数组第i个元素

解决你的C++调和数作业问题

嘿,看来你在第二个任务上遇到了瓶颈,先帮你把现有代码的小问题捋顺,再一步步实现fillHarmonic()函数~

先修正现有harmonicNum()的小问题

你写的harmonicNum()函数定义里,参数n没有指定类型,这在C++里是不规范的(虽然旧编译器可能兼容,但最好养成显式声明的习惯)。另外,全局变量n可以换成main()里的局部变量,避免全局变量带来的潜在问题。还有循环判断条件要改成n <= 0,因为题目要求正整数,n=0也不符合要求。修正后的代码片段如下:

#include <iostream>
using namespace std;

// 函数声明
double harmonicNum(int n);

int main() {
    int n; // 换成局部变量
    do {
        cout << "Please input a positive integer: " << endl;
        cin >> n;
    } while (n <= 0); 
    cout << harmonicNum(n) << endl;
    return 0;
}

// 显式声明参数类型int n
double harmonicNum(int n) {
    double harmonic = 0.0;
    for (int i = 1; i <= n; i++) {
        harmonic += 1.0 / i; // 用+=简化写法
    }
    return harmonic;
}

实现fillHarmonic()函数

题目要求这个函数能适配任意大小的一维数组,我们可以给函数传入数组指针和数组的长度作为参数,这样就能处理不同大小的数组了。具体思路是:

  • 遍历数组的每个索引i(从0到size-1)
  • 每个位置arr[i]需要存储第i+1个调和数,所以调用harmonicNum(i+1)赋值给它

完整的实现代码如下,我把它整合到你的现有代码里:

#include <iostream>
using namespace std;

double harmonicNum(int n);
// 新增fillHarmonic函数声明
void fillHarmonic(double arr[], int size);

int main() {
    // 测试fillHarmonic的例子:创建一个长度为5的数组
    const int ARRAY_SIZE = 5;
    double harmonicArray[ARRAY_SIZE];
    
    // 调用fillHarmonic填充数组
    fillHarmonic(harmonicArray, ARRAY_SIZE);
    
    // 打印数组验证结果
    cout << "Harmonic series array (first " << ARRAY_SIZE << " terms):" << endl;
    for (int i = 0; i < ARRAY_SIZE; i++) {
        cout << "Index " << i << ": " << harmonicArray[i] << endl;
    }
    
    return 0;
}

double harmonicNum(int n) {
    double harmonic = 0.0;
    for (int i = 1; i <= n; i++) {
        harmonic += 1.0 / i;
    }
    return harmonic;
}

// 实现fillHarmonic函数
void fillHarmonic(double arr[], int size) {
    for (int i = 0; i < size; i++) {
        // 第i个元素对应第i+1个调和数
        arr[i] = harmonicNum(i + 1);
    }
}

代码说明

  • fillHarmonic()的参数double arr[]在C++里会被当作指针处理,所以能接收任意大小的一维double数组
  • 参数int size用来告诉函数数组的长度,避免越界访问
  • 测试部分创建了一个长度为5的数组,填充后打印每个元素,你可以根据需要修改数组大小测试

这样应该就能完成你的两个作业任务啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 20:04:06