z没有赋初值int z;改为int z=0;就可以了
这个程序还有个问题:
int sum(int x,int y)
{
int z;
for(x=0;x<=y;x++)
{
z+=x;
}
return z;
}
既然不管实参是何值,x总是从0开始,那函数sum就只需y一个形参就可以了,即将程序改为:
#include<stdio.h>
long sum(int y)
{
long z=0;
int x;
for(x=0;x<=y;x++)
{
z+=x;
}
return z;
}
main()
{
int b;
long c;
b=20;
c=sum(b);
printf("%ld",c);
}
如果你是要求两个数a,b之间整数和的话,那就用下面的程序:
#include<stdio.h>
long sum(int x,int y)
{
long z=0;
int m,n;
if(x==y) return x+y;
m=x>y?x:y; //判断x与y的大小,将大者赋值给m
n=x<y?x:y; //判断x与y的大小,将小者赋值给n
//这样就不用在输入的时候去判断实参a和b哪个大哪个小了,输出的始终是a和b之间的整数和
for(;n<=m;n++)
{
z+=n;
}
return z;
}
main()
{
int a,b;
long c;
a=0,b=20;
c=sum(a,b);
printf("%ld",c);
}