c - 编写程序执行 sum = 1+ (1+2) + (1+2+3) + ... + (1+2...+n)

标签 c

我无法正确获取代码。 有人可以帮忙吗?

#include<stdio.h>
int main()
{
 int n, sum,i,j;

 printf("Please enter an integer, n = ");
 scanf("%d", &n);

 for(i=1;i<=n;i++)
     for(j=1;j<=i;j++)
         sum = sum + n;
 printf("sum = %d", sum);


 return 0;
}

最佳答案

  1. 您没有初始化sum。用 0 初始化它。
  2. 您不应该在每一步添加 n,而是添加 j

当然,这是为了修复您当前的代码。有其他人已经提到的更好的方法来解决这个问题。

编辑:

只是为了好玩,这里有一个公式可以让您解决 O(1) 中的问题:

您的总和等于 n*(n + 1)*(2*n + 1)/12 + n*(n + 1)/4

这是通过将其写成总和并利用第一个 n 连续方 block 的总和为 n(n + 1)(2n + 1)/6 并且前 n 个正整数的总和是 n(n + 1)/2。如果你能找到更好的公式形式,+1。

关于c - 编写程序执行 sum = 1+ (1+2) + (1+2+3) + ... + (1+2...+n),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3249611/

相关文章:

c - 在 C 中使用系统调用读取和搜索文件

C - 在不使用 int 的情况下移动数组的更快方法

c - C中struct、union和enum的语法

c - 强弱符号 -> double 转 char 数组

c - 如何在实模式下使用 C 字符数组

c - 使用反射输入计算 CRC64 的最有效方法

c - C 中标识符长度的限制

c - 枚举桌面上的所有窗口句柄

c - C程序中的段错误(核心转储)错误

一旦退出函数,复制字符指针就没有效果,预期是垃圾值,但会恢复以前的地址