首页 > 编程笔记 > C语言笔记

C语言求1到100的偶数和(附带源码和解析)

在C语言编程中,求 1 到 100 的偶数和是一个常见的基础练习。这个问题不仅可以帮助初学者熟悉循环结构和条件判断,还能加深对数学逻辑的理解。
 

最直观的方法是使用 for 循环遍历 1 到 100 的所有数字,然后通过 if 条件判断筛选出偶数,最后将这些偶数累加起来。以下是具体的代码实现:

#include <stdio.h>

int main() {
    int sum = 0;
    for (int i = 1; i <= 100; i++) {
        if (i % 2 == 0) {
            sum += i;
        }
    }
    printf("1到100的偶数和为:%d\n", sum);
    return 0;
}

在这段代码中,我们使用 for 循环遍历 1 到 100 的所有数字。对于每个数字,我们使用模运算符 % 来判断它是否能被 2 整除。如果一个数能被 2 整除且没有余数,那么它就是偶数。当遇到偶数时,我们将其加到 sum 变量中。循环结束后,sum 就包含了所有偶数的和。


程序的输出结果如下:

1到100的偶数和为:2550

虽然上述方法直观且易于理解,但我们还可以对其进行优化。注意到偶数是 2 的倍数,我们可以直接从 2 开始,每次递增 2,这样就可以省去判断奇偶的步骤,代码会更加简洁高效:

#include <stdio.h>

int main() {
    int sum = 0;
    for (int i = 2; i <= 100; i += 2) {
        sum += i;
    }
    printf("1到100的偶数和为:%d\n", sum);
    return 0;
}

这个优化版本的代码直接从 2 开始累加,每次增加 2,这样就只会遍历所有的偶数,避免了不必要的判断,提高了程序的执行效率。
 

对于这个特定的问题,我们甚至可以使用数学公式来直接计算结果,而不需要使用循环。1 到 100 的偶数和可以表示为:

2 + 4 + 6 + ... + 98 + 100

这是一个等差数列,我们可以使用等差数列求和公式:

S = n * (a1 + an) / 2

其中 n 是项数,a1 是首项,an 是末项。在这个问题中,n = 50(从 1 到 100 有 50 个偶数),a1 = 2,an = 100。因此,我们可以这样实现:

#include <stdio.h>

int main() {
    int n = 50;  // 1到100有50个偶数
    int a1 = 2;  // 首项
    int an = 100;  // 末项
    int sum = n * (a1 + an) / 2;
    printf("1到100的偶数和为:%d\n", sum);
    return 0;
}

这种方法直接使用数学公式计算结果,不需要循环,计算速度非常快,特别是在处理大范围数据时更有优势。然而,这种方法的缺点是不够通用,只适用于特定的问题,如果需求有变化(比如求 1 到 200 的偶数和),就需要修改代码。
 

在实际编程中,选择哪种方法取决于具体的需求和场景。如果是处理小范围的数据,或者需要灵活性以适应不同的需求,使用循环的方法更合适。如果是处理固定范围的大量数据,并且对性能要求较高,使用数学公式的方法可能更好。

相关文章