c语言average怎么用

99ANYc3cd6
预计阅读时长 16 分钟
位置: 首页 C语言 正文

“Average”这个词在C语言中并不是一个内置的关键字或函数,而是我们自己需要实现的一个数学概念,计算平均值的基本公式是:

c语言average怎么用
(图片来源网络,侵删)

平均值 = 所有数值的总和 / 数值的个数

在C语言中实现它,主要就是完成“求和”和“计数”这两个步骤,然后进行除法运算。

下面我们通过几个由浅入深的例子来学习如何使用。


示例1:计算一组固定整数的平均值

这是最基础的情况,我们直接计算几个已知数字的平均值。

c语言average怎么用
(图片来源网络,侵删)

代码:

#include <stdio.h>
int main() {
    // 1. 定义变量并初始化
    int num1 = 25, num2 = 45, num3 = 65, num4 = 85;
    int sum;
    float average; // 注意:平均值不一定是整数,所以用 float 或 double 类型
    // 2. 计算总和
    sum = num1 + num2 + num3 + num4;
    // 3. 计算平均值
    // 因为 sum 是整数,4 也是整数,直接相除会得到整数结果(截断小数部分)。
    // 所以我们需要将其中一个操作数转换为浮点数,以确保结果是浮点数。
    // 将 sum 强制转换为 float:(float)sum
    average = (float)sum / 4;
    // 4. 输出结果
    printf("数字分别是: %d, %d, %d, %d\n", num1, num2, num3, num4);
    printf("总和是: %d\n", sum);
    printf("平均值是: %.2f\n", average); // %.2f 表示输出两位小数
    return 0;
}

关键点解析:

  1. 数据类型:如果所有数字都是整数,它们的和也是整数,平均值通常是带小数的(浮点数),我们必须定义一个 floatdouble 类型的变量来存储平均值。
  2. 整数除法陷阱:在C语言中,如果两个整数相除,结果会自动舍弃小数部分(10 / 3 的结果是 3,而不是 33),为了得到正确的浮点数结果,必须将分子或分母至少一个转换为浮点数
    • (float)sum / 4:将 sum 强制转换为 float,然后除以整数 4,计算会按照浮点数规则进行。
    • sum / 4.0:将整数 4 写成 0,它会被自动识别为 double 类型,计算也会按照浮点数规则进行。
    • sum / 4错误!这会导致整数除法,结果会不正确。
  3. 格式化输出printf 中使用 %.2f 来格式化输出浮点数,它会保留两位小数,使结果更清晰。

示例2:通过用户输入计算平均值

更常见的情况是,我们让用户自己输入数字,然后计算这些数字的平均值。

代码:

#include <stdio.h>
int main() {
    int count, i;
    float sum = 0.0, average, number;
    // 1. 提示用户输入要计算平均值的数字个数
    printf("请输入要计算平均值的数字个数: ");
    scanf("%d", &count);
    // 2. 检查输入的个数是否合法(大于0)
    if (count <= 0) {
        printf("输入的个数必须大于0,\n");
        return 1; // 非正常退出程序
    }
    // 3. 使用循环逐个读取用户输入的数字
    printf("请输入 %d 个数字,用空格或回车分隔:\n", count);
    for (i = 0; i < count; ++i) {
        scanf("%f", &number); // 读取一个浮点数
        sum += number;        // 将读取的数字累加到 sum 中
    }
    // 4. 计算平均值
    average = sum / count;
    // 5. 输出结果
    printf("这些数字的总和是: %.2f\n", sum);
    printf("这些数字的平均值是: %.2f\n", average);
    return 0;
}

关键点解析:

  1. 循环:使用 for 循环来重复执行读取和累加的操作,循环次数由用户输入的 count 决定。
  2. 累加sum += number;sum = sum + number; 的简写,它会把每次输入的数字都加到 sum 上。
  3. 用户输入:使用 scanf 函数从键盘读取用户输入。%f 用于读取浮点数。
  4. 错误处理:增加了一个简单的 if 判断,防止用户输入 0 或负数,导致程序出错。

示例3:使用数组存储数字并计算平均值

当数字很多时,使用单独的变量会很麻烦,这时,数组就派上用场了。

代码:

#include <stdio.h>
int main() {
    int n, i;
    float sum = 0.0, average;
    // 1. 定义数组并确定其大小
    // 假设我们最多计算100个数字的平均值
    float numbers[100];
    // 2. 提示用户输入数字的个数
    printf("请输入要计算平均值的数字个数 (最多100个): ");
    scanf("%d", &n);
    // 3. 检查输入是否合法
    if (n <= 0 || n > 100) {
        printf("输入的个数必须在1到100之间,\n");
        return 1;
    }
    // 4. 使用循环将数字存入数组并计算总和
    printf("请输入 %d 个数字:\n", n);
    for (i = 0; i < n; ++i) {
        scanf("%f", &numbers[i]); // 将数字存入数组
        sum += numbers[i];       // 同时累加
    }
    // 5. 计算平均值
    average = sum / n;
    // 6. 输出结果
    printf("计算完成,\n");
    printf("平均值是: %.2f\n", average);
    return 0;
}

关键点解析:

  1. 数组float numbers[100]; 定义了一个可以存放100个浮点数的数组。
  2. 数组索引:数组的索引从 0 开始。numbers[0] 是第一个元素,numbers[1] 是第二个,以此类推。for 循环的变量 i 正好可以作为数组的索引。
  3. 结合使用:这个例子结合了数组和循环的优点,既方便了数据的存储,又简化了输入和累加的过程。

总结与最佳实践

  1. 核心公式平均值 = 总和 / 数量
  2. 数据类型
    • 用于存储总和和平均值的变量,通常使用 floatdouble 类型,以避免整数除法丢失精度。
    • 在进行除法运算前,确保至少有一个操作数是浮点数(使用 (float)sumcount * 1.0)。
  3. 输入处理
    • 使用 for 循环来处理多个用户输入。
    • 添加基本的输入验证(如检查数量是否为正数),可以使程序更健壮。
  4. 代码复用:如果这个计算功能需要在多个地方使用,最好的方式是将其封装成一个函数

将计算平均值封装成函数(高级用法)

#include <stdio.h>
// 定义一个函数,用于计算浮点数数组的平均值
// 参数1: arr, 数组
// 参数2: size, 数组的大小
// 返回值: 计算出的平均值
float calculateAverage(float arr[], int size) {
    if (size <= 0) {
        return 0.0; // 防止除以零
    }
    float sum = 0.0;
    for (int i = 0; i < size; i++) {
        sum += arr[i];
    }
    return sum / size;
}
int main() {
    float data[] = {10.5, 20.3, 30.8, 40.1, 50.9};
    int n = sizeof(data) / sizeof(data[0]); // 计算数组元素个数
    float avg = calculateAverage(data, n);
    printf("数组: ");
    for (int i = 0; i < n; i++) {
        printf("%.1f ", data[i]);
    }
    printf("\n平均值是: %.2f\n", avg);
    return 0;
}

这种方式让代码结构更清晰,也更容易维护和重用。

-- 展开阅读全文 --
头像
C语言tolower函数如何正确使用?
« 上一篇 03-05
C语言如何输出computer单词?
下一篇 » 03-05

相关文章

取消
微信二维码
支付宝二维码

目录[+]