C语言求前N项和,为什么返回值是0?代码如下

#include<stdio.h>

int addd(int a,int b);

int main(){
int i,j;
printf("输入项数:");
scanf("%d",&i);
printf("\n\n前%d项相加为:",i);
addd(i,j);
printf("%d",j);
}

int addd(int a,int b){
for(b=0;a>=1;a--){
b=b+a;
};
return b;
}

方法一:传值不成功的原因是在形参b上改变了数值,没有在实参j上改变数值。

例如输入100,返回值是100的和,但是你没有赋值给j


一项一项相加,都没有错:

最后结果如同你所说,返回值是0,但是查看b的值是5050,明明没有错误。





原因找到了,你没有把返回值赋值给j,现在正确了







方法二:直接改变实参变量j的值

温馨提示:答案为网友推荐,仅供参考
第1个回答  2022-09-16
C语言函数传入的是形参,无论在函数内部怎么改都不会影响外部的值
也就是调用addd(i,j); 并不会修改j的值
addd()这个函数在内部用形参b保存了累加值并返回,因此必须在外面保存这个返回值
j = addd(i, j);
其实可以看出这里的形参j也并不需要传入。
相似回答