C语言,这个哪里错了?

void sum(int n) {
    int a = 1;
    for (int i = 1; i <= n; i++)
    {
        a = a * i;
    }
    return a;
}

int main()
{
    int n;
    scanf("%d", &n);
    printf("%d",sum(n));
    return 0;
}

为什么VS总是报错呢?

void函数没有返回值吧,你这个void sum(int n) 已经定义为void函数了, 就不能有return a了。你改一下这个sum()函数类型吧,定义为int 试试。

#include <stdio.h>

int sum(int n) {
    int a = 1;
    for (int i = 1; i <= n; i++)
    {
        a = a * i;
    }
    return a;
}

int main()
{
    int n;
    scanf("%d", &n);
    printf("%d", sum(n));
    return 0;
}

如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

int装不下12以上的阶乘,类型改为long long还能大一些。
如果需要更大,就在本站搜大数乘法,用字符数组模拟大数进行乘法运算。

【以下回答由 GPT 生成】

问题的原因是在函数 sum 的定义中,函数被声明为返回 void 类型,但是却使用了 return 语句返回了一个整数类型的值。这样会导致编译器报错。

解决这个问题的方法是将 sum 函数的返回类型修改为 int,并在函数的最后使用 return 语句返回 a 的值。

修改后的代码如下所示:

#include <stdio.h>

int sum(int n) {
    int a = 1;
    for (int i = 1; i <= n; i++) {
        a = a * i;
    }
    return a;
}

int main() {
    int n;
    scanf("%d", &n);
    printf("%d", sum(n));
    return 0;
}

这样修改后,代码将可以正确编译和运行。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

void sum(int n) 函数是 void 型,它不需返回值,所以在函数体里 return a;就出错了。