原文: https://www.programiz.com/c-programming/examples/sum-natural-numbers

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

要理解此示例,您应该了解以下 C 编程主题:


正数 1、2、3… 被称为自然数。 不超过 10 的自然数之和为:

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

使用for循环的自然数之和

  1. #include <stdio.h>
  2. int main() {
  3. int n, i, sum = 0;
  4. printf("Enter a positive integer: ");
  5. scanf("%d", &n);
  6. for (i = 1; i <= n; ++i) {
  7. sum += i;
  8. }
  9. printf("Sum = %d", sum);
  10. return 0;
  11. }

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


使用While循环的自然数之和

  1. #include <stdio.h>
  2. int main() {
  3. int n, i, sum = 0;
  4. printf("Enter a positive integer: ");
  5. scanf("%d", &n);
  6. i = 1;
  7. while (i <= n) {
  8. sum += i;
  9. ++i;
  10. }
  11. printf("Sum = %d", sum);
  12. return 0;
  13. }

输出

  1. Enter a positive integer: 100
  2. Sum = 5050

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

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

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


读取输入,直到输入正整数

  1. #include <stdio.h>
  2. int main() {
  3. int n, i, sum = 0;
  4. do {
  5. printf("Enter a positive integer: ");
  6. scanf("%d", &n);
  7. } while (n <= 0);
  8. for (i = 1; i <= n; ++i) {
  9. sum += i;
  10. }
  11. printf("Sum = %d", sum);
  12. return 0;
  13. }

访问此页面以了解如何使用递归来查找自然数之和。