关于#c语言#的问题:编写一个程序expl-1.cpp,对于给定的正整数n,求1+2+...+n,采用逐个累加和n(n+1)/2(高斯...

在C语言中,编写一个程序来计算给定正整数n的累加和可以使用两种方法:逐个累加和数学公式。下面我会分别展示这两种方法的实现。

方法一:逐个累加

逐个累加的方法比较直观,即从1累加到n,求和结果。

c
#include <stdio.h> int main() { int n, sum = 0; // 获取用户输入的正整数n printf("请输入一个正整数 n:"); scanf("%d", &n); // 使用逐个累加计算 1 + 2 + ... + n for (int i = 1; i <= n; ++i) { sum += i; } // 输出结果 printf("1 到 %d 的累加和为:%d\n", n, sum); return 0; }

方法二:高斯公式

高斯公式是数学上计算1到n的和的公式,可以直接用来计算,其公式为:sum=n×(n+1)2\text{sum} = \frac{n \times (n + 1)}{2}

c
#include <stdio.h> int main() { int n, sum; // 获取用户输入的正整数n printf("请输入一个正整数 n:"); scanf("%d", &n); // 使用高斯公式计算 1 + 2 + ... + n sum = n * (n + 1) / 2; // 输出结果 printf("1 到 %d 的累加和为:%d\n", n, sum); return 0; }

解释关键步骤:

  • 用户输入:使用scanf函数获取用户输入的正整数n。

  • 逐个累加方法:通过循环从1累加到n,每次累加当前的循环变量i。

  • 高斯公式方法:直接使用数学公式计算1到n的和,避免了逐个累加的迭代过程。

这两种方法都是有效的,但高斯公式方法更为高效,因为它的时间复杂度为O(1),而逐个累加方法的时间复杂度为O(n)。

通过这些代码示例,你可以选择适合你需求的方法来计算1到n的累加和。