c - 如何创建一个函数并获得先前数字的累加和?

标签 c

我想做的是获取之前从1开始的整数的累加和,例如: 如果我的输入是 4,那么该函数应该以这种方式工作; 1 + (1+2) + (1+2+3) + (1+2+3+4) = 20。 输出需要为 20。另外,我必须通过函数来​​完成此操作,而不是在 main() 中;函数,同时使用 int n 作为唯一变量。

我尝试的是制作一个从1到整数N相加的函数,并使用“for”使N从1开始,这样它就可以将所有数字完全相加,直到达到N。

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

    int n, input, sum;
    sum = 0;
    scanf("%d", &n);
    for (n = 0; n <= input; n++) {
        sum += n;
    }
    printf("%d", sum);
    return 0;
}

int sum(int n) {
    int i, n, sum = 0;
    scanf("%d", &n);
    for (i = 1; i <= n; i += 1){
        sum += i;
    }   
return n;
}

当输入为4时我预期是20,但实际输出是10。

最佳答案

我本来是这样写的,备注是修改的地方

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

int n, input, sum;
// sum = 0;  // no need for this
scanf("%d", &n);
/* the next for has no use
for (n = 0; n <= input; n++) {
    sum += n;
} */
// I would be adding some input sanitazing if possible here
printf("%d", sum(n));
   return 0;
}

int sum(int n) {
  int i, /*n, */ rsum = 0; // n is already a parameter, rsum for running sum

  // scanf("%d", &n);   // nope nope, scanf and printf should be avoided in functions
  for (i = 1; i <= n; i++){    // changed i +=1 with i++ , easier to read
     for (j=1;j<=i;j++) // need this other loop inside  
          rsum += j;
   }   
 return rsum;
}

关于c - 如何创建一个函数并获得先前数字的累加和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56235869/

相关文章:

c - 为什么 FILE 和 FILE* 一样全部大写?

c++ - inet_aton() 对无效 IP 地址返回成功?

c - 如何用 C 语言完成这个作业?

c - 在C中对文本文件中的数据进行排序

c - 如何知道两个 C 程序共享哪些输入文件?

在 C 中调用结构体

c - 手动运行gcc的步骤,编译,汇编,链接

c - 如何解析 C 中的整数命令行参数?

c - 打印一个字符数组(C)只有第一个字母

c - 使用 C 子字符串程序提取电子邮件 header 会给出错误的输出。为什么?