结果是10怎么算的呢 求解析

#include <stdio.h>

int sum(int k);

void main()

int s,i;
for (i=1;i<=10;i++) s=sum(i);
printf("s=%d\n",s);

int sum(int k)

int x=0;

x+=k;

return (x);

你打印每次的s就知道问题在哪了,你是想实现累加,但是每次调用sum(i)时,进行的操作都是

  1. int x=0 => x=0
  2. x+=i => x = x+i =>x=0+i
  3. return(x) => 此时x=i,就是返回i的值,没有实现累加效果,

原因,sum函数是值传递,改为引用传递



#include <stdio.h>

int sum(int k);

void main()
{

int s,i;
for (i=1;i<=10;i++) {
  s=sum(i);
  printf("s=%d\n",s);
}
}
int sum(int k)
{
int x=0;

x+=k;

return (x);
}

sum函数只是原封不动的返回,当i=10时,s当然也是10,不过我觉得可以多看书巩固一下C语言的用法,

sum()函数每次都返回 k 的值.
主函数虽然循环 10 次,s = sum(i) 是赋值语句,i 循环到 10 时,sum(10) = 10 , s = 10 ,然后输出s 。