首页 > 解决方案 > 复代数表达式的值保持为零

问题描述

我在 C 中有这段代码,由于某种原因,它没有正确处理数字,而是一直输出零。有人可以解释一下这里发生了什么吗?我知道 C#,但不知道 C。

#include <stdio.h>

int main(void) {
    // I want to express 1/6n*(n + 1)(2n + 1)

    int n = 1;
    while(n != 0){
        scanf("%d", &n);
        printf("%d", 1/6 * n * (n + 1) * (2 * n + 1));
    }

    return 0;
}

提前致谢!

我正在使用 Code::Blocks + GCC 编译器。

标签: cgcc

解决方案


解决方案是:

#include <stdio.h>

int main(void) {

    int n = 1;
    while(n != 0){
        scanf("%d", &n);
        printf("%d", n * (n + 1) * (2 * n + 1) / 6);
    }

    return 0;
}

推荐阅读