# C 程序：计算自然数之和

> 原文： [https://www.programiz.com/c-programming/examples/sum-natural-numbers](https://www.programiz.com/c-programming/examples/sum-natural-numbers)

#### 在此示例中，您将学习计算用户输入的自然数之和。

要理解此示例，您应该了解以下 [C 编程](/c-programming "C tutorial")主题：

*   [C `for`循环](/c-programming/c-for-loop)
*   [C `while`和`do...while`循环](/c-programming/c-do-while-loops)

* * *

正数 **1、2、3...** 被称为自然数。 不超过 10 的自然数之和为：

```c
sum = 1 + 2 + 3 + ... + 10

```

* * *

## 使用`for`循环的自然数之和

```c
#include <stdio.h>
int main() {
    int n, i, sum = 0;

    printf("Enter a positive integer: ");
    scanf("%d", &n);

    for (i = 1; i <= n; ++i) {
        sum += i;
    }

    printf("Sum = %d", sum);
    return 0;
} 
```

上述程序从用户处获取输入并将其存储在变量`n`中。 然后，使用`for`循环计算直到`n`的总和。

* * *

## 使用`While`循环的自然数之和

```c
#include <stdio.h>
int main() {
    int n, i, sum = 0;
    printf("Enter a positive integer: ");
    scanf("%d", &n);
    i = 1;

    while (i <= n) {
        sum += i;
        ++i;
    }

    printf("Sum = %d", sum);
    return 0;
} 
```

**输出**

```c
Enter a positive integer: 100
Sum = 5050 
```

在这两个程序中，循环都重复`n`次。 并且，在每次迭代中，将`i`的值添加到`sum`，并且`i`递增`1`。

尽管两个程序在技术上都是正确的，但在这种情况下最好使用`for`循环。 这是因为迭代次数是已知的。

如果用户输入负整数，则上述程序将无法正常运行。 这是对上述程序的一些修改，在该程序中，我们一直从用户那里获取输入，直到输入正整数为止。

* * *

## 读取输入，直到输入正整数

```c
#include <stdio.h>
int main() {
    int n, i, sum = 0;

    do {
        printf("Enter a positive integer: ");
        scanf("%d", &n);
    } while (n <= 0);

    for (i = 1; i <= n; ++i) {
        sum += i;
    }

    printf("Sum = %d", sum);
    return 0;
} 
```

访问此页面以了解[如何使用递归](https://www.programiz.com/c-programming/examples/natural-number-sum-recursion)来查找自然数之和。