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;就出错了。