You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

基于《C Primer Plus(第6版)》学习C语言:双精度数组累计求和功能实现入门求助

解决C语言数组累计求和问题的思路与代码实现

Hey there! Let's work through this problem together—since you're just starting out with C, it's totally normal to hit a few bumps. Let's first look at what's missing in your current code, then break down the step-by-step solution.

你的初始代码存在的几个问题

  • 没有定义用来存储多个输入值的数组:你现在只用了单个变量usernumbers,没法保存10个输入值,自然没法计算累计和
  • 变量名不一致:你声明了usernumbers,但scanf里用的是usernumber(少了个s),这会导致编译错误
  • 循环逻辑不对:你的while循环会一直读取输入直到遇到非数字,但题目要求固定输入10个值,用for循环会更直观
  • doublearrays函数只有声明没有实现,而且它的设计没法处理数组操作,暂时不需要单独写这个函数,直接在main里处理更简单

核心实现思路

要完成这个项目,我们需要做这几件事:

  • 定义两个大小为10的双精度数组:一个存输入的数值,另一个存累计求和结果
  • 用循环读取10个输入值,逐个存入第一个数组
  • 遍历数组计算累计和:第一个元素的和就是它本身,后面每个元素等于前一个累计和加上当前输入值
  • 最后可以打印两个数组,验证结果是否正确

完整的修正代码

#include <stdio.h>
#define SIZE 10

int main(void) {
    // 定义两个数组:input_arr存输入的数值,sum_arr存累计和
    double input_arr[SIZE];
    double sum_arr[SIZE];
    int i;

    // 循环读取10个双精度数值
    printf("请输入10个双精度数值:\n");
    for (i = 0; i < SIZE; i++) {
        printf("第%d个值:", i + 1);
        // 检查输入是否有效,如果输入非数字,提示并退出
        if (scanf("%lf", &input_arr[i]) != 1) {
            printf("输入错误,请输入有效的数字!\n");
            return 1;
        }
    }

    // 计算累计和数组
    sum_arr[0] = input_arr[0]; // 第一个元素的累计和就是它自己
    for (i = 1; i < SIZE; i++) {
        // 当前累计和 = 前一个累计和 + 当前输入的数值
        sum_arr[i] = sum_arr[i - 1] + input_arr[i];
    }

    // 打印结果,方便验证
    printf("\n你输入的数值数组:\n");
    for (i = 0; i < SIZE; i++) {
        printf("%.2lf ", input_arr[i]);
    }
    printf("\n\n累计求和数组:\n");
    for (i = 0; i < SIZE; i++) {
        printf("%.2lf ", sum_arr[i]);
    }
    printf("\n");

    return 0;
}

代码解释

  1. 数组定义input_arr[SIZE]用来存储每一个输入的双精度数,sum_arr[SIZE]用来存储对应位置的累计和,SIZE被定义为10,符合题目要求
  2. 输入循环:用for循环从0到9(共10次),每次读取一个值存入input_arr[i],同时检查scanf的返回值(如果返回1说明输入有效,否则提示错误并退出)
  3. 累计和计算:第一个元素的累计和就是输入的第一个值,从第二个元素开始,每个元素都是前一个累计和加上当前输入的数值,这样sum_arr[i]就代表前i+1个输入值的总和(比如sum_arr[2]是前3个值的和,和你举的例子一致)
  4. 结果打印:用循环把两个数组的内容打印出来,%.2lf是为了让输出格式更整齐,保留两位小数

如果你运行这段代码,输入1、5、3...(总共10个值),就能看到累计和数组的第3个元素是9,完全符合题目要求。

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

火山引擎 最新活动