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

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

在C语言编程中,计算 1 到 100 的奇数和是一个常见的基础练习。这个任务不仅能帮助我们巩固循环和条件判断的概念,还能加深对数学逻辑的理解。
 

要解决这个问题,我们需要用到以下几个C语言的核心概念:变量声明、for 循环、if 条件判断以及基本的算术运算。我们将创建一个程序,遍历 1 到 100 的所有整数,判断每个数是否为奇数,如果是奇数就将其加到总和中。
 

下面是实现这个功能的C语言代码:

#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;
}

让我们详细解析这段代码:

  1. 我们首先包含了 stdio.h 头文件,这是因为我们需要使用 printf 函数来输出结果。
  2. 在 main 函数中,我们声明了一个整型变量 sum 并初始化为 0。这个变量将用来存储所有奇数的和。
  3. 接下来,我们使用了一个 for 循环来遍历 1 到 100 的所有整数。循环变量 i 从 1 开始,每次循环结束后 i 的值加 1,直到 i 的值超过 100 时循环结束。
  4. 在循环体内,我们使用 if 语句来判断当前数字是否为奇数。判断的方法是使用模运算符 %,如果一个数除以 2 的余数不等于 0,那么这个数就是奇数。
  5. 如果当前数字是奇数,我们就将它加到 sum 变量中。这里使用了复合赋值运算符 +=,它等同于 sum = sum + i。
  6. 循环结束后,我们使用 printf 函数输出最终的结果。
     

当我们运行这段代码,会得到如下输出:

1到100的奇数和为:2500

这个程序的时间复杂度是 O(n),其中 n 是我们要计算的数字范围(在这个例子中是 100)。这意味着程序的执行时间会随着计算范围的增加而线性增加。
 

值得注意的是,我们还可以通过数学推导来优化这个程序。1 到 100 的奇数实际上就是 1, 3, 5, ..., 99,这是一个等差数列,我们可以直接使用等差数列求和公式来计算结果,这样可以将时间复杂度降低到 O(1)。优化后的代码如下:

#include <stdio.h>

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

这个优化版本使用了等差数列求和公式。在这个公式中,n 是最后一个奇数的序号(100 以内有 50 个奇数),(n + 1) / 2 是最后一个奇数的值。这个方法不仅更快,而且可以轻松地扩展到更大的范围而不会显著增加执行时间。
 

通过学习这个例子,我们不仅掌握了如何使用循环和条件语句来解决问题,还了解了如何通过数学思维来优化我们的代码。这种优化思路在处理大规模数据时特别有用,能够显著提高程序的效率。

相关文章