C语言如何高效求1-100的和?

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

使用 for 循环 (最常用)

这是最直观、最常用的方法,我们使用一个循环变量 i 从1遍历到100,并在每次循环中将 i 的值累加到一个变量(sum)中。

完整代码

#include <stdio.h>
int main() {
    int sum = 0; // 1. 定义一个变量 sum 用来存储总和,并初始化为0
    int i;       // 2. 定义一个循环变量 i
    // 3. 使用 for 循环,从 i = 1 开始,到 i <= 100 结束,每次 i 自增1
    for (i = 1; i <= 100; i++) {
        sum = sum + i; // 4. 在循环体内,将当前的 i 值加到 sum 上
    }
    // 5. 循环结束后,sum 中就存储了1到100的总和
    printf("1到100的和是: %d\n", sum);
    return 0; // 程序正常结束
}

代码分步解析

  1. #include <stdio.h>: 引入标准输入输出库,这样我们才能使用 printf 函数来打印结果。
  2. int sum = 0;: 声明一个整型变量 sum,并初始化为0。这一点非常重要,因为我们要用它来累加,如果不清零,结果将不可预测。
  3. for (i = 1; i <= 100; i++): 这是一个 for 循环。
    • i = 1: 循环开始前,将 i 初始化为1。
    • i <= 100: 每次循环前判断的条件。i 小于或等于100,就继续循环;否则,循环结束。
    • i++: 每次循环结束后,将 i 的值加1。
  4. sum = sum + i;: 这是循环的核心,第一次循环时,sum 是0,i 是1,sum 变成 0 + 1 = 1,第二次循环,sum 是1,i 是2,sum 变成 1 + 2 = 3...以此类推,直到 i 变成100,sum 加上100后,循环结束。
  5. printf("1到100的和是: %d\n", sum);: 循环结束后,sum 的值就是最终结果(5050)。printf 函数将这个结果打印到屏幕上。%d 是一个格式化占位符,表示要在这里打印一个整数。
  6. return 0;: 表示 main 函数执行成功并返回。

使用数学公式 (更高效)

对于求1到n的自然数之和,有一个著名的数学公式:高斯求和公式

*公式:和 = n (n + 1) / 2**

这个公式比循环快得多,因为它不需要进行100次加法运算,只需要一次乘法、一次加法和一次除法。

完整代码

#include <stdio.h>
int main() {
    int n = 100;        // 定义上限 n
    int sum;            // 定义变量 sum 来存储结果
    // 使用高斯公式计算和
    sum = n * (n + 1) / 2;
    printf("1到100的和是: %d\n", sum);
    return 0;
}

代码解析

  1. int n = 100;: 我们定义一个变量 n 来表示求和的上限。
  2. sum = n * (n + 1) / 2;: 直接套用公式,代入 n = 100,计算过程为 100 * (100 + 1) / 2 = 100 * 101 / 2 = 10100 / 2 = 5050
  3. printf: 打印结果。

两种方法的比较

特性 方法一 (for循环) 方法二 (数学公式)
可读性 非常直观,逻辑清晰,容易理解。 需要知道公式,但代码本身很简单。
效率 较低,需要进行 n 次加法运算,当 n 很大时(例如1亿),速度会很慢。 极高,无论 n 多大,都只需要固定的几次算术运算。
通用性 非常通用,可以解决各种复杂的累加问题,比如只求奇数的和、求某个范围内满足特定条件的数的和等。 局限性大,只适用于这种特定规律的等差数列求和。
推荐场景 - 学习编程基础,理解循环的概念。
- 解决无法用简单公式描述的累加问题。
- 当问题明确符合等差数列求和规律时。
- 对性能有极高要求的场景。
  • 对于初学者,强烈推荐使用 方法一 (for 循环),因为它能帮助你更好地理解程序是如何一步步执行的。
  • 在实际开发中,如果问题可以用数学公式解决(如本例),方法二 (数学公式) 是更优的选择,因为它更高效、更简洁。

两种方法都能正确计算出1到100的和为 5050

-- 展开阅读全文 --
头像
织梦密码忘了咋找回?
« 上一篇 05-02
dede ddimg标签如何调用图片?
下一篇 » 05-02

相关文章

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

目录[+]